Ecriture d'une dll atl

ultraLek Messages postés 10 Date d'inscription mardi 28 novembre 2000 Statut Membre Dernière intervention 13 octobre 2006 - 4 nov. 2005 à 21:12
ultraLek Messages postés 10 Date d'inscription mardi 28 novembre 2000 Statut Membre Dernière intervention 13 octobre 2006 - 9 nov. 2005 à 22:26
Bonsoir à tous, voila mon problème j'ai actuellement une source c++ 7
qui fonctionne sous forme d'un exécutable appelable en ligne de
commande, son but est de se connecter à internet et de récupérer une
page puis de l'enregistrer sur disque.

J'aimerais réécrire cet exe sous la forme d'uns dll com que je
pourrais instancier depuis asp, j'ai donc été amené à recréer une dll
atl.

Le problème c'est que la dll en question est instanciable mais ne me
fournis pas de résultat. Voici la fonction main de l'exécutable :



static const GUID myGUID = { 0x445c10c2, 0xa6d4, 0x40a9, { 0x9c, 0x3f, 0x4e, 0x90, 0x42, 0x1d, 0x7e, 0x83 } };

static CComModule _Modu;



int main (int argc, char *argv[])

{

if (argc != 3)

{

printf("Usage: %s http://www.example.org/ localfile.txt\n", argv[0]);

return EXIT_FAILURE;

}



HRESULT hr = _Modu.Init(NULL, ::GetModuleHandle(NULL), &myGUID);



if (FAILED(hr))

return EXIT_FAILURE;



if (!AtlAxWinInit())

return EXIT_FAILURE;



CMain MainWnd;



MainWnd.m_URI = argv[1];

MainWnd.m_fileName = argv[2];

RECT rcMain = { 0, 0, 800, 600 };

MainWnd.Create(NULL, rcMain, _T("Test"), WS_POPUP);



MSG msg;

while (GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}



_Modu.Term();



return EXIT_SUCCESS;

}



Lors de l'écriture de la dll l'expression : static CComModule _Modu;

provoquais une erreur, j'ai donc réécris une méthode de mon objet ainsi :





STDMETHODIMP CMaClasse::GetURL(BSTR m_URL, BSTR m_filename)

{

if (!AtlAxWinInit())

return EXIT_FAILURE;



CMain MainWnd;



MainWnd.m_URI = (LPCSTR) "http://www.google.fr";

MainWnd.m_fileName = (LPCSTR) "c:\test.txt";



RECT rcMain = { 0, 0, 800, 600 };

MainWnd.Create(NULL, rcMain, _T("Test"), WS_POPUP);



MSG msg;

while (GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}



return S_OK;

}



Cela fait plusieurs jours que je tourne en rond là dessus : le problème provient surement des lignes que j'ai effacées.

Comment faire pour avoir l'équivalent de la déclaration de _Modu et des appels à _Modu.Init() et _Modu;Term() dans ma dll?

Quelqu'un pourrait il m'aider ?

1 réponse

ultraLek Messages postés 10 Date d'inscription mardi 28 novembre 2000 Statut Membre Dernière intervention 13 octobre 2006
9 nov. 2005 à 22:26
alors personne ne saurait me répondre?
0
Rejoignez-nous