AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

In welchem Pfad läuft ein Prozess?

Ein Thema von Marco Steinebach · begonnen am 19. Okt 2018 · letzter Beitrag vom 27. Okt 2018
Antwort Antwort
Marco Steinebach

Registriert seit: 4. Aug 2006
503 Beiträge
 
Delphi 5 Enterprise
 
#1

AW: In welchem Pfad läuft ein Prozess?

  Alt 26. Okt 2018, 21:40
Huhu Kodezwerg,
Code? Völlig langweilig:
Code:
  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;
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.
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
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: In welchem Pfad läuft ein Prozess?

  Alt 26. Okt 2018, 22:25
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;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort

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 16:01 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