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

 
Как узнать Pid приложения по имени?
dimidrol
Отправлено: 20.03.2004, 21:26


Дежурный стрелочник

Группа: Участник
Сообщений: 36



Привет всем.
Как узнать Pid приложения по имени и убить программу по ее Pid.
ета функция у меня неработает :/


bool Common::GetProcessByExeName(DWORD* Pid,AnsiString ExeName)
{
HANDLE hProcessSnap = NULL;
PROCESSENTRY32 pe32 = {0};
AnsiString temp="";

hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
if(hProcessSnap == (void*)-1)
{
MessageBox(NULL, "oblom", "oblom", MB_OK|MB_ICONWARNING|MB_SYSTEMMODAL);
return false;
}
pe32.dwSize=sizeof(PROCESSENTRY32);

if(Process32First(hProcessSnap,&pe32)) temp=pe32.szExeFile;
if((temp.UpperCase()).Pos(ExeName))
{
*Pid= pe32.th32ProcessID;
CloseHandle (hProcessSnap);
return true;
}
pe32.dwSize=sizeof(PROCESSENTRY32);

while(Process32Next(hProcessSnap,&pe32))
{
temp=pe32.szExeFile;
if((temp.UpperCase()).Pos(ExeName))
{
*Pid= pe32.th32ProcessID;
CloseHandle(hProcessSnap);
return true;
}
pe32.dwSize=sizeof(PROCESSENTRY32);
}

CloseHandle(hProcessSnap);
*Pid=0;
return false;
}


у меня компилятор выдает ошибки:

Build
[C++ Error] Common.h(857): E2451 Undefined symbol 'SYSTEM_PROCESS_INFORMATION'
[C++ Error] Common.h(857): E2451 Undefined symbol 'pinfo'
[C++ Error] Common.h(857): E2451 Undefined symbol 'pinfo_last'
[C++ Error] Common.h(860): E2451 Undefined symbol 'PFNNtQuerySystemInformation'
[C++ Error] Common.h(860): E2108 Improper use of typedef 'PROC'
[C++ Error] Common.h(860): E2293 ) expected
[C++ Error] Common.h(868): E2188 Expression syntax
[C++ Error] Common.h(872): E2451 Undefined symbol 'progProcessId'
[C++ Error] Common.h(888): E2188 Expression syntax

Люди чего делать подскажите.
Заранее спасибо!!!
dimidrol
Отправлено: 21.03.2004, 03:15


Дежурный стрелочник

Группа: Участник
Сообщений: 36



Отвечаю сам smile.gif
смотрите папку (Борланда)\Examples\Apps\ProcView
klen
Отправлено: 21.03.2004, 12:31


Машинист паровоза

Группа: Участник
Сообщений: 239



Ну вообще задача неоднозначная, представь что у тебя несколько процессов запущено, у них у всех с будет одинаковое exe имя, командная строка, даже пользовотель может быть один и тотже и тд. Как ты собираешься узнать какой из них нужен тебе?
dimidrol
Отправлено: 21.03.2004, 18:26


Дежурный стрелочник

Группа: Участник
Сообщений: 36



Да ты прав другие запущенные проги тоже закрижаются :-/
как узнать pid именно моего процесса я незнаю. а как ето сделать?
klen
Отправлено: 21.03.2004, 19:54


Машинист паровоза

Группа: Участник
Сообщений: 239



Опиши ситуацию.

Обязательно должно быть что-то что отличает "Его" который ты хочешь выбрать от других, ибо если не так , то то ты не можешь захотеть именно его, поnмучто сам не узнаешь какой захотеть из них.

Во как!

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