Autor Beitrag
Stefan-M
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Di 22.04.03 10:26 
Hallo, ich hoffe Ihr hattet schöne Ostern.
Ich hab ein Problem und zwar will ich die exe eines Prozesses den ich mit EnumWindows ermittelt hab rausbekommen. Unter WinMe funnzt das auch wunderbar mit GetWindowModuleFileName(...) aber unter NT gibt er mir da nur Mein eigenes Programm und drei dll's aus.
Aber er zeigt alle Prozesse an. Nur eben mit den falschen FileNames.
Gibts da einen Unterschied?
Vielen Dank schon mal an den, der antwortet.

MfG
Stefan
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 22.04.03 10:45 
Wie rufst du die Funktion auf?
Stefan-M Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Di 22.04.03 10:49 
Na im weitesten Sinne so:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function EnumWindowsProc (Wnd:HWND;LParam:LPARAM):Bool; stdcall;
var
  PID   :longword;
  title :array [0..255] of Char;
  FName :array [0..255] of Char;

begin
  GetWindowThreadProcessID(Wnd,@PID);
  GetWindowText(wnd,title,256);
  GetWindowModuleFileName(wnd,FName,256);
end;


und die wird dann mit

ausblenden Quelltext
1:
  EnumWindows(@EnumWindowsProc,1);					


aufgerufen.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 22.04.03 11:22 
Stefan-M hat folgendes geschrieben:
Na im weitesten Sinne so:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function EnumWindowsProc (Wnd:HWND;LParam:LPARAM):Bool; stdcall;
var
  PID   :longword;
  title :array [0..255] of Char;
  FName :array [0..255] of Char;

begin
  GetWindowThreadProcessID(Wnd,@PID);
  GetWindowText(wnd,title,256);
  GetWindowModuleFileName(wnd,FName,256);
end;


und die wird dann mit

ausblenden Quelltext
1:
  EnumWindows(@EnumWindowsProc,1);					


aufgerufen.

Probier mal die Funktion GetModuleFileNameEx. Diese Funktion benötigt ein Process-Handle (ein Handle für ein Kernel-Objekt) du übergibst allerdings ein Window-Handle. Du musst dir per OpenProcess das Process-Handle für den jeweiligen Prozess holen (die ProcessID holst du dir eh schon mit GetWinWindowThreadProcessID) und übergibst dann dieses Handle an die API. WICHTIG: Nicht vergessen das Process-Handle mit CloseHandle wieder zu schließen!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Stefan-M Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Di 22.04.03 11:34 
GetModuleFileNameEx kennt er bei mir gar nicht 'undeclared identifier'.
Das Handle hab ich ja schon in der Variable wnd.
Stefan-M Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Di 22.04.03 11:36 
sorry, hab nochmal gelesen, also ich übergeb das falsche handle, moment, mach ich mal.... aber das ändert nichts dran, dass er getmodulefilenameex nicht kennt.
und warum geht es unter win-me?