C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Проверить на наличие процесса
Jlamepok
Отправлено: 24.05.2004, 18:51


Не зарегистрирован







Во какой вопрос... есть прлцесс.. звать этого монстра — "Client", как мне под 98 проверить на присудствие в системе... спасибки
AVC
Отправлено: 25.05.2004, 08:11


Ветеран

Группа: Модератор
Сообщений: 1583



На входе спецификация exe файла процесса, на выходе -1 — ошибка, 0 — не активке, 1 — активен.
CODE

#include "tlhelp32.hpp"

PACKAGE int __fastcall AppIsActiv (const AnsiString &pAppName)
{
if (pAppName.IsEmpty()) return -1;

AnsiString aname, fname, sname;
TProcessEntry32 prj;
prj.dwSize = sizeof(PROCESSENTRY32);

HANDLE hss = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
if (((int)(hss)) == (-1)) return -1;

aname = (ExtractFileName(pAppName) + ExtractFileExt(pAppName)).UpperCase();;

int ret = 0;
try {
for (bool loop = Process32First(hss, &prj); loop; loop = Process32Next(hss, &prj))
{  fname = AnsiString(prj.szExeFile).Trim().UpperCase();
   if (fname.IsEmpty()) continue;
sname = (ExtractFileName(fname) + ExtractFileExt(fname)).UpperCase();
   if (aname == sname) { ret = 1; break; }
}
} // try
catch (...) { ret = -1; }

CloseHandle(hss);
return ret;
}


Вернуться в Вопросы программирования в C++Builder