Newsgroup: it.comp.programmare.win32
Titolo: cattura ouput programma

salve ho un problema
dunque ho un problema ho un exe e vorrei tramite un altro programma (il mio)
eseguire e prendere tutto l'output di questo exe (non è fatto da me che 
funziona in console)
per questo funzionare programma usa delle var di ambiente e dei path.
in pratica come lo chiamo (con system da errore in console schermata nera, 
che le var di ambiente non è settata, con shellexecute dice l'applicazione 
non ha nessun file associato con getlasterror e non apre neanche un 
finestra)
ecco due linee di codice:
       int err = system("makero > c:\\pippo.txt");
       HINSTANCE R  = ShellExecute(NULL, "makero > c:\\pippo.txt", NULL, 
NULL, NULL, SW_SHOWDEFAULT );
       ERR(0)  //GETLASTERROR
Come potrei fare se volete più spiegazioni sono qua

 dovrebbe fare al caso tuo.
Dovrebbe purtroppo non va ,
dunque ho fatto funzionare l'esempio e riesco a prendere  l'output purtroppo 
mi si presenta sempre un problema (o piů)
1) se su createprocess non gli passo il path completo chima l'eseguibile ma 
non so perchč mi dice che non č settata una variabili di ambiente
2) se gli passo il path completo chima l'exe "sembra" funziona dico sembra 
perchč non sono riuscito a testarlo il problema e
che questo exe lavora sulla directory corrente del sistema e non posso ad 
esempio passarli un path come parametro, ma siccome per farlo funzionare
devo usare il path completo in cui č presente l'exe si crea un circolo 
vizioso da cui non riesco ad uscire
Sia con system,shellexecute che createprocess
ho visto che la shell non č emulata al 100% mi chiedo non esiste un modo per 
poter avere lo stesso identico comportamento
come se fossimo nella finestra della shell ? (ottimo sarebbe se si riuscisse 
ad incorporare le shell nel mio programma e comandarla a piacere)
aspetto info grazie ciao

 ha scritto nel messaggio 
news:Jq2Se.12554$4g5.7...@news4.tin.it...

Dunque ho letto un pň di doc sono riuscito a farlo funzionare ho perň un 
problema cioč una "Prima" parte del mio buffer di uscita non riesco a 
caricarlo non so perchč
inoltre sul caricamento dei dati dal buffer stdout mi viene mostrato un 
messaggio "handle non valido" (bloccando la ricezione dei dati )e non so 
perchč...
ecco il codice che carica dal buffer in uscita
   DWORD dwRead, dwWritten;
   CHAR chBuf[BUFSIZE];
   ZeroMemory( &chBuf, BUFSIZE ); //aggiunto io
// Close the write end of the pipe before reading from the
// read end of the pipe.
   if (!CloseHandle(hChildStdoutWr))
   ERR(0)
// Read output from the child process, and write to parent's STDOUT.
int err;
   for (;;)
   {
      err = ReadFile( hChildStdoutRd, chBuf, BUFSIZE, &dwRead,NULL);
      //if (!err) ERR(0)  //GETLASTERROR
      if(dwRead == 0) break;
      err = WriteFile(hStdout, chBuf, dwRead, &dwWritten, NULL);
      if (!err) ERR(0) // GETLASTERROR
      if(dwRead == 0) break;
   }
   //Memo1->Lines->Clear();
   //Memo1->Lines->Add(chBuf);
   //ShowMessage(chBuf);


Sto facendo dei test non solo per quale motivo ma se non metto una specie di 
ritardo
il tutto funziona (uno sleep di 3 secondi sembra andare) qualcuno mi sa 
spiegare perchè  ?
--- ?? ---  

 ha scritto nel messaggio 
news:_q3Se.12743$4g5.7...@news4.tin.it...

mi sono bloccato con quasi tutti gli exe va ma con uno mi dice :
process_easy: DuplicateHandle(In) failed (e=6)
make: Interrupt/Exception caught (code = 0xc0000005, addr = 0x4166e4)
(il programma exe è un make che deve compilare un progetto)

mi sono bloccato con quasi tutti gli exe va ma con uno mi dice :
Ti spiacerebbe quotare decentemente ?
E' una delle prime regole di usnet.

 ha scritto nel messaggio 
news:4utih1l4j77k74a18...@4ax.com...

scusate /O\ 

ha scritto -<
prova a vedere questo link.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/creating_a_child_process_with_redirected_input_and_output.asp
dovrebbe fare al caso tuo.
-------------------------------------------------
-> yag ha scritto -<




if (!CloseHandle(hChildStdoutWr))
ERR(0)



IN più ho questo problema (che secondo una ricerca sembra relativo a tutti i 
make lanciati da console )
Quando lo chiamo con createprocess mi da questo messaggio di errore
process_easy: DuplicateHandle(In) failed (e=6)
make: Interrupt/Exception caught (code = 0xc0000005, addr = 0x4166e4)
Ho già cercato in google l'errore ma non mi ha chiarito
Scusate per il quoting spero di aver rimesso in ordine questo thread con 
quest'ultimo riassuntivo ...
-------------------------------------------------