vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
7 déc. 2004 à 12:37
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
10 déc. 2004 à 18:20
Bonjour
J'éxécute une application 16-bits avec CreateProcess mais je n'arrive pas à récupérer ce qu'il y a dans stdout. Le problème c'est que le même code fontionne quand il s'agit d'une application 32-bits
Voila un bout de code qui illustre cela:
#include <windows.h>
int APIENTRY WinMain(HINSTANCE a, HINSTANCE z, LPTSTR e, int r)
{
STARTUPINFO si = {sizeof si};
PROCESS_INFORMATION pi = {0};
SECURITY_ATTRIBUTES sa = {sizeof sa, NULL, 1};
HANDLE hFile = CreateFile("C:\\a.txt", GENERIC_WRITE, 0, &sa, CREATE_ALWAYS, 0, 0);
si.hStdOutput = hFile;
si.dwFlags = STARTF_USESTDHANDLES;
CreateProcess(0, "java", &sa, &sa, TRUE, NORMAL_PRIORITY_CLASS, 0, 0, &si, &pi);
WaitForSingleObject(pi.hThread, INFINITE);
CloseHandle(hFile);
return 0;
}
Par contre si j'éxécute dans la console et que je redirige dans un fichier ca marche!
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 10 déc. 2004 à 18:20
Apparemment c'est un problème connu, je l'ai résolu par la création d'une autre éxécutable Console, c'est lui qui appelle CreateProcess, et comme ca on peut récupérer la sortie de l'application 16-bits grace à l'application console 32-bits