Handle et stdout

cs_zoreol Messages postés 10 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 23 avril 2003 - 18 mars 2003 à 14:49
cs_zoreol Messages postés 10 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 23 avril 2003 - 19 mars 2003 à 09:45
sa yest j'arrive a lancer le creatprocess(il fallait faire un memset).
Bon bref en fait now je voudrai recuperer le stdout du handle.C possible?

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 mars 2003 à 15:15
Mets moi ton morceau de code qui lance et je te mettrai la suite.
BruNews, ciao...
0
cs_zoreol Messages postés 10 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 23 avril 2003
18 mars 2003 à 15:41
oki:
HANDLE hProcess ;
PROCESS_INFORMATION ProcessInfo;
STARTUPINFO StartupInfo;
memset(&StartupInfo,0,sizeof(STARTUPINFO));
StartupInfo.cb=sizeof(STARTUPINFO);
StartupInfo.wShowWindow=SW_SHOWDEFAULT ; //SW_HIDE;
CreateProcess( NULL,
"C:\\Apache2\\bin\\htpasswd -nb utilisateur fred fred", NULL, NULL, FALSE,
CREATE_SUSPENDED | CREATE_NO_WINDOW, NULL, NULL, &StartupInfo,
&ProcessInfo );
hProcess = ProcessInfo.hProcess ;
voila ,voila!
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 mars 2003 à 15:46
Je sais pas quel memset il fallait mais je viens de refaire un test et va impec. J'ai recompile 3 fois le prog lance pour fare varier valeur de sortie, je la recupere a tout coup.
voila prog qui recupere:
#include <windows.h>

char szbuff[12];
char szappname[] = "RetCode";

int __stdcall ProgRun(char *szprog)
{
PROCESS_INFORMATION pi;
STARTUPINFO si = {sizeof(si)};
DWORD dwExit;
int lret = -1; // fatale supposee
BOOL bok = CreateProcess(0, szprog, 0, 0, 0,
CREATE_SUSPENDED, 0, 0, &si, &pi);
// ou alors CREATE_SUSPENDED | CREATE_NO_WINDOW
if(bok) {
ResumeThread(pi.hThread);
CloseHandle(pi.hThread);
dwExit = WaitForSingleObject(pi.hProcess, 480000);
// 48000 = 8 minutes maxi exemple
// INFINITE ou 0 sont valides mais...
if(dwExit == WAIT_OBJECT_0) GetExitCodeProcess(pi.hProcess, (DWORD*)&lret);
CloseHandle(pi.hProcess);
}
return lret;
}

int WINAPI WinMain(HINSTANCE, HINSTANCE, PSTR, int)
{
itoa(ProgRun("d:\\DlgInit.exe"), szbuff, 10);
MessageBox(0, szbuff, szappname, 0);
return 0;
}

BruNews, ciao...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 mars 2003 à 15:48
excuse j'ai fait tests entre temps, donc reponse dans message precedent.
BruNews, ciao...
0

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

Posez votre question
cs_zoreol Messages postés 10 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 23 avril 2003
18 mars 2003 à 16:08
en fait sa marche ton code merci,mais C;pas compatible avec e que je veut tu voit l'exe htpasswd retourne une ligne de code sur le stdout et C cette ligne que je veut recup.Je pense q'avec l'handle du process je peut rediriger son stdout .tu voit?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 mars 2003 à 16:16
OK
BruNews, ciao...
0
cs_zoreol Messages postés 10 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 23 avril 2003
19 mars 2003 à 09:45
sa y est G reussi en fait G lancer system et rediriger le flux dans un fichier que je charge ensuite.merci quand meme.!!:)
0
Rejoignez-nous