Zitat von
Olli:
Die komplette Struktur, welche du als Variable "start" ansprichst, sieht in C so aus:
Unit Windows:
Delphi-Quellcode:
type
PStartupInfoA = ^TStartupInfoA;
PStartupInfoW = ^TStartupInfoW;
PStartupInfo = PStartupInfoA;
_STARTUPINFOA = record
cb: DWORD;
lpReserved: PAnsiChar;
lpDesktop: PAnsiChar;
lpTitle: PAnsiChar;
dwX: DWORD;
dwY: DWORD;
dwXSize: DWORD;
dwYSize: DWORD;
dwXCountChars: DWORD;
dwYCountChars: DWORD;
dwFillAttribute: DWORD;
dwFlags: DWORD;
wShowWindow: Word;
cbReserved2: Word;
lpReserved2: PByte;
hStdInput: THandle;
hStdOutput: THandle;
hStdError: THandle;
end;
_STARTUPINFOW = record
cb: DWORD;
lpReserved: PWideChar;
lpDesktop: PWideChar;
lpTitle: PWideChar;
dwX: DWORD;
dwY: DWORD;
dwXSize: DWORD;
dwYSize: DWORD;
dwXCountChars: DWORD;
dwYCountChars: DWORD;
dwFillAttribute: DWORD;
dwFlags: DWORD;
wShowWindow: Word;
cbReserved2: Word;
lpReserved2: PByte;
hStdInput: THandle;
hStdOutput: THandle;
hStdError: THandle;
end;
_STARTUPINFO = _STARTUPINFOA;
TStartupInfoA = _STARTUPINFOA;
TStartupInfoW = _STARTUPINFOW;
TStartupInfo = TStartupInfoA;
{$EXTERNALSYM STARTUPINFOA}
STARTUPINFOA = _STARTUPINFOA;
{$EXTERNALSYM STARTUPINFOW}
STARTUPINFOW = _STARTUPINFOW;
{$EXTERNALSYM STARTUPINFO}
STARTUPINFO = STARTUPINFOA;
Ich verwende in leicht modifizierter Form die Routine von Sprint aus
http://www.softgames.de/forum/viewtopic.php?t=24225
Dabei wird auch geprüft, ob die Pipes erstellt wurden. Und die Konsolenausgabe kann direkt ohne eine temporäre Datei ins Memo eingetragen werden.