Thema: Delphi FindWindow von Pfad

Einzelnen Beitrag anzeigen

Premaider

Registriert seit: 31. Mär 2012
160 Beiträge
 
#12

AW: FindWindow von Pfad

  Alt 3. Mai 2012, 16:21
Geht es nur darum, zu einem einzelnen, festgelegten Programm den aktuellen Fenstertitel zu ermitteln, insofern dieses Programm gestartet worden ist ? Dann geht das auch wesentlich direkter, also ohne aufwändiges Filtern diverser Listen:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  PID: DWORD;
  ExePath: string;
  EnumInfo: TEnumInfo;
begin
  // vor dem ButtonClick ein Explorerfenster öffnen
  // oder hier ein anderes Programm eintragen und starten
  ExePath := 'C:\WINXP\Explorer.exe';
  PID := PathToPid(ExePath);
  if PID = 0 then
  begin
    ShowMessage(Exepath + #13#10'Process not found!');
    exit;
  end;
  EnumInfo := FindMainWindow(PID);
  with EnumInfo do
    ShowMessage(format('Exe: %s'#13#10 +
      'ProcessID: %d'#13#10 +
      'Window Handle: %d'#13#10 +
      'Window Class Name: %s'#13#10 +
      'Window Title: "%s"', [ExePath, ProcessID, WindowHandle, ClassName, WindowTitle]));
end;
Kompletter Code im Anhang.

Komplizierter wird es allerdings etwas, wenn gleichzeitig mehrere Instanzen desselben Programms geladen sein sollten, da diese dann natürlich alle unterschiedliche PIDs und unterschiedliche Fensterhandles haben, wobei jede Instanz auch ihren eigenen Titel im sichtbaren Fenster aufweist.
Sicher, das das mit Delphi7 funktioniert ?

Bei mir kommen dann diese Fehlermeldungen.
Delphi-Quellcode:
[Fehler] Unit1.pas(91): Undefinierter Bezeichner: 'TEnumInfo'
[Fehler] Unit1.pas(97): Undefinierter Bezeichner: 'PathToPid'
[Fehler] Unit1.pas(103): Undefinierter Bezeichner: 'FindMainWindow'
[Fehler] Unit1.pas(109): Undefinierter Bezeichner: 'ProcessID'
[Fehler] Unit1.pas(109): Undefinierter Bezeichner: 'WindowTitle'
[Fehler] Unit1.pas(112): '.' erwartet, aber ';' gefunden
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
  Mit Zitat antworten Zitat