Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#28

AW: Fenstername und Dateiname aus Handle herausfinden

  Alt 11. Mär 2012, 13:24
Jupp.

function FensterText(Wnd: HWND): String;
Wo kommt denn Wnd her und was ist darin?
hier raus:
Delphi-Quellcode:
function PHandle_to_WHandle(const PHandle: Cardinal): HWND;

  function EnumWindowsProc(hWnd: HWND; lParam: LPARAM): BOOL; stdcall;
   begin
     TList(lParam).Add(Pointer(hWnd));
     Result := True;
   end;

var
   i : Integer;
   List : TList;
   ProcessId : DWORD;

begin
  //Rückgabewert vordefinieren
  Result := 0;

  If PHandle <= 0 then
    exit;

  //Liste erzeugen
  List := TList.Create;

  try
    If EnumWindows(@EnumWindowsProc, Integer(List)) then
      for i := 0 to Pred(List.Count) do
        begin
          If GetWindowThreadProcessId(Integer(List.Items[i]), ProcessId) > 0 then
            //Wenn die Prozess-ID gefunden wurde, dann das Handle aus der
            //Liste zurückgeben und die Schleife verlassen
            If GetProcessId(PHandle) = ProcessId then
              begin
                Result := Integer(List.Items[i]);

                break;
              end;
        end;
  finally
    //Liste löschen und freigeben
    FreeAndNil(List);
  end;
end;
Delphi-Quellcode:
  //prüfen ob ein Fenster-Handle übergeben wurde
  If Wnd = 0 then
    exit;

  //Handle der Application zu dem Fenster auslesen
  AWnd := FindWindowEx(0, Wnd, 'TApplication', nil);
Da Wnd nie 0 ist, kann FindWindowEx niemals das erste TApplication zurückgeben.
Ist das jetzt gut oder schlecht?
Muss ich also null möglich machen oder nicht
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat