Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Programm in den Vordergrund (https://www.delphipraxis.net/157633-programm-den-vordergrund.html)

hanspeter 19. Jan 2011 09:03

Programm in den Vordergrund
 
Kann mir wer auf die Sprünge helfen,

ich starte eine Exe mit CreateProcess(...
Auf ProcessInfo erhalte u.a. ich ProcessID und Threadhandle.
Wie komme ich jetzt an das Fensterhandle des gestarteten Programms?
Ziel ist es dieses Programm wieder in den Vordergrund zu bekommen.

Für einen Tip dankbar.
Gruß
Peter

Bummi 19. Jan 2011 09:26

AW: Programm in den Vordergrund
 
Delphi-Quellcode:
type
  PEnumInfo = ^TEnumInfo;
  TEnumInfo = record ProcessID: DWORD; HWND: THandle; end;

function EnumWindowsProc(Wnd: DWORD; var EI: TEnumInfo): Bool; stdcall;
    var
      PID: DWORD;
    begin
      GetWindowThreadProcessID(Wnd, @PID);
      Result := (PID <> EI.ProcessID) or (not IsWindowVisible(WND)) or (not IsWindowEnabled(WND));
      if not Result then EI.HWND := WND;
    end;

  function FindMainWindow(PID: DWORD): DWORD;
    var
      EI: TEnumInfo;
    begin
      EI.ProcessID := PID;
      EI.HWND := 0;
      EnumWindows(@EnumWindowsProc, Integer(@EI));
      Result := EI.HWND;
    end;

hanspeter 19. Jan 2011 09:44

AW: Programm in den Vordergrund
 
Danke
Hat funktioniert.

Gruß
Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 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