Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проверка процессов [D6, D7, WinXP]


ArchValentin ©   (2006-02-12 08:09:00) 

Доброго всем времени суток. Проблема такая, у меня есть путь типа c:\Прога\proga.exe, как можно проверить, запущена ли она. Заранее благодарен


kaZaNoVa   (2006-02-13 12:14:00) [1]

да, чуть не забыл .. код  [1] может некорректно выдавать начало пути.. поэтому лучше писать тока конец . .например If IfRunProgram(' proga.exe') then MessageBox(0,'Программа запущена','Внимание',0);


kaZaNoVa   (2006-02-13 00:22:00) [2]

maxim161 ©   (12.02.06 17:29) [2]
ага


maxim161   (2006-02-12 17:29:00) [3]

Так это надо в каком-нибудб таймере ставить?


kaZaNoVa   (2006-02-12 11:33:00) [4]

в uses добавь Tlhelp32, PsApi

Function IfRunProgram(ProgramFullName:string):Boolean;
var
hSnapshot, hProcess: THandle;
PE: TProcessEntry32;
Path: array [0..MAX_PATH] of Char;
begin
Result:=False;
hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if hSnapshot <> INVALID_HANDLE_VALUE then
begin
  PE.dwSize := sizeof(PE);
  if Process32First(hSnapshot, PE) then
    repeat
      hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE, PE.th32ProcessID);
      if GetModuleFileNameEx(hProcess, 0, Path, sizeof(Path)) <> 0 then
        if (pos(UpperCase(ProgramFullName),UpperCase(Path))>0  ) then Result:= True;
      CloseHandle(hProcess)
    until not Process32Next(hSnapshot, PE);
    CloseHandle(hSnapshot)
end
end;

//пример использования

If IfRunProgram('Explorer') then MessageBox(0,'Программа запущена','Внимание',0);


Наверх

Титульная страница Поиск, карта сайта Написать письмо