![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка процессов [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);