AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Hwnd find durch EXE-name, wie?

Ein Thema von Amnon82 · begonnen am 13. Jun 2006 · letzter Beitrag vom 13. Jun 2006
Antwort Antwort
Benutzerbild von Amnon82
Amnon82

Registriert seit: 5. Jan 2005
186 Beiträge
 
FreePascal / Lazarus
 
#1

Hwnd find durch EXE-name, wie?

  Alt 13. Jun 2006, 17:48
Ich hab einen meiner Programmcodes zu einem kleinen Demo-Programm zusammengestellt.

Es hat ein Test-Programm und das eigentliche Programm.
Sinn dahinter ist, zwei Progressbars im eigentlichen Programm zu dublizieren, sprich
die Werte des Test-Programms zu übernehmen.

Das HWnd finde ich über FindWindowByTitle.

Nun möchte ich aber das HWnd auch per EXE-Name finden.
Nur weis ich nicht wie.

Folgenden Code hab ich so gefunden:

Delphi-Quellcode:
Uses JCLSYSINFO
...
var PID : DWORD;
begin
  //Hwnd := FindWindowbytitle('Titel_der_EXE');
  PID := GetPidFromProcessName('Name_der.exe');
  Hwnd := GetMainAppWndFromPid(PID);
  if Hwnd <> 0
  then
   //tu was
end;
Leider benötigt dann das Programm 100% CPU

Gibt es ne Lösung?
Angehängte Dateien
Dateityp: zip getprogress_v2_207.zip (875,8 KB, 17x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Hwnd find durch EXE-name, wie?

  Alt 13. Jun 2006, 17:53
eine EXE kann kann mehrere Fenster/Forms etc. beinhalten und kann somit auch mehrere FensterHandles haben. Somit kann man nicht einfach von einer gestarteten Exe das Handle ermitteln (zumal eine Exe auch mehfach zu starten geht)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Amnon82
Amnon82

Registriert seit: 5. Jan 2005
186 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Hwnd find durch EXE-name, wie?

  Alt 13. Jun 2006, 18:26
K, man kann sie mehrmals starten. Wenn ich aber nur das Handle vom Hauptfenster brauche? Müsste doch gehen.

Bei FindWindowByTitle kann es auch passieren, dass sich mein Programm versemmelt, wenn ich nur nach '%' im Titel suche.
Ist die einzige Konstante bei dem aktiven Fenster, was ich suche (CCE während dem Encodieren).

Da dachte ich, ich könnte es auch über die EXE lösen, da ich dort nur eine starte.

'%' können auch andere Fenster im Titel haben. Wollte das vermeiden.

Oder kann man über das Handle die EXE ermitteln, um gegenzuprüfen, ob man auch das richtige Fenster erwischt hat?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Hwnd find durch EXE-name, wie?

  Alt 13. Jun 2006, 18:31
du könntest dir alle Fenster auflisten lassen welche zu einer bestimmten Exe gehören, aber wie gesagt ist das dann nicht nur ein Fenster und du müsstest aus den gefundenen Fenstern dann noch richtige heraus suchen.

mit CreateToolhelp32Snapshot, Process32First etc. kannst du dir alle Prozesse auflisten lassen und die ProzessID dieser Prozesse mit der ProzessID des Fensters vergleichen (zu welcher ProzessID ein Fenster gehört kannst du mit GetWindowThreadProcessId ermitteln)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:13 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