jai un programme qui charge une dll de facon dynamique (dll A),
puis effectue un appel a une fonction de A
A->fonction();
dans A->fonction() jutilise le code suivant:
{
tex=GfxAllocBlankTexture("win1",128,128,3,data); // dll chargé par .lib
(graphic.dll)
hHook = SetWindowsHookEx( WH_CALLWNDPROC, (HOOKPROC)HookProc, hdl, 0 );
}
mon probleme est le suivant, si jenleve le SetWindowsHookEx(), ca marche
bien, mais si je laisse le code tel quel, jai un message de win comme quoi
le programme x (qui est hooké) ne trouve pas la dll graphic.dll dans les
chemins suivant : ........(dont le chemin ou se trouve la dll A)., ce que je
comprend pas, c'est que j'utilise l'appel de cette fonction uniquement par
le programme de base.
j'espere avoir été clair, il y a un truc qui m'echappe dans le
fonctionnement.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
syn-ack
jai essayé de le résoudre avec ca, ca na rien changé
GetEnvironmentVariable("PATH",path,2048); if (path[strlen(path)-1] != ';') strcat(path,";"); strcat(path,SysGetSystemPath(hInstance)); // chemin ou se trouve ma graphic.dll SetEnvironmentVariable("PATH",path);
"syn-ack" a écrit dans le message news: c9nbub$146$
bonjour,
jai un programme qui charge une dll de facon dynamique (dll A), puis effectue un appel a une fonction de A
A->fonction();
dans A->fonction() jutilise le code suivant: { tex=GfxAllocBlankTexture("win1",128,128,3,data); // dll chargé par .lib (graphic.dll) hHook = SetWindowsHookEx( WH_CALLWNDPROC, (HOOKPROC)HookProc, hdl, 0 ); }
mon probleme est le suivant, si jenleve le SetWindowsHookEx(), ca marche bien, mais si je laisse le code tel quel, jai un message de win comme quoi le programme x (qui est hooké) ne trouve pas la dll graphic.dll dans les chemins suivant : ........(dont le chemin ou se trouve la dll A)., ce que
je
comprend pas, c'est que j'utilise l'appel de cette fonction uniquement par le programme de base.
j'espere avoir été clair, il y a un truc qui m'echappe dans le fonctionnement.
merci pour votre aide
jai essayé de le résoudre avec ca, ca na rien changé
GetEnvironmentVariable("PATH",path,2048);
if (path[strlen(path)-1] != ';') strcat(path,";");
strcat(path,SysGetSystemPath(hInstance)); // chemin ou se trouve ma
graphic.dll
SetEnvironmentVariable("PATH",path);
"syn-ack" <syn-ack@wanadoo.fr> a écrit dans le message news:
c9nbub$146$1@news-reader5.wanadoo.fr...
bonjour,
jai un programme qui charge une dll de facon dynamique (dll A),
puis effectue un appel a une fonction de A
A->fonction();
dans A->fonction() jutilise le code suivant:
{
tex=GfxAllocBlankTexture("win1",128,128,3,data); // dll chargé par .lib
(graphic.dll)
hHook = SetWindowsHookEx( WH_CALLWNDPROC, (HOOKPROC)HookProc, hdl, 0 );
}
mon probleme est le suivant, si jenleve le SetWindowsHookEx(), ca marche
bien, mais si je laisse le code tel quel, jai un message de win comme quoi
le programme x (qui est hooké) ne trouve pas la dll graphic.dll dans les
chemins suivant : ........(dont le chemin ou se trouve la dll A)., ce que
je
comprend pas, c'est que j'utilise l'appel de cette fonction uniquement par
le programme de base.
j'espere avoir été clair, il y a un truc qui m'echappe dans le
fonctionnement.
jai essayé de le résoudre avec ca, ca na rien changé
GetEnvironmentVariable("PATH",path,2048); if (path[strlen(path)-1] != ';') strcat(path,";"); strcat(path,SysGetSystemPath(hInstance)); // chemin ou se trouve ma graphic.dll SetEnvironmentVariable("PATH",path);
"syn-ack" a écrit dans le message news: c9nbub$146$
bonjour,
jai un programme qui charge une dll de facon dynamique (dll A), puis effectue un appel a une fonction de A
A->fonction();
dans A->fonction() jutilise le code suivant: { tex=GfxAllocBlankTexture("win1",128,128,3,data); // dll chargé par .lib (graphic.dll) hHook = SetWindowsHookEx( WH_CALLWNDPROC, (HOOKPROC)HookProc, hdl, 0 ); }
mon probleme est le suivant, si jenleve le SetWindowsHookEx(), ca marche bien, mais si je laisse le code tel quel, jai un message de win comme quoi le programme x (qui est hooké) ne trouve pas la dll graphic.dll dans les chemins suivant : ........(dont le chemin ou se trouve la dll A)., ce que
je
comprend pas, c'est que j'utilise l'appel de cette fonction uniquement par le programme de base.
j'espere avoir été clair, il y a un truc qui m'echappe dans le fonctionnement.
merci pour votre aide
Arnaud Debaene
syn-ack wrote:
bonjour,
jai un programme qui charge une dll de facon dynamique (dll A), puis effectue un appel a une fonction de A
A->fonction();
Donc A n'est pas une DLL mais un objet....
dans A->fonction() jutilise le code suivant: { tex=GfxAllocBlankTexture("win1",128,128,3,data); // dll chargé par .lib (graphic.dll)
Le code de GfxAllocBlankTexture est dans graphic.dll, c'est bien çà?
Que vaut HookProc (la fonction correspondante est où)? Que vaut hdl?
mon probleme est le suivant, si jenleve le SetWindowsHookEx(), ca marche bien, mais si je laisse le code tel quel, jai un message de win comme quoi le programme x (qui est hooké) ne trouve pas la dll graphic.dll dans les chemins suivant : ........(dont le chemin ou se trouve la dll A)., ce que je comprend pas, c'est que j'utilise l'appel de cette fonction uniquement par le programme de base.
Utilises process explorer (www.sysinternals.com) pour vérifier quels sont les modules chargés par ton appli. Certains debogeurs (VC, etc...) ont une fenêtre "modules" qui fait la même chose.
Arnaud
syn-ack wrote:
bonjour,
jai un programme qui charge une dll de facon dynamique (dll A),
puis effectue un appel a une fonction de A
A->fonction();
Donc A n'est pas une DLL mais un objet....
dans A->fonction() jutilise le code suivant:
{
tex=GfxAllocBlankTexture("win1",128,128,3,data); // dll chargé par
.lib (graphic.dll)
Le code de GfxAllocBlankTexture est dans graphic.dll, c'est bien çà?
Que vaut HookProc (la fonction correspondante est où)? Que vaut hdl?
mon probleme est le suivant, si jenleve le SetWindowsHookEx(), ca
marche bien, mais si je laisse le code tel quel, jai un message de
win comme quoi le programme x (qui est hooké) ne trouve pas la dll
graphic.dll dans les chemins suivant : ........(dont le chemin ou se
trouve la dll A)., ce que je comprend pas, c'est que j'utilise
l'appel de cette fonction uniquement par le programme de base.
Utilises process explorer (www.sysinternals.com) pour vérifier quels sont
les modules chargés par ton appli. Certains debogeurs (VC, etc...) ont une
fenêtre "modules" qui fait la même chose.
Que vaut HookProc (la fonction correspondante est où)? Que vaut hdl?
mon probleme est le suivant, si jenleve le SetWindowsHookEx(), ca marche bien, mais si je laisse le code tel quel, jai un message de win comme quoi le programme x (qui est hooké) ne trouve pas la dll graphic.dll dans les chemins suivant : ........(dont le chemin ou se trouve la dll A)., ce que je comprend pas, c'est que j'utilise l'appel de cette fonction uniquement par le programme de base.
Utilises process explorer (www.sysinternals.com) pour vérifier quels sont les modules chargés par ton appli. Certains debogeurs (VC, etc...) ont une fenêtre "modules" qui fait la même chose.
Arnaud
syn-ack
"Arnaud Debaene" a écrit dans le message news: 40bf6de5$0$22545$
Le code de GfxAllocBlankTexture est dans graphic.dll, c'est bien çà?
oui
Que vaut HookProc (la fonction correspondante est où)? Que vaut hdl?
-static LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam); et elle se trouve dans la meme dll -hdl est le HINSTANCE de la dll que je sauve a son chargement.
(je crois avoir resolu un peu a la barbare en copiant la dll graphic.dll dans systeme32)
probleme n3)
jai un probleme avec opengl, et je pense que c lié au faite que les valeurs de opengl en interne ne se partage pas entre les diff process.
jexplique
prog A ouvre la dll B, et appelle B->init() qui creer une texture opengl stocke en section shared de la dll B. dll B fait son hook , et pendant le hook, il capture la fenetre qui est en cours de reduction, recupere son bitmap, et met a jour la texture opengl. ensuite le prog A appelle B->Draw() qui va afficher un carré avec la texture qui est censé etre la fenetre en reduction. le probleme est que la texture est bien creer, mais la texture est tjrs blanche, comme si la memoire agp n'etait pas partagée.
alors jai 2 idees idee A) lors du hook, j'envoi un message a la dll B pour lui dire de capturer tel fenetre et de creer la texture. mes pb sont : 1) est que je ne sais pas si une dll peut s'envoyer des messages sans avoir de fenetre a elle meme. faut til creer une fenetre invisible? 2) le temps de lenvoi du message, la fenetre va se reduire, et du coup je ne pourrais pas avoir son bitmap de facon correct.
idee B) lors du hook je stock le hwnd de la fenetre en cours dans la section shared, et je le traite au moment de laffiche dans draw() qaund le prog A l'apelle.
ya til des idees plus propres?
"Arnaud Debaene" <adebaene@club-internet.fr> a écrit dans le message news:
40bf6de5$0$22545$626a14ce@news.free.fr...
Le code de GfxAllocBlankTexture est dans graphic.dll, c'est bien çà?
oui
Que vaut HookProc (la fonction correspondante est où)? Que vaut hdl?
-static LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam);
et elle se trouve dans la meme dll
-hdl est le HINSTANCE de la dll que je sauve a son chargement.
(je crois avoir resolu un peu a la barbare en copiant la dll graphic.dll
dans systeme32)
probleme n3)
jai un probleme avec opengl, et je pense que c lié au faite que les valeurs
de opengl en interne ne se partage pas entre les diff process.
jexplique
prog A ouvre la dll B, et appelle B->init() qui creer une texture opengl
stocke en section shared de la dll B.
dll B fait son hook , et pendant le hook, il capture la fenetre qui est en
cours de reduction, recupere son bitmap, et met a jour la texture opengl.
ensuite le prog A appelle B->Draw() qui va afficher un carré avec la texture
qui est censé etre la fenetre en reduction.
le probleme est que la texture est bien creer, mais la texture est tjrs
blanche, comme si la memoire agp n'etait pas partagée.
alors jai 2 idees
idee A) lors du hook, j'envoi un message a la dll B pour lui dire de
capturer tel fenetre et de creer la texture. mes pb sont :
1) est que je ne sais pas si une dll peut s'envoyer des messages sans avoir
de fenetre a elle meme. faut til creer une fenetre invisible?
2) le temps de lenvoi du message, la fenetre va se reduire, et du coup je ne
pourrais pas avoir son bitmap de facon correct.
idee B) lors du hook je stock le hwnd de la fenetre en cours dans la section
shared, et je le traite au moment de laffiche dans draw() qaund le prog A
l'apelle.
"Arnaud Debaene" a écrit dans le message news: 40bf6de5$0$22545$
Le code de GfxAllocBlankTexture est dans graphic.dll, c'est bien çà?
oui
Que vaut HookProc (la fonction correspondante est où)? Que vaut hdl?
-static LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam); et elle se trouve dans la meme dll -hdl est le HINSTANCE de la dll que je sauve a son chargement.
(je crois avoir resolu un peu a la barbare en copiant la dll graphic.dll dans systeme32)
probleme n3)
jai un probleme avec opengl, et je pense que c lié au faite que les valeurs de opengl en interne ne se partage pas entre les diff process.
jexplique
prog A ouvre la dll B, et appelle B->init() qui creer une texture opengl stocke en section shared de la dll B. dll B fait son hook , et pendant le hook, il capture la fenetre qui est en cours de reduction, recupere son bitmap, et met a jour la texture opengl. ensuite le prog A appelle B->Draw() qui va afficher un carré avec la texture qui est censé etre la fenetre en reduction. le probleme est que la texture est bien creer, mais la texture est tjrs blanche, comme si la memoire agp n'etait pas partagée.
alors jai 2 idees idee A) lors du hook, j'envoi un message a la dll B pour lui dire de capturer tel fenetre et de creer la texture. mes pb sont : 1) est que je ne sais pas si une dll peut s'envoyer des messages sans avoir de fenetre a elle meme. faut til creer une fenetre invisible? 2) le temps de lenvoi du message, la fenetre va se reduire, et du coup je ne pourrais pas avoir son bitmap de facon correct.
idee B) lors du hook je stock le hwnd de la fenetre en cours dans la section shared, et je le traite au moment de laffiche dans draw() qaund le prog A l'apelle.