guillaumenegre
Messages postés4Date d'inscriptionvendredi 26 mars 2004StatutMembreDernière intervention24 juillet 2006
-
26 mars 2004 à 17:07
skezzo
Messages postés2Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention11 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.
cs_NeoUmbrella
Messages postés104Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention11 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és21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 9 juin 2005 à 01:19
J'avais pas fait gaffe à ta déclaration, manquait STDCALL, il en est ainsi de quasi toute l'API.
cs_NeoUmbrella
Messages postés104Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention11 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és21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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és104Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention11 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;
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és104Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention11 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és21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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és104Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention11 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és4Date d'inscriptionvendredi 26 mars 2004StatutMembreDernière intervention24 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és21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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és6Date d'inscriptionmardi 17 décembre 2002StatutMembreDernière intervention28 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és21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 26 mars 2004 à 17:18
guillaumenegre
Messages postés4Date d'inscriptionvendredi 26 mars 2004StatutMembreDernière intervention24 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.
17 nov. 2010 à 12:17
"C:\\Program Files (x86)\\Internet Explorer\\IEXPLORE.EXE"
9 juin 2005 à 01:24
Un grand merci a toi pour avoir résolue mon pb a une heure si tardive ! Bonne soirée.
9 juin 2005 à 01:19
J'avais pas fait gaffe à ta déclaration, manquait STDCALL, il en est ainsi de quasi toute l'API.
9 juin 2005 à 01:10
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 :'(
9 juin 2005 à 00:57
Essaie avec des droits moins élevés.
9 juin 2005 à 00:32
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.
9 juin 2005 à 00:06
8 juin 2005 à 23:56
8 juin 2005 à 23:15
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
29 mars 2004 à 09:04
28 mars 2004 à 10:39
"ame" = 0x656D61 avec zero final
ce qui fait un strcmp en 2 cycles.
BruNews, Admin CS, MVP Visual C++
28 mars 2004 à 03:58
0x72464549 et 0x656D61
qui figurent dans:
if(*((DWORD*) buffer) != 0x72464549) goto defRet;
if(*((DWORD*) (buffer+4)) != 0x656D61) goto defRet;
???
26 mars 2004 à 17:18
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;
}
26 mars 2004 à 17:07
Ton programme m'a beaucoup aidé, merci.