Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.21;
Скачать: 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 вся ветка

Текущий архив: 2006.05.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.054 c
4-1140673293
delphi-oracle
2006-02-23 08:41
2006.05.21
Как получить строку SendMessage


15-1145954816
Strate
2006-04-25 12:46
2006.05.21
Создание djvu


2-1146743284
Andrey235
2006-05-04 15:48
2006.05.21
проблема с динамичным массивом


2-1146410252
Kano
2006-04-30 19:17
2006.05.21
Ошибка при выполнении Insert


2-1146490417
Black Demon Night
2006-05-01 17:33
2006.05.21
Шаг в цикле For