![]() |
ProzessID: Alle Fenster auflisten
Moin leute. Habe folgendes Problem:
ich hab mit CreateProcess ein Programm gestartet, und hab von diesem auch die ProzessID. Nun möchte ich das Programm wieder "normal" beenden. Da icj mit SendMessage aber nur an Fensterhandles die WM_CLOSE nachricht senden kann, muss ich nun von der ProzessID auf die Fensterhandles kommen. Ist das irgendwie möglich? Oder gibt es noch eine andere Methode, diesen Prozess anders sanft zu beenden? // Edit: ich habe WEDER den Fenstertitel noch den Classnamen, da der Programmpfad vom Benutzer eingestellt werden kann. Alles was ich hab, ist die ProcessID und den EXE-Pfad. mfg phXql |
Re: ProzessID: Alle Fenster auflisten
EnumWindows. Ergebnis mit GetWindowThreadProcessId vergleichen.
|
Re: ProzessID: Alle Fenster auflisten
diese funktion sollte genau das sein, was du brauchst
Delphi-Quellcode:
function StartProgram(Filename: String): HWND;
function EnumWindowsProc(hWnd: HWND; lParam: LPARAM): BOOL; stdcall; begin TList(lParam).Add(Pointer(hWnd)); Result := True; end; var SI: TStartupInfo; PI: TProcessInformation; List: TList; ProcessId: DWORD; I: Integer; myHWND: HWND; begin Result := 0; myHWND := 0; FillChar(SI, SizeOf(TStartupInfo), 0); SI.cb := SizeOf(TStartupInfo); SI.dwFlags := STARTF_USESHOWWINDOW; SI.wShowWindow := SW_SHOW; if CreateProcess(nil, PChar(Filename), nil, nil, False, 0, nil, nil, SI, PI) then begin WaitForInputIdle(PI.hProcess, INFINITE); CloseHandle(PI.hProcess); CloseHandle(PI.hThread); List := TList.Create; try if EnumWindows(@EnumWindowsProc, Longint(List)) then begin for I := 0 to List.Count - 1 do if GetWindowThreadProcessId(HWND(List.Items[I]), @ProcessId) <> 0 then if ProcessId = PI.dwProcessId then begin myHWND := HWND(List.Items[I]); Break; end; if IsWindow(myHWND) then begin Result := myHWND; end; end; finally List.Free; end; end; end; |
Re: ProzessID: Alle Fenster auflisten
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz