AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

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
Seite 4 von 4   « Erste     234   
Marco Steinebach

Registriert seit: 4. Aug 2006
491 Beiträge
 
Delphi 5 Enterprise
 
#31

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.685 Beiträge
 
Delphi 11 Alexandria
 
#32

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
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#33

AW: In welchem Pfad läuft ein Prozess?

  Alt 27. Okt 2018, 07:46
Hmm..




Dankeschön, sieht gut aus werde ich fast so übernehmen, ich lass das var vorm nSize drinnen, Api sagt
Ich denke entweder

var nSize: DWORD

oder

nSize: PDWORD


(Beides liefert die Länge zurück)

aber

var nSize: PDWORD

dürfte doppelt gemoppelt sein
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#34

AW: In welchem Pfad läuft ein Prozess?

  Alt 27. Okt 2018, 08:15
hab den pointer überlesen *whoops*, klar ohne.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
491 Beiträge
 
Delphi 5 Enterprise
 
#35

AW: In welchem Pfad läuft ein Prozess?

  Alt 27. Okt 2018, 19:25
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
Marco Steinebach
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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