ShellExecute()

Résolu
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 - 16 juin 2005 à 14:09
ZMJUVENTINO Messages postés 41 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 11 mai 2009 - 5 mars 2009 à 15:35
Bonjour à tous,

J'ai un problème où je n'y comprends rien du tout :

J'ai fait un hook global, pour savoir qd un certain type de fenètre s'ouvre.

Jusque là no problem.

Je rajoute
"MessageBox(hwnd3, className, className, MB_OK);"
pour me prouver que qd une fenètre s'ouvre, le code est bien exécuté, et que c'est aussi le type de fenètre.

Encore ici, no problem.

Mais dès que je rajoute cette ligne en dessous :
ShellExecute(NULL, "open", "Mon Programme.exe", 0, NULL, SW_SHOWNORMAL);
Il continue, ya pas de bug, mais mon autre programme n'est jamais exécuté !!!!

J'ai bien vérifé que le programme était dans le meme dossier, et je mets ShellExecute() dans une autre fonction ça marche...!

Problème qui viens du hook ?
De ShellExecute() ?
De la DLL ?
De quoi?
How is it possible ?!

Merci à tous ceux qui pourront me répondre...

16 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2005 à 15:34
On n'a qu'a mettre le chemin complet:



char t[MAX_PATH];

char* p = t + GetModuleFileName(hdll, t, MAX_PATH);

while(*p != '\\') p--;

p++;

strcpy(p, "Mon programme.exe");

ShellExecute(0, 0, t, 0, 0, SW_SHOW);
3
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 1
16 juin 2005 à 16:16
Juste une petite question sur la meme fonction:

Quand il a trouvé la bonne fenètre, j'utilise, les fonctions fopen, fread, fwrite et fclose.

Dès qu'il arrive à une ligne utilisant une de ces fonctions, ça plante.

En rapport avec le programme qui lance la fenètre et qui ne veut pas etre interrompu en plein milieu de son exécution ?

Où autre chose ?
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2005 à 14:26
Je le fais sans problème dans mon hook (WH_CBT). Montre au moins ta
procédure de hook pour voir. Tu peux aussi regarder la valeur retournée
par ShellExecute
0
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 1
16 juin 2005 à 14:46
Voilà à quoi ça ressemble :

LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{

char className[32];
GetClassName((HWND) wParam, className, 32);
HWND hwnd3;

if(strcmp(className, "IMWindowClass")==0 && nCode==3)
{ HWND hwnd=(HWND) wParam;
ShellExecute(NULL, "open", "Mon Programme.exe", 0, NULL, SW_SHOWNORMAL);
MessageBox(hwnd3, className, className, MB_OK);


// Création d'une nouvelle fenêtre
}
return CallNextHookEx(hhk, nCode, wParam, lParam);
}

..........
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 1
16 juin 2005 à 14:47
Oui ya des lignes qui servent à rien c'est que j'ai oublié de les enlever avant de poster..
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2005 à 14:50
Est-ce que mon programme est dans le même chemin que la DLL au moins?
remplace le par notepad.exe pour voir. Parce que chez moi ca marche
0
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 1
16 juin 2005 à 14:55
A mais mince !

notepad.exe marche...

Mais alors pourquoi ?

Car je suis sur c'est le meme nom de programme, et il marche très très bien !
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2005 à 14:58
Oui mais la dll ne doit pas trouver ton programme. Il doit être dans le même dossier ou dans un dossier qui est dans $PATH
0
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 1
16 juin 2005 à 15:17
Non la dll est dans le meme dossier que l'exécutable qui sont tous les 2 dans le meme dossier que Mon Programme.exe...
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2005 à 15:24
T'a raison, moi non plus ca marche pas. ShellExecute me renvoie <NAME>ERROR_FILE_NOT_FOUND</NAME><link href="../../../css/ie4.css" type="text/css" rel="stylesheet"><!-- @ --><link href="../../../css/inetsdk.css" type="text/css" rel="stylesheet"><!-- @ --><style type="text/css">
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}

A:link { color:#0000ff; text-decoration:underline;}
A:visited { color:#0000ff; text-decoration:underline;}
A:hover { color:#3366ff; text-decoration:underline;}
MSHelp\:link {
color:#0000ff;
text-decoration:underline;
cursor:hand;
hoverColor:#3366ff;
filterString: ;}
</style><link href="ms-help://Hx/HxRuntime/HxLink.css" type="text/css" rel="stylesheet"><XML id="_topicdata" pagetype="function" proj="platsdk" name="ShellExecute" pubpath="/platform/shell/reference/functions/shellexecute.htm"><!-- topic data --><root></root></XML><xml xmlns:mshelp="http://msdn.microsoft.com/mshelp"></xml>

0
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 1
16 juin 2005 à 15:27
J'ai fait ce qu'il ne fallait pas faire :

LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{

char className[32];
GetClassName((HWND) wParam, className, 32);
HWND hwnd3;

ShellExecute(NULL, "open", "Mon Programme.exe", 0, NULL, SW_SHOWNORMAL); //= => Je l'ai mis ici

if (strcmp(className, "IMWindowClass") ==0 && nCode==3)
{ HWND hwnd=(HWND) wParam;
MessageBox(hwnd3, className, className, MB_OK);
// Création d'une nouvelle fenêtre
}
return CallNextHookEx(hhk, nCode, wParam, lParam);
}

....

Ca m'a prouvé que "Mon Programme.exe" peut bien etre lancé !
(Boucle illimitée de Mon Programme.exe....aie ça fait mal à l'ordi ça ...)

Qu'est-ce qui se passe alors ?
0
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 1
16 juin 2005 à 15:41
Ca marche !!!
Merci !
0
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 1
16 juin 2005 à 16:46
Non c'est bon ya plus de pb.

Encore merci.
0
Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 5 septembre 2006
16 juin 2005 à 21:55
Tu hook MSN ? je peux voir ton code, chui intéressé :)
0
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 1
17 juin 2005 à 13:59
lol ok je vais voir comment te montrer ce que j'ai fait mais c'est du truc maison tu comprendras pas gd chose....
0
ZMJUVENTINO Messages postés 41 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 11 mai 2009
5 mars 2009 à 15:35
Je chercheais depuis longtemps comment détécter l'ouverture des fenêtres sur le bureau, peut tu m'aider ?

foza juve
0
Rejoignez-nous