2011-03-16 3 views
1

Environnement: Windows XP SP3, Visual C++ 2010 Express, DLL modèleC++ arguments de ligne de commande passant à dll

Je suis en train de passer des arguments de ligne de commande pour ma fonction dll

Exemple: « c: \ développement > rundll32, getpage.dll, GetPage http://www.google.ca "

Quand je passe la chaîne suivante "http://www.google.ca" Je reçois des nombres aléatoires (en supposant l'emplacement d'adresse?)

#include "stdafx.h" 

#include <string.h> 

#include <string> 

#include <stdlib.h> 

#include <stdio.h> 

#include <urlmon.h> 

#include <tchar.h> 

#include <fstream> 

using namespace std; 

extern "C" __declspec(dllexport) LPCWSTR __cdecl GetPage(LPCWSTR URL); 

BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved){ 
return TRUE; 
} 

LPCWSTR GetPage(LPCWSTR URL){ 

LPCWSTR status; 

HRESULT getpage_status = URLDownloadToFile (NULL,URL, _TEXT("status.log"), 0, NULL); 

/*** Do stuff is working if I pass a static string eg URL = "http://www.google.ca"; I need command line args sent to the function instead***/ 

return status; 

Répondre

4

Vous ne pouvez pas utiliser rundll32 pour exécuter toutes les fonctions DLL, vous ne pouvez l'utiliser pour exécuter des fonctions qui ont la signature suivante:

void CALLBACK 
    EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow); 

Voir MSDN pour plus d'informations. Vous pouvez soit modifier GetPage pour utiliser cette signature de fonction, soit créer une nouvelle fonction avec cette signature à utiliser comme point d'entrée et appeler GetPage.

+0

Avoir un exemple de travail sur la façon d'implémenter cela le site MSDN n'a pas d'exemples de travail. Merci d'avance! –

Questions connexes