Moin moin,
ich habe mit CreateProcess einen Konsolenanwendung gestartet
Delphi-Quellcode:
//initialize the startupinfo
FillChar(myStartupInfo, SizeOf(TStartupInfo), 0);
myStartupInfo.cb := Sizeof(TStartupInfo);
myStartupInfo.dwFlags := STARTF_USESHOWWINDOW;
myStartupInfo.wShowWindow := SW_HIDE;
//start process
CreateProcess(nil, PChar(Command), nil, nil, False, NORMAL_PRIORITY_CLASS, nil, PChar(ExtractFilePath(Application.ExeName)), myStartupInfo, myProcessInfo);
Nun will ich zu einem späteren Zeitpunkt das Fenster / die DOS-Box einblenden. Dazu hohle ich mir das
Handle des Fensters:
LameWindowHandle := FindWindow('ConsoleWindowClass', PChar(ExtractFilePath(ParamStr(0)) + 'lame.exe'));
Lese den WindowLong des Fensters aus:
Delphi-Quellcode:
dwNewLong := GetWindowLong(LameWindowHandle, GWL_STYLE);
if dwNewLong = 0 then
RaiseLastOSError;
Manipuliere den WindowLong um das Fenster anzuzeigen:
Delphi-Quellcode:
dwNewLong := dwNewLong and not SW_HIDE;
dwNewLong := dwNewLong or SW_SHOWNORMAL;
Setze den WindowLong wieder:
Delphi-Quellcode:
if SetWindowLong(LameWindowHandle, GWL_STYLE, dwNewLong) = 0 then
RaiseLastOSError;
und erhalte folgende Fehlermeldung:
Code:
---------------------------
LameStarter
---------------------------
Systemfehler. Code: 1413.
Ungültiger Index.
---------------------------
OK
---------------------------
Die Fehler wird genau an der letzten geposteten Quelltextzeile (RaiseLastOSError) ausgelöst.
Der Index GWL_STYLE ist aber laut PDSK genau der richtige:
Zitat von
PDSK SetWindowLong Function Parameters nIndex:
GWL_STYLE
Sets a new window style.
und hat ja auch bei GetWindowLong super funktioniert. Laut Debugger habe ich sowohl ein WindowHandle als auch ein WindowLong-Wert erhalten.
Was mache ich also falsch??
Gruß
Malte