![]() |
AW: In welchem Pfad läuft ein Prozess?
Huhu Kodezwerg,
Code? Völlig langweilig:
Code:
Einfach eine Form mit einem Edit für den Prozess-Namen, einem Memo für die Ausgabe und einem Button zum Test, dessen onClick-Methode oben steht.
processExists (edit1.text, l, idx);
memo1.lines.Add (format ('Name: %s', [edit1.text])); if l.count > 0 then memo1.lines.add (format ('Pfad: %s', [l[0]])) else memo1.lines.Add ('Pfad nicht ermittelt'); l.free; Für z.B. Explorer.exe funktioniert das wunderbar, nur bei meinem ScreenReader weigert er sich. Gibt's noch irgendwelche Flags oder so mit denen man rausfinden könnte, warum er sich bei denen weigert? Viele Grüße Marco |
AW: In welchem Pfad läuft ein Prozess?
Komisch, also wenn bei Dir Edit1.Text einen guten Namen wie "Explorer.exe" annimmt aber "xyz.exe" nicht, obwohl mein processlister "xyz.exe" anzeigen kann, da fällt mir nichts weiter zu ein.
Ich nutz identischen Code zum ermitteln der Prozesse, da passiert genau das gleiche, nur das ich in der Schleife alle Prozesse sammel und System-Prozesse gleich rauswerfe (die sind bei Dir noch enthalten), das ist der einzige Unterschied. So hier müsste es klappen das bei systemprozessen du keine AV bekommst, habs grad nicht getestet, nur hier im editor.
Delphi-Quellcode:
function ProcessExists(const AFileName: WideString; var FoundFiles: TStringList; out HostIndex: Integer): Boolean;
var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; fullPath: WideString; myPID: DWORD; OwnPID: Cardinal; begin HostIndex := -1; FoundFiles := TStringList.Create; OwnPID := GetCurrentProcessId; FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); Result := False; while Integer(ContinueLoop) <> 0 do begin Try if UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExtractFileName(AFileName)) then begin myPID := FProcessEntry32.th32ProcessID; fullPath := PidToFilename(myPID); FoundFiles.Add(fullPath); if myPID = OwnPID then begin HostIndex := FoundFiles.Count-1; Result := True; end; end; ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); Except ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); End; end; CloseHandle(FSnapshotHandle); end; |
AW: In welchem Pfad läuft ein Prozess?
Hmm..
Zitat:
var nSize: DWORD oder nSize: PDWORD (Beides liefert die Länge zurück) aber var nSize: PDWORD dürfte doppelt gemoppelt sein ;) |
AW: In welchem Pfad läuft ein Prozess?
hab den pointer überlesen *whoops*, klar ohne.
|
AW: In welchem Pfad läuft ein Prozess?
Hallo zusammen,
Jep! Die "eingeschränkten Rechte" waren die Lösung. Ich bin auch gerade darauf gestoßen, aber ihr wart schneller! Vielen herzlichen Dank fürs Lösen helfen. Herzliche Grüße Marco |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:34 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