Accueil > Forum > > > > Envoyer variable à dll
Envoyer variable à dll
vendredi 29 octobre 2004 à 17:54:10 |
Envoyer variable à dll

goutbouyo
|
Salut, Est il possible d'envoyer une variable à une dll ?? Par exemple dans mon programme j'ai la variable char fenetre[256]. Cette variable contient la chaine "internet explorer". Comment faire pour que dans ma dll, ma fonction : FindWindow(fenetre,NULL) corresponde à : FindWindow("internet explorer",NULL);
|
|
vendredi 29 octobre 2004 à 18:13:51 |
Re : Envoyer variable à dll

Gendal67
|
Bonne question, et désolé, mais aucune idée...et toi, tu a une idée pour repondre à ma question (quasi juste ne dessous de le tienne, qui porte aussi sur les dll) ?
Allez, a++
Genda67, à votre service !
|
|
vendredi 29 octobre 2004 à 22:48:41 |
Re : Envoyer variable à dll

cosmobob
|
salut, soit la fonction de ta DLL est appelé depuis ton programme, dans ce cas, tu fais simplement dans le code de ton programme lafonctiondetaDLL("internet explorer"), et dans ta DLL, t'as une fonction qui ressemble a : void lafonctiondetaDLL(const char* val) { FindWindow(val, NULL); } normalement il est toujours possible de se ramener a un tel cas, car si une fonction de DLL est appelé, c'est que quelque part dans un .exe une fonction de la DLL a été appelée explicitement, et donc le .exe peut lui transmettre ce qu'il veut...
sinon (ce qui revient a dire que ton programme est mal organisé) ben tu peux toujours t'orienter du coté de CreateFileMapping, pour creer une zone mémoire partagé qui pourra etre accessible d'un peu partout.
enfin je pense que tu devrais détailler davantage ton probleme, sinon il est possible que tu te compliques la vie pour rien... rappelons qu'une DLL n'est juste que le code compilé de fonctions (soit par ce que ce code peut servir dans d'autres applications (par exemple) ou bien parce que tu as voulu rendre ton programme modulaire). Si la DLL est lié statiquement a ton programme, quand tu codes ton exe, tu peux appeler toutes les fonctions de la DLL comme si elles se trouvaient ds un des fichiers .cpp de ton programme principal... a++ ;)
|
|
samedi 30 octobre 2004 à 00:31:28 |
Re : Envoyer variable à dll

goutbouyo
|
Je fais comme ça : Ma dll #include <windows.h>
HINSTANCE thismod; HINSTANCE hInstance; HHOOK hhk; HWND hDlg; HWND Dlg; const char* val;
BOOL WINAPI DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID Reserved) { if(dwReason == DLL_PROCESS_ATTACH) thismod = hDll;
return 1; }
LRESULT CALLBACK kbdWinAmp(int nCode, WPARAM wParam, LPARAM lParam) { if(nCode >= 0) { //quand une fenetre est activé if(nCode == HCBT_ACTIVATE) { if (hDlg = FindWindow(val,NULL)) { if (Dlg=FindWindow(NULL,"Protection activée")) PostMessage(Dlg, WM_USER+1, 0, 0); } } } return CallNextHookEx(hhk, nCode, wParam, lParam); }
extern "C" __declspec(dllexport) int __stdcall Intercepte(const char* val) { if(!hhk) hhk = SetWindowsHookEx(WH_CBT, kbdWinAmp, thismod, 0); return (int) hhk; }
extern "C" __declspec(dllexport) void __stdcall FinIntercepte() { if(hhk) { UnhookWindowsHookEx(hhk); hhk = 0; } }
| Mon programme Intercepte("Outlook Express Browser Class");
| Header inclue dans mon programme mais pas dans la dll #ifndef __DLL_LIBS_H__ #define __DLL_LIBS_H__
// include servant à inclure le fichier lib de la dll #ifdef WIN32 #pragma comment(lib, "dll hook.lib")
extern "C" { int __stdcall Intercepte(const char* val); void __stdcall FinIntercepte(); } #endif
#endif __DLL_LIBS_H__
|
Ca marche toujours pas ...
|
|
samedi 30 octobre 2004 à 01:11:30 |
Re : Envoyer variable à dll

LordBob
|
ton programme tu dis faire: "Intercepte("Outlook Express Browser Class");" et voici la fonction de ta dll: extern "C" __declspec(dllexport) int __stdcall Intercepte(const char* val) { if(!hhk) hhk = SetWindowsHookEx(WH_CBT, kbdWinAmp, thismod, 0);
return (int) hhk; } |
alors ta fonction reçoit "val", mais c'est tout, la "valeur" de val n'est pas traité, on en fait rien... et dans toute ta dll, val n'est pas utilisé !!! normal qu'il ne se passe rien !!! vu que "val" est une variable globale à la fonction de ta procédure, une fois sorti de ta procédure, val n'existe plus meme, si une variable globale porte le meme nom... d'ailleur le fait qu'une variable locale et globale porte le même nom, c'est pas génial ca... essai de faire ca: #include <windows.h>
HINSTANCE thismod; HINSTANCE hInstance; HHOOK hhk; HWND hDlg; HWND Dlg; const char* g_val;
BOOL WINAPI DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID Reserved) { if(dwReason == DLL_PROCESS_ATTACH) thismod = hDll;
return 1; }
LRESULT CALLBACK kbdWinAmp(int nCode, WPARAM wParam, LPARAM lParam) {
if(nCode >= 0) { //quand une fenetre est activé if(nCode == HCBT_ACTIVATE) { if (hDlg = FindWindow(g_val,NULL))
{ if (Dlg=FindWindow(NULL,"Protection activée")) PostMessage(Dlg, WM_USER+1, 0, 0); } }
} return CallNextHookEx(hhk, nCode, wParam, lParam); }
extern "C" __declspec(dllexport) int __stdcall Intercepte(const char* val) { if(!hhk) { hhk = SetWindowsHookEx(WH_CBT, kbdWinAmp, thismod, 0); g_val = val; }
return (int) hhk; }
extern "C" __declspec(dllexport) void __stdcall FinIntercepte() { if(hhk) { UnhookWindowsHookEx(hhk); hhk = 0; } } |
Bob... "La chance accorde ses faveur aux esprits avertis..."
|
|
samedi 30 octobre 2004 à 01:36:32 |
Re : Envoyer variable à dll

goutbouyo
|
Ca marche toujours pas ... En fait cette partie : extern "C" __declspec(dllexport) int __stdcall Intercepte(const char* val) { if(!hhk) { hhk = SetWindowsHookEx(WH_CBT, kbdWinAmp, thismod, 0); g_val = val; }
|
est traitée dans mon programme est non dans la dll. Donc comment le g_val peut il est ensuite connu dans la dll ??? Faut mettre un header ?
|
|
samedi 30 octobre 2004 à 01:48:47 |
Re : Envoyer variable à dll

LordBob
|
je comprend pas pourquoi une partie de ta dll est traité dans ton prog... ce que tu dis qui est traité dans ton prog, fais en sorte que ca soit traité dans ta dll!!! mais garde le meme schéma que moi... que ce que tu avais fait avant, c'est transmettre une valeur à "val", mais cette valeur est perdu, puisque non traité !!! Bob...
"La chance accorde ses faveur aux esprits avertis..."
|
|
samedi 30 octobre 2004 à 01:49:16 |
Re : Envoyer variable à dll

cosmobob
|
salut; qd tu déclenches le hook, tu lances la fonction Intercepte si j'ai compris. cette fonction ainsi que le reste de la DLL est mappé (cad est injecté ds l'espace memoire) ds le processus hooké, mais comme tu l'as mise en extern, elle peut etre apelé depuis ton exe principal. le g_val doit etre une variable globale de la DLL, et elle est modifiée par le Intercept au moment du lancement du hook. c pour ca que je suis pas sur que g_val = val marche ds le intercepte, par contre si tu déclares g_val comme char g_val[100]; et que ds intercepte, tu copies ce que vaux val ds g_val, la ya plus de chances que ca marche (sinon g_val pointe vers une adresse qui a des chances de ne pas etre valide au sein du processus hooké)
a++ ;)
|
|
samedi 30 octobre 2004 à 11:41:02 |
Re : Envoyer variable à dll

goutbouyo
|
J'ai fait des tests pour voir les valeurs de val et g_val à différents endroits. LRESULT CALLBACK kbdWinAmp(int nCode, WPARAM wParam, LPARAM lParam)
{ if(debut==1) { FILE *fd; fd = fopen("save3.txt","a"); fprintf(fd,"%s\n%s",val,g_val); fclose(fd); debut=0; } if(nCode >= 0) {
|
Val => Outlook Express Browser Class g_val => Outlook Express Browser Class if(nCode >= 0) { //quand une fenetre est activé if(nCode == HCBT_ACTIVATE) { if(debut==1) { FILE *fd; fd = fopen("save3.txt","a"); fprintf(fd,"test\n%s\n%s",val,g_val); fclose(fd); debut=0; } if (hDlg = FindWindow(g_val,NULL)) { if (Dlg=FindWindow(NULL,"Protection activée")) { PostMessage(Dlg, WM_USER+1, 0, 0); } } } }
|
Val => rien(du blanc..) g_val=> rien Je comprends pas pourquoi d'un coup, val et g_val ne valent plus rien ...?
|
|
samedi 30 octobre 2004 à 12:05:31 |
Re : Envoyer variable à dll

goutbouyo
|
Excusez moi j'ai raconté n'importe quoi au message précédent ... En fait ici : //quand une fenetre est activé if(nCode == HCBT_ACTIVATE) { if(debut==2) { FILE *f; f = fopen("save4.txt","a"); fprintf(f,"2nd valeurs :\n%s\n%s",val,g_val); fclose(f); debut=0; } if (hDlg = FindWindow(g_val,NULL))
|
g_val vaut bien: Outlook Express Browser Class. Mais par contre ça me trouve toujours pas la fenêtre ... Aidez moi SVP, je suis presque au bout là ...
|
|
Cette discussion est classée dans : variable, internet, dll, fenetre, envoyer
Répondre à ce message
Sujets en rapport avec ce message
Fermeture d'une fenetre [ par mindark ]
Bonjour, j'aimerais que mon programme ferme une fenetre (un popup de Internet Explorer) automatiquement..J'ai essaye un faisant un FindWindow (NULL, "
shdocvw.dll et navigateur internet [ par Tesla93 ]
Bonjour a tous j'aimerai me faire un navigateur personaliser qui repren Le DLL shdocvw.dll ( le dll de internet explorer )comment faire une interface
creer un .exe qui ouvre une fenetre internet explorer [ par dany ]
bonjourj'aimerais avoir le source pour creer un fichier.exe a mettre sur un cd et qui ouvre un fichier .htmen c++ (avec dev-c++)merci d'avance
Problem de DLL [ par anaya ]
Bonjour tout le monde,-Je travaille sur deux programmes:Le premier ecrit en c++ qui renvoie surtout une variable nomée "text", Le 2eme c'est une inter
Convertir des strings [ par UnExPeCtEdSpy ]
Bonjour, Présentation du pb:Je ne suis plus trop familier du c++ mais j'ai du m'y remettre pour utiliser un bout de code en tant que DLL au service d'
J arrive pas a envoyer des messages à une autre fenetre [ par fana13 ]
Salut a vous, j ai découvert le site hier soir en cherchant des info pour mon bout d application que je suis en train de faire.Alors le but de celle-c
variables globales et DLL [ par cosmobob ]
je me pose plusieurs questions :quand on crée une DLL, comment déclarer une variable qui soit globale à toutes les instanciations de la DLL ? (cad si
fenetre internet dans fenetre c++ [ par chouanseb ]
Je voudrais afficher une page internet dans une partie précise de ma fenetre c++, à des coordonées précises de ma fenetre c++.
Mail communication internet [ par Mr.X ]
tous dabord bonjour a tousJe voudrais savoir s'il étais possible (je l'espere et le pense) d'envoyer un mail depuis un programme (si un commande toute
Toolbar internet explorer - DLL [ par davwart ]
Hello all,voila, je ne connais pas du tout l'api Windows.Je programme sous Linux mais je dois faire une toolbar pour internet explorer au format *.dll
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|