CREATEPROCESS SUR IE (WIN32)

guillaumenegre Messages postés 4 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 24 juillet 2006 - 26 mars 2004 à 17:07
skezzo Messages postés 2 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 11 juin 2009 - 17 nov. 2010 à 12:17
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/19814-createprocess-sur-ie-win32

skezzo Messages postés 2 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 11 juin 2009
17 nov. 2010 à 12:17
Une raison pour laquelle ca ne marche pas avec la version 32 bit?

"C:\\Program Files (x86)\\Internet Explorer\\IEXPLORE.EXE"
cs_NeoUmbrella Messages postés 104 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 11 septembre 2008
9 juin 2005 à 01:24
Effectivement c'etait ca, j'ai pris la mauvaise habitude de ne pas le mettre pour les fonctions de mes dll.
Un grand merci a toi pour avoir résolue mon pb a une heure si tardive ! Bonne soirée.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 juin 2005 à 01:19
typedef HANDLE (__stdcall *PfOpenT)(DWORD, BOOL, DWORD);

J'avais pas fait gaffe à ta déclaration, manquait STDCALL, il en est ainsi de quasi toute l'API.
cs_NeoUmbrella Messages postés 104 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 11 septembre 2008
9 juin 2005 à 01:10
J'ai essayé avec THREAD_SUSPEND_RESUME comme droit d'acces et pareille, une fenetre de débogage qui s'ouvre avec comme message :
The value of ESP was not properly saved across a function call. THis is usally a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
C'est génant car j'en ai besoin de cette fonction :'(
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 juin 2005 à 00:57
Tu es certain d'avoir besoin de THREAD_ALL_ACCESS ?
Essaie avec des droits moins élevés.
cs_NeoUmbrella Messages postés 104 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 11 septembre 2008
9 juin 2005 à 00:32
J'ai tenté de charge la fonction dynamiquement ainsis :
typedef HANDLE (*PfOpenT)(DWORD, BOOL, DWORD);
HANDLE hThread = NULL;
HMODULE hModDll = NULL;

if((hModDll LoadLibrary("kernel32.dll")) NULL) return;
PfOpenT OpenThread = (PfOpenT)GetProcAddress(hModDll, "OpenThread");

Et OpenThread ne vaut pas NULL, c'est donc qu'on a trouver quelque chose nan ? cependant lorsque j'essais de l'utiliser comme ceci :
hThread = OpenThread(THREAD_ALL_ACCESS, 0, ThreadId);

Ca me met une erreure et impossible de poursuivre.
cs_NeoUmbrella Messages postés 104 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 11 septembre 2008
9 juin 2005 à 00:06
Quand je fais une recherche de OpenThread dans les fichiers .h dns le dossier include, la seule fonction que je trouve c'est OpenThreadToken(). Il serait possible kje chope un .h ou elle est dedans ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 juin 2005 à 23:56
OpenThread() est bien dans Kernel32.dll, regarde si tu as Kernel32.lib au linker et surtout la déclaration d'OpenThread') dans les h fournis avec ton compilo.
cs_NeoUmbrella Messages postés 104 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 11 septembre 2008
8 juin 2005 à 23:15
Salut, ca n'a pas un grand rapport avec la source ( problème avec mon navigateur pour le forum ) mais j'aimerais utiliser la fonction OpenThread pour obtenir son handle.
Meme en incluant <windows.h> dans la source, OpenThread n'est pas déclaré.
On m'a dit que ce n'était pas une api pourtant une simple déclaration en Vb suffit pour l'utiliser.
J'ai bien tenté de récupérer la fonction dans kernel32.dll mais marche pas.
Quelqu'un peu m'aider ?
Merci
guillaumenegre Messages postés 4 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 24 juillet 2006
29 mars 2004 à 09:04
Pour informer BruNews, myIE2 est un internet explorer assez sympa, à télécharger sur internet et à essayer rapidement.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 mars 2004 à 10:39
"IEFr" en hexa = 0x72464549
"ame" = 0x656D61 avec zero final
ce qui fait un strcmp en 2 cycles.

BruNews, Admin CS, MVP Visual C++
cs_Nomis Messages postés 6 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 28 mars 2004
28 mars 2004 à 03:58
Merci BruNews pour ce bon code, mais peux-tu m'éclairer sur les valeurs suivantes:
0x72464549 et 0x656D61
qui figurent dans:
if(*((DWORD*) buffer) != 0x72464549) goto defRet;
if(*((DWORD*) (buffer+4)) != 0x656D61) goto defRet;
???
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 mars 2004 à 17:18
myIE2 , kesako ???

Exemple d'attente:

BOOL bok = CreateProcess(0, szCmdLine, 0, 0, 0,
CREATE_SUSPENDED, 0, 0, &si, &pi);
if(bok) {
ResumeThread(pi.hThread);
CloseHandle(pi.hThread);
// attente 1 minute maxi
dwExit = WaitForSingleObject(pi.hProcess, 60000);
CloseHandle(pi.hProcess);
if(dwExit WAIT_OBJECT_0) m_bExitChild 1;
}
guillaumenegre Messages postés 4 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 24 juillet 2006
26 mars 2004 à 17:07
Super ton code. Par contre je me demande comment on fait pour que le programme appelant reste en attente de la femeture du programme appelé.
Ton programme m'a beaucoup aidé, merci.