Вниз
Скачать: CL | DM;

GetModuleFileNameEx   Найти похожие ветки 

 
SpyBoy ©   (2006-01-16 17:24) [0]


procedure GetProcessList(sl:Tstrings);
var

 pe:TProcessEntry32;
 ph, snap:THandle;//дескрипторы процесса и снимка
 mh:hmodule;//дескриптор модуля
 procs:array[0..$fff] of dword;//массив для хранения дескрипторов процессов
 count, cm:cardinal;//количество процессов
 q,i:integer;
 ModName:array[0..max_path] of char;//имя модуля
begin

sl.Clear;
 if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then begin //если это Win9x
   snap:=CreateToolhelp32Snapshot(th32cs_snapprocess, 0);
   if integer(snap)=-1 then
   begin
     exit;
   end else
   begin
     pe.dwSize:=sizeof(pe);
     if Process32First(snap, pe) then
     repeat
       sl.Add(string(pe.szExeFile));
     until not Process32Next(snap, pe);
   end;
 end
 else
 begin //Если WinNT/2000/XP
   if not EnumProcesses(@procs, sizeof(procs), count) then
   begin
     exit;
   end;
   for i := 0 to count  do
   begin
     ph:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
                     false, procs[i]);
     if ph>0 then
     begin
       EnumProcessModules(ph, @mh, 4, cm);
       GetModuleFileNameEx(ph, mh, ModName, sizeof(ModName));

       if string(ModName)="E:\585.exe" then   l=true else l=false; ///////////-???

       sl.Add(string(ModName));

      for q:=0 to sl.Count-1 do                  ///////////-???
if sl.text="E:\585.exe" then  l=true else l=false;

               CloseHandle(ph);

     end;
   end;

 end;

end;
procedure TForm1.Button1Click(Sender: TObject);

begin

 GetProcessList(listbox1.Items) ;

end;

Если 585.ехе запущен после моей проги то всё нормально(t:=true),  а вот если до то почему-то не катит :(
Может кто подскажет !?!?


 
begin...end ©   (2006-01-16 17:37) [1]

> SpyBoy ©   (16.01.06 17:24)

> for i := 0 to count  do

for i := 0 to count div sizeof(DWORD) - 1 do

> EnumProcessModules(ph, @mh, 4, cm)

А это зачем?

> GetModuleFileNameEx(ph, mh, ModName, sizeof(ModName))

GetModuleFileNameEx(ph, 0, ModName, sizeof(ModName))


 
SpyBoy ©   (2006-01-16 18:41) [2]

Замечания учтены и ошибки исправленны, однако....:(
Если 585.ехе запущен после моей проги то всё нормально(t:=true),  а вот если до то почему-то не катит :(
Даже если переделать

for q:=0 to sl.Count-1 do                  
if sl.text="E:\585.exe" then  l=true else l=false;

в

for q:=0 to sl.Count-1 do                  
if sl.strings[q]="E:\585.exe" then  l=true else l=false;


 
ALFER ©   (2006-02-23 14:03) [3]

Неужели никаких вариантов болше нет ?!!!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.024 c
11-1126286716
homm
2005-09-09 21:25
2006.05.21
Новый TButton


6-1137578474
ronyn
2006-01-18 13:01
2006.05.21
местоположение компа


1-1144937604
IceBeerg
2006-04-13 18:13
2006.05.21
Sleep Windows XP


2-1146654892
Alex7
2006-05-03 15:14
2006.05.21
Поиск ошибки


15-1145617405
Некто
2006-04-21 15:03
2006.05.21
Админам страшно? =))




   Наверх