AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Alle Moeglichkeiten Prozesse aufzulisten
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Moeglichkeiten Prozesse aufzulisten

Ein Thema von Win32.API · begonnen am 15. Mär 2006 · letzter Beitrag vom 16. Mär 2006
 
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#7

Re: Alle Moeglichkeiten Prozesse aufzulisten

  Alt 15. Mär 2006, 14:34
Kommt drauf an, was du genau wissen willst.

Es gibt noch sowas wie NtQueryProcessInformation

oder einfach direkt mit ausprobieren:

Delphi-Quellcode:
procedure ListProcessIDsNT;
var i: DWord;
    dwProcess: DWord;
    dwPriv: DWord;
begin
  SetDebugPrivilege(SE_PRIVILEGE_ENABLED,dwPriv);
  for i := 0 to High(Word) div 4 do
  begin
    dwProcess := OpenProcess(PROCESS_ALL_ACCESS,false,i*4);
    if (dwProcess <> 0) then
    begin
      CloseHandle(dwProcess);
      Writeln(i*4);
      Writeln(GetExeFileNameAExNT(i*4));
    end;
  end;
  //Writeln(GetExeFileNameAExNt(FindProcess('explorer')));
  SetDebugPrivilege(dwPriv);
  ReadLn;
end;
mit dem richtigen Wissen kommst so auch an die Dateinamen usw. Ich bastel mir gerade selbst was schönes wie z.b.

Delphi-Quellcode:
function GetExeFileNameAExNt(dwProcessID: DWord): String; stdcall;
var
  PEB : TPEBNT;
  dwProcessID2: DWord;
  LdrData : TLdrData;
  dwRead : DWord;
  ModuleEntry : TModuleEntry;
begin
  Result := '';
  dwProcessID2 := OpenProcess(PROCESS_ALL_ACCESS,False,dwProcessID);
  if (dwProcessID2 <> 0) then
    dwProcessID := dwProcessID2;
  if ReadProcessMemory(dwProcessID,Pointer($7FFDF000),@PEB,SizeOf(TPEBNT),dwRead) and
     (dwRead = SizeOf(TPEBNT)) then
  begin
    if (PEB.pLdrData = nil) then
      ReadProcessMemory(dwProcessID,Pointer(PEB.pEventLogSection),@PEB,SizeOf(TPEBNT),dwRead);
    if (ReadProcessMemory(dwProcessID,PEB.pLdrData,@LdrData,SizeOf(TLdrData),dwRead)) and (dwRead = SizeOf(TLdrData)) then
    begin
      if (ReadProcessMemory(dwProcessID,LdrData.InLoadOrderModuleList,@ModuleEntry,SizeOf(TModuleEntry),dwRead)) and
         (dwRead = SizeOf(TModuleEntry)) then
        Result := ReadPWideChar(dwProcessID,ModuleEntry.ModuleName);
    end;
  end;
  if (dwProcessID2 <> 0) then
    CloseHandle(dwProcessID);
end;
Aber mehr gibts von mir zur Zeit nicht dazu, da gerade alle Funktionen für 9x und NT nachbaue ;>

für die, die es unter NT mal testen wollen:
http://uall.overclock.ch/public/GetExeFileNameAEx.exe
  Mit Zitat antworten Zitat
 


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 10:39 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