Autor Beitrag
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 08.02.05 16:03 
Hallo,

Ich habe hier eine Prozessliste, die mir alle laufenden Prozesse auflistet.
Das mache ich mit dem Help32SnapShot aus der TlHelp32 Unit.

Nun bekomme ich immer den Exenamen den Prozesses, also z.B. explorer.exe.
In meiner Liste, würde ich aber auch gerne das Icon dazu anzeigen.
Wie komme ich nun an den Dateinamen? Oder von mir aus auch an das Handle einer Instanz des Prozesses.

Meine Idee war, anhand des Prozessnamen die ProcessID zu ermitteln, und dann alle Fenster durchzugehen, und dann zu schauen ob die PID überein stimmt. Aber es gibt ja einen Haufen Prozesse, die garkein Fenster haben, z.B. explorer.exe...

Also jemand eine Idee wie ich an den Dateinamen kommen könnte?

danke.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Di 08.02.05 16:36 
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Di 08.02.05 16:57 
einen lösungsansatz habe ich dir absichtlich unterschlagen da ich grade ein kommerzielles programm mache was ähnliches tut. hoffe dein tool macht nicht was ähnliches und kommt mir zuvor ^^
Karlson Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 08.02.05 18:20 
Danke das sollte helfen.

aber keine Angst, ich hab wie schon gesagt nur ne Prozessliste, und das sollen aus optikgründen die Icons dabei stehen. Mein Programm hat mit sowas im Grunde garnichts zu tun ;)

edit: Zu früh gefreut. Wenn ich das jetzt richtig verstanden habe, dann haben die ja das Handle, sobald ich das Handle habe, komme ich auch einfacher an den Dateipfad. Aber ich hab ja nur den Prozessnamen bzw. die Pid.

edit2: Okay, habe nicht weit genug unten gelesen. Da kommt ja noch was nach der hwnd function :lol:
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Di 08.02.05 18:50 
Unter welchen Windows Versionen soll dein Programm denn laufen können?

_________________
Ciao, Sprint.
Karlson Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 08.02.05 18:54 
Das ist egal. ICh habe ohnehin schon diverse API-Funktionen verwendet die es ohnehin nur unter NT gibt.
Ist zwar ärgerlich, aber was soll man machen. Ich bin mir im Grunde auch relativ sicher das min. ~80-90% der User NT benutzen oder es zumindest auf dem Rechner haben.
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Di 08.02.05 19:00 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function GetProcessName(ProcessId: DWORD): String;
var
  ProcessHandle: THandle;
begin

  ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, ProcessId);
  if ProcessHandle <> 0 then
  begin
    SetLength(Result, MAX_PATH);
    SetLength(Result, GetModuleFileNameEx(ProcessHandle, 0, PChar(Result), Length(Result)));
    CloseHandle(ProcessHandle);
  end;

end;


Wenn du die laufenden Prozesse mit CreateToolhelp32Snapshot ermittelst, wird dein Programm nicht unter Windows NT 4 laufen können. Nachdem du mein Beispiel in deinem Programm eingebaut hast, wird es nicht mehr unter Windows 9x laufen.

_________________
Ciao, Sprint.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 09.02.05 19:28 
Was du suchst ist die API-Funktion Suche im MSDN SHGETFILEINFO. Wie man sie anwendet, kannst du dir in meinem Programm RunAsUser angucken.

retnyg hat folgendes geschrieben:

einen lösungsansatz habe ich dir absichtlich unterschlagen da ich grade ein kommerzielles programm mache was ähnliches tut. hoffe dein tool macht nicht was ähnliches und kommt mir zuvor ^^

Jetzt mach dich aber nicht lächerlich. Wie oft wurde dir hier schon im Forum für deine kommerziellen Programme geholfen? :roll:
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 09.02.05 20:53 
Luckie hat folgendes geschrieben:
Jetzt mach dich aber nicht lächerlich. Wie oft wurde dir hier schon im Forum für deine kommerziellen Programme geholfen? :roll:
noch nie, da ich bislang keine gemacht habe.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 10.02.05 00:14 
Ok. Aber selber aus den Fingern gesogen hast du dir auch bestimmt nicht alles. Sprich irgendwo wirst du dein Wissen her haben und wenn es diese Quellen genauso machen würden wie du, dann wärst du heute noch bei deinem "Hello world".
Karlson Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Do 10.02.05 00:15 
Okay, Danke Jungs.
Ich nehme mir eure Tipps der Kompatibilität zu Herzen, und schaumal ob das alles nicht verträglicher machen kann ;)
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 10.02.05 01:08 
:roll: nun gut: der lösungsansatz den ich gewählt habe ist: GetClassLong + DrawIconEx. was aber aufs gleiche rauskommt wie bei den lösungen unter dem link den ich oben gepostet habe: dass es funktioniert.

nur zur info: mein erstes programm war kein "hallo welt" sondern ein idiotensicheres installationsprogramm für eine "shareware-spiele"-cd, zu einer zeit in der internet in europa ein fremdwort war und text noch per int 21h auf den bildschirm kam. hmmm hier wäre ein screenie davon: krazz.net/retnyg/base.gif
Karlson Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Do 10.02.05 01:35 
äääääääh :lol: Hier hat dich keiner angegriffen! Mir hat dein Link ja schon gereicht um die Lösung zu haben. Desweiteren hat wohl auch niemand deine Programmierfähigkeiten angreifen wollen!

Ich denke Luckie war nur etwas entsetzt darüber, dass du mir hier einen Link gepostest hast, anstatt mir den Funktionsnamen zu nennen. Was du ja aber garnicht konntest da du die Sache anders angegangen bist.

Also kein Grund zur Aufregung ;)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 10.02.05 02:11 
retnyg hat folgendes geschrieben:
nur zur info: mein erstes programm war kein "hallo welt" sondern ein idiotensicheres installationsprogramm für eine "shareware-spiele"-cd, zu einer zeit in der internet in europa ein fremdwort war und text noch per int 21h auf den bildschirm kam. hmmm hier wäre ein screenie davon: krazz.net/retnyg/base.gif

Aha ja. Das heißt, Menschen deines Jahrganges wurde zu mindest mit einem Grundwissen in Sachen Programmierung geboren. :roll: Der Punkt ist doch der, wenn es keine Community-Mitglieder gibt, die ihr Wissen weitergeben, dann ist die Community irgendwann mal Geschichte. OK als du das Programm geschrieben hast, gab es noch kein Internet, aber bestimmt Leute die ihr Wissen in Buchform weitergegeben haben, die meine ich genauso.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 10.02.05 03:19 
mein erstes "programm" in die autoexec.bat eine zeile reingeschireben: "echo hallo welt" ... xD

..wenn wir schon bei off topiuc sind... *erinner*

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 10.02.05 06:52 
vor lauter in erinnerung schwelgen hab ich mal meine alten pascal quellcodes ausgegraben und auf meine hp geuppt...
:arrow: krazz.net/retnyg
mann waren das noch zeiten :mrgreen:
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Do 10.02.05 07:00 
retnyg hat folgendes geschrieben:
zu einer zeit in der internet in europa ein fremdwort war und text noch per int 21h auf den bildschirm kam.

In welchem Jahr soll das gewesen sein? Vielleicht hast du einfach auch nur die falsche Software eingesetzt. :D

_________________
Ciao, Sprint.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 10.02.05 07:21 
anno '95 ... kurz bevor das lausige win95 rauskam, wo man sich auf einmal nicht mehr auskennen musste um den pc zu bedienen.
und es auf einmal keinen neuen dos-spiele mehr gab :evil: