![]() |
Dateiname einer Anwendung wenn sie aktiviert wird....
Hi,
hmm...is was schwer zu erklären :-) also ich möchte dass sich der User den Dateinamen einer beliebigen (laufenden) Anwendung angucken kann. Das sollte imho so funktionieren:
Delphi-Quellcode:
tut es aber nicht :-(
procedure TForm_Settings.Chb_GetNextActiveWindowClick(Sender: TObject);
var H: HWND; begin if not Chb_GetNextActiveWindow.Checked then begin //Zum Abbrechen H:=0; Exit; end; H:=Application.Handle; while H=Application.Handle do begin //Solange Eigenes Prog Aktiv if H=0 then Exit; //Abbruch Delay(250); //Codelib -> "Delay revisited" H:=GetActiveWindow; end; ShowMessage(GetProcessCmdLine(H)); //Aus der CodeLib Chb_GetNextActiveWindow.Checked:=False; end; Die Showmessage ist einfach leer. ist GetProcessCmdLine einfach das falsche? oder ist GetActiveWindow die falsche wahl? oder ist mein ganzes Prinzip für die Tonne? |
Re: Dateiname einer Anwendung wenn sie aktiviert wird....
Hallo,
wieso lässt Du Dir nicht die PIDs auflisten und verwendest dann die folgende Funktion?
Delphi-Quellcode:
Viele Grüße
function GetExeNameByPID(pid: DWord): String;
var h: THandle; begin Result := ''; h := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, pid); if (h <> 0) then try SetLength(Result, MAX_PATH); ZeroMemory(@Result[1], MAX_PATH); SetLength(Result, GetModuleFileNameEx(h, 0, @Result[1], MAX_PATH)); finally CloseHandle(h); end; Result := LowerCase(Result); end; peanut. |
Re: Dateiname einer Anwendung wenn sie aktiviert wird....
wie lasse ich mir denn die PID's auflisten?
|
Re: Dateiname einer Anwendung wenn sie aktiviert wird....
Hallo
Delphi-Quellcode:
Siehe (*), in pe32.szExeFile steht schon der Dateiname drin :wink:
...
hProcSnap: THandle; pe32 : TProcessEntry32; ... // Snapshot machen hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0); if (hProcSnap <> INVALID_HANDLE_VALUE) then begin pe32.dwSize := SizeOf(pe32); if (Process32First(hProcSnap, pe32) = True) then begin writeln(LowerCase(pe32.szExeFile)); // (*) while (Process32Next(hProcSnap, pe32) = True) do writeln(LowerCase(pe32.szExeFile)); // (*) end; CloseHandle(hProcSnap); end; ... Die PIDs stehen aber auch in der pe32 Datenstruktur, falls Du die trotzdem noch benötigst... |
Re: Dateiname einer Anwendung wenn sie aktiviert wird....
das ist aber irgendwie nur der Dateiname...
ich bräuchte da noch den Pfad zu :duck: Edit: Das ist ja die Funktion dadrüber :duck: |
Re: Dateiname einer Anwendung wenn sie aktiviert wird....
Zitat:
szEXE := LowerCase(GetExeNameByPID(pe32.th32ProcessID)); So sollte es dann funktionieren. Gruß peanut. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 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