Einzelnen Beitrag anzeigen

Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

MainWindow anhand der ProcessID ermitteln ?

  Alt 12. Jun 2007, 21:24
ich starte eine Excel Datei. von der habe ich die ProcessID, nun will ich das Mainwindow rausfinden, aber welches ist es ????

Dummerweise gibt es mehrere HAndles zu dieser ProcessID ....

folgender Code liefert das Ergebnis:

Fensterhandle : 3152256 Parent: 0 Owner : 0
Fensterhandle : 2429158 Parent: 0 Owner : 0
Fensterhandle : 2693338 Parent: 0 Owner : 0
Fensterhandle : 2431246 Parent: 65556 Owner : 0
Fensterhandle : 3021012 Parent: 0 Owner : 0
Fensterhandle : 2824432 Parent: 2429158 Owner : 2429158
Fensterhandle : 2103562 Parent: 2824432 Owner : 2824432





Delphi-Quellcode:
type

  TEnumWinData = record
    WinHandle: HWND;
    WinClassName: string;
    WinCaption: WideString;
    CaptionCount: word;
    ParentHandle: HWND;
    ProcessID: DWORD;
  end;
  PEnumWinData = ^TEnumWinData;


  var sDebug : STring;

function MyEnumWindowProc(AHandle: THandle; EWD: PEnumWinData): boolean; stdcall;
var
  ProcessID: THandle;
  hWnd_Owner : THandle;
  hWnd_Parent : THAndle;




begin
  ProcessID := 0;
  GetWindowThreadProcessID(AHandle, ProcessID);

  if (ProcessID = EWD.ProcessID) and
     IsWindow(AHAndle) then begin
      EWD.WinHandle := AHandle;
      hwnd_Parent := GetParent(AHandle);
      hWnd_Owner := GetWindow(AHandle, GW_OWNER);

      sDebug := sDebug
       + 'Fensterhandle : ' + inttostr(AHandle) +
        ' Parent: ' + inttostr(GetParent(AHandle)) +
        ' Owner : '  + inttostr(hwnd_Owner) + #13#10;


      result := true;
  end else
      result := true;
end;


function GetWindowHandleByProcessID(ProcessID : DWORD) : THandle;
var EWD : pENumWinData;
begin
   sDebug := '';
   result := 0;
   new(EWD);
   EWD.WinHandle := 0;
   EWD.ProcessID := ProcessID;

   EnumWindows(@MyEnumWindowProc, Integer(EWD));
   result := EWD.WinHandle;
   sendDebug(sDebug);
   dispose(EWD);
end; // getWindowHandleByProcessID
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat