PDA

View Full Version : [VC6] catturare console da grafica


GioVesas
18-11-2005, 19:35
Se ad esempio si esegue la funzione
system("dir\n");
si apre rapidamente una console eviene esguito il comando dir.
C'è un modo per cui l'applicativo che ha eseguito la system può catturare quanto visualizzato nella console ?
O esiste una funzione alternativa alla system per cui da un bottone in grafica si possa mandare in esecuzione un programma di consolle e catturarne l'output ?

andbin
18-11-2005, 21:23
Se ad esempio si esegue la funzione
system("dir\n");
si apre rapidamente una console eviene esguito il comando dir.
C'è un modo per cui l'applicativo che ha eseguito la system può catturare quanto visualizzato nella console ?
O esiste una funzione alternativa alla system per cui da un bottone in grafica si possa mandare in esecuzione un programma di consolle e catturarne l'output ?
Ciao, in ambiente Windows si possono usare le API Win32 per creare processi con la possibilità di alterare i 3 classici handle stdin, stdout, stderr.
Esiste la funzione CreateProcess() in cui uno dei suoi 10 parametri è un puntatore ad una struttura di tipo STARTUPINFO. In questa struttura si possono eventualmente impostare i 3 handle, che ovviamente vanno creati e gestiti.
La documentazione per la CreateProcess() è <qui> (http://msdn.microsoft.com/library/en-us/dllproc/base/createprocess.asp) su MSDN. Comunque se fai qualche ricerca con google troverai sicuramente maggiori info.

GioVesas
19-11-2005, 09:37
Grazie.
Ho usato centinaia di volte (non esagero) la createProcess, ma mi limitavo sempre a far partire un processo senza gestire null'altro che l'handle di ritorno, per forzarne poi eventualmente la chiusura.