AGB  ·  Datenschutz  ·  Impressum  







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

prozessliste unter win NT 4.0

Ein Thema von lordcroc · begonnen am 10. Jun 2003 · letzter Beitrag vom 14. Apr 2004
Antwort Antwort
Seite 3 von 3     123   
lordcroc

Registriert seit: 13. Aug 2002
Ort: Braunschweig
137 Beiträge
 
Delphi 7 Professional
 
#21
  Alt 10. Jun 2003, 22:26
Danke Danke funktioniert alles danke für eure Hilfe!!!
  Mit Zitat antworten Zitat
Unplugged

Registriert seit: 14. Apr 2004
Ort: Leipzig
125 Beiträge
 
Delphi 6 Enterprise
 
#22
  Alt 14. Apr 2004, 15:15
Zitat von Luckie:
Delphi-Quellcode:
uses
  PSAPI;

function GetProcessName(PID: DWORD): String;
var
  hProcess: cardinal;
  buffer : array [0..MAX_PATH-1] of Char;
begin
  result := '';
  Zeromemory(@buffer, sizeof(buffer));
  hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE,
    PID);
  if hProcess <> 0 then
  begin
    GetModulebaseName(hProcess, 0, buffer, sizeof(buffer));
    result := String(buffer);
    CloseHandle(hProcess);
  end
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  pdwResult : PDWORD; // für den Buffer
  pdwWork : PDWORD; // um dem Buffer verarbeiten zu können
  dwCountIn : DWORD; // Grösse des Buffers in Byte
  dwCountOut : DWORD; // Zurückgelieferte Anzahl Byte
  i : integer;
begin
  dwCountOut := 0; // Sicherheitshalber initialisieren, muss nicht sein
  dwCountIn := 1024; // Willkürlich gewählt, genügt für 256 Prozesse
  pdwResult := AllocMem(dwCountIn);
  try
    if not EnumProcesses(pdwResult,dwCountIn,dwCountOut) then begin
      ShowMessage(SysErrorMessage(GetLastError));
    end else begin
      pdwWork := pdwResult; // zur Verarbeitung übergeben, damit FreeMem funktioniert
      for i := 1 to (dwCountOut shr 2) do begin // shr 2 = / 4, da 4 Byte je DWORD
        // Prozess Id ausgeben
        //ShowMessage('ProzessId# '+IntToStr(i)+': '+IntToStr(pdwWork^));
        ShowMessage(GetProcessName(pdwWork^));
        // auf nächste addressieren (inc erhöht automatisch um 4, da es ein typisierter Pointer ist
        inc(pdwWork);
      end;
    end;
  finally
    FreeMem(pdwResult,dwCountIn);
  end;
end;
Hallo!

Grundsätzlich funktioniert diese Prozedur fehlerfrei, jedoch kann es sein, dass es Probleme unter Windows 98 gibt? Einige Nutzer eines meiner Programme meldeten mir einen recht merkwürdigen Fehler und meine Recherche führte zu diesem Teil des Quellcodes.

Thx & Greetz
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#23

Re: prozessliste unter win NT 4.0

  Alt 14. Apr 2004, 16:33
elche Prozedur kommt von mir? Und um an bestimmte Infos zu kommen braucght man Debugg-Rechte.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Unplugged

Registriert seit: 14. Apr 2004
Ort: Leipzig
125 Beiträge
 
Delphi 6 Enterprise
 
#24

Re: prozessliste unter win NT 4.0

  Alt 14. Apr 2004, 17:15
die hast du doch 2 posts über mir gepostet ...

Da die Prozedur bei mir so läuft, kann ich den Fehler lokal nicht ausfindig machen. Zugang zu dem Rechner des Users, der die Support-Anfrage gestellt hat, hab ich natürlich nicht. Daher wollte ich nur fragen, ob solch ein Problem bekannt ist und es eventuell eine alternative Methode zum Lesen der Prozessliste gibt, die unter allen Windows-Versionen problemlos funktioniert.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#25

Re: prozessliste unter win NT 4.0

  Alt 14. Apr 2004, 17:24
PSAPI ist leider nicht auf allen NT4 Distributionen mit dabei.
Dann funktioniert EnumProcesses() nicht.
Es gibt auch die Möglichkeit, die Prozesse aus der Registry auszulesen.
Siehe z.B http://www.madshi.net/enumStuff.zip
Thomas
  Mit Zitat antworten Zitat
Unplugged

Registriert seit: 14. Apr 2004
Ort: Leipzig
125 Beiträge
 
Delphi 6 Enterprise
 
#26

Re: prozessliste unter win NT 4.0

  Alt 14. Apr 2004, 17:28
danke, ich werde es mal über diese unit implementieren und hoffen, dass es vielleicht auch das Prob mit einigen Win98 Usern behebt.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#27

Re: prozessliste unter win NT 4.0

  Alt 14. Apr 2004, 19:29
Hallo? Wir reden hier die ganze Zeit davon, dass es die PSAPI nur unter NT gibt, kein Wunder dass es unter 98 nicht geht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#28

Re: prozessliste unter win NT 4.0

  Alt 14. Apr 2004, 21:34
CreateToolHelp32SnapShot nur auf Win2000 + 98(etc) glaube ich.
Unter NT ist es wie bereits gesagt EnumProcesses.

Wenn dein Prog unter allen Windows-Versionen laufen soll musst du mit GetVersion das laufende OS bestimmen und die entsprechende Funktion aufrufen.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 21:26 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