AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Wie findet man Fenster, deren Namen man nicht genau kennt?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie findet man Fenster, deren Namen man nicht genau kennt?

Ein Thema von Codehunter · begonnen am 14. Sep 2011 · letzter Beitrag vom 15. Sep 2011
 
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Wie findet man Fenster, deren Namen man nicht genau kennt?

  Alt 14. Sep 2011, 11:16
Danke Jungs, manchmal reicht einem ein Stichwort damit man weiterkommt In dem Fall CreateToolhelp32Snapshot (übrigens wirklich kein treffender Name für diese Routine). Hier eine Delphi-Übersetzung des Sample-Codes der im PSDK hinterlegt ist:
Delphi-Quellcode:
uses
  tlhelp32;

procedure TForm1.Button1Click(Sender: TObject);
var
  hProcessSnap: THandle;
  hProcess: THandle;
  pe32: PROCESSENTRY32;
  dwPriorityClass: DWord;
begin
  Memo1.Lines.BeginUpdate;
  try
    hProcessSnap:= CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
    if hProcessSnap = INVALID_HANDLE_VALUE then begin
      Memo1.Lines.Add(#13#10#13#10'CreateToolhelp32Snapshot (of processes)');
      Exit;
    end;
    pe32.dwSize:= SizeOf(PROCESSENTRY32);

    if not Process32First(hProcessSnap, pe32) then begin
      Memo1.Lines.Add(#13#10#13#10'Error: Process32First');
      CloseHandle(hProcessSnap);
      Exit;
    end;

    repeat
      Memo1.Lines.Add(#13#10'=====================================================');
      Memo1.Lines.Add(Format('PROCESS NAME: %s', [pe32.szExeFile]));
      Memo1.Lines.Add('-----------------------------------------------------');

      dwPriorityClass:= 0;
      hProcess:= OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
      if hProcess = NULL then begin
        Memo1.Lines.Add(#13#10'Error: OpenProcess');
      end else begin
        dwPriorityClass:= GetPriorityClass(hProcess);
        if dwPriorityClass = 0 then begin
          Memo1.Lines.Add(#13#10'Error: GetPriorityClass');
          CloseHandle(hProcess);
        end;
      end;

      Memo1.Lines.Add(Format(' Process ID = 0x%08X', [pe32.th32ProcessID]));
      Memo1.Lines.Add(Format(' Thread count = %d', [pe32.cntThreads]));
      Memo1.Lines.Add(Format(' Parent process ID = 0x%08X', [pe32.th32ParentProcessID]));
      Memo1.Lines.Add(Format(' Priority base = %d', [pe32.pcPriClassBase]));
      Memo1.Lines.Add(Format(' Priority base = %d', [pe32.pcPriClassBase]));
      Memo1.Lines.Add(Format(' Executable = %s', [pe32.szExeFile]));

      if dwPriorityClass > 0 then begin
        Memo1.Lines.Add(Format(' Priority class = %d', [dwPriorityClass]));
      end;

    until not Process32Next(hProcessSnap, pe32);

    CloseHandle(hProcessSnap);
  finally
    Memo1.Lines.EndUpdate;
  end;
end;
Ist erstmal nur eine Dummy-Routine mit Ausgabe in ein Memo. Ich werde mir das jetzt so adaptieren dass ich über den Exe-Namen gehe, an die Process-ID eine Message schicke und mir von dort mit einer Message antworten lasse. So finde ich meine ganzen Ziel-Prozesse.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz