//---------------------------------------------------------------------------
AnsiString ExecuteExternalFile(AnsiString FEXEC)
{
AnsiString OUTP;
char BUFFER[100],InAnsi[100];
unsigned long LPDWORD;
SECURITY_ATTRIBUTES secattr;
ZeroMemory(&secattr,sizeof(secattr));
secattr.nLength = sizeof(secattr);
secattr.bInheritHandle = TRUE;
HANDLE rPipe, wPipe;
// Pipe für lesen und schreiben
CreatePipe(&rPipe,&wPipe,&secattr,0);
// Für CreateProcess
STARTUPINFO sInfo;
ZeroMemory(&sInfo,sizeof(sInfo));
PROCESS_INFORMATION pInfo;
ZeroMemory(&pInfo,sizeof(pInfo));
sInfo.cb=sizeof(sInfo);
sInfo.dwFlags=STARTF_USESTDHANDLES;
sInfo.hStdInput=NULL;
sInfo.hStdOutput=wPipe;
sInfo.hStdError=wPipe;
// Ausführen
CreateProcess(0, FEXEC.c_str(), 0, 0, TRUE,NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW, 0, 0, &sInfo,&pInfo);
CloseHandle(wPipe);
// Rückgabe auslesen
while(ReadFile(rPipe,BUFFER,100,&LPDWORD,0))
{
BUFFER[LPDWORD]=NULL;
OemToChar(BUFFER,InAnsi);
OUTP+=InAnsi;
}
return OUTP.TrimRight(); // Löscht nachfolgende Leer- und Steuerzeichen
}
//---------------------------------------------------------------------------
<-- so siehts aus!! :marine