![]() |
FindWindow von Pfad
Ist es möglich bei Delphi7 einen Fensternamen eines Programmes anhand dessen .exe-Pfad herrauszufinden ? Wenn ja wie ?
Für einen fetzen Sourcecode wäre ich dankbar |
AW: FindWindow von Pfad
Du kannst mit
![]() ![]() |
AW: FindWindow von Pfad
Zitat:
|
AW: FindWindow von Pfad
Ähnliches Problem samt Lösungsvorschlägen:
![]() |
AW: FindWindow von Pfad
Zitat:
|
AW: FindWindow von Pfad
Der Vergleich ist aber doch derselbe. Ob Du nun von links oder von rechts kommst, dürfte doch egal sein.
|
AW: FindWindow von Pfad
Zitat:
Beispiele findet man eigentlich bei Google genug: ![]() z.B. ausführlich kommentiert: ![]() |
AW: FindWindow von Pfad
Ich habe erst seit einem halben Jahr Informatik und seit ca. 1/4 Jahr programmieren. Es ist für mich schon schwer zu verstehen wie ich die beiden Funktionen überhaupt benutze und mit einander verbine. Für mich wäre es am einfachsten einen Sourcecode zu sehen in den ich nurnoch meinen Pfad einsetzten müsste und am Ende den Fensternamen herausbekommen würde
|
AW: FindWindow von Pfad
Dafür gibt es die Forensuche (
![]() ![]() ![]() [edit] Wenn Du es selbst versuchst und dabei steckenbleibst, helfen wir natürlich gerne weiter, nicht, dass wir uns da missverstehen. [/edit] |
AW: FindWindow von Pfad
Ich habe soeben feststellen müssen, dass das Ganze wohl wirklich nicht so ganz ohne ist. Daher habe ich 2 Hilfsfunktionen geschrieben, ich hoffe, das hilft zunächst weiter, Fehler sind natürlich vorbehalten.
Delphi-Quellcode:
Für Dich von Belang ist dabei ListExeNamesAndIDs. Der übergibst Du ein TStrings-Objekt (Stringliste, ListBox.Items, ComboBox.Items oder Ähnliches), und dieses sollte nach dem Aufruf die kompletten Pfade zu den laufenden Prozessen sowie deren ProcessID (im Object-Feld hinterlegt) enthalten. Diese Liste kannst Du nun nach dem gesuchten Pfad filtern, die ProcessID auslesen und zum Vergleich für EnumWindows und GetWindowThreadProcessID heranziehen. Wenn ich keinen Denkfehler mache/gemacht habe, sollte das eigentlich funktionieren.
uses TLHelp32, PsAPI;
function ExeNameFromProcessID(ID: Cardinal): string; var ProcessHandle: THandle; begin Result := ''; ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, ID); if ProcessHandle <> 0 then try SetLength(Result, MAX_PATH); if GetModuleFileNameEx(ProcessHandle, 0, PChar(Result), Length(Result)) <> 0 then SetLength(Result, StrLen(PChar(Result))); finally CloseHandle(ProcessHandle); end; end; procedure ListExeNamesAndIDs(const ResultList: TStrings); var PE: TProcessEntry32; Snap: THandle; ExeName: string; begin Assert(Assigned(ResultList)); ResultList.BeginUpdate; try ResultList.Clear; Snap := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); PE.dwSize := SizeOf(PE); if Snap <> 0 then try if Process32First(Snap, PE) then repeat ExeName := ExeNameFromProcessID(PE.th32ProcessID); if ExeName <> '' then ResultList.AddObject(ExeName, TObject(PE.th32ProcessID)); until not Process32Next(Snap, PE); finally CloseHandle(Snap); end; finally ResultList.EndUpdate; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz