static DWORD GetProcessID(String^ExeNam)
{
WCHAR ExeName=(WCHAR)Marshal::StringToHGlobalUni(ExeNam).ToPointer();
PROCESSENTRY32W pe32;
HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPALL,NULL);
if(hProcessSnap==NULL)return 0;
pe32.dwSize=sizeof(PROCESSENTRY32W);
if(Process32FirstW(hProcessSnap,&pe32))
{
if((WCHAR)pe32.szExeFile==ExeName)
{
CloseHandle(hProcessSnap);
return(pe32.th32ProcessID);
}
pe32.dwSize=sizeof(PROCESSENTRY32W);
while(Process32NextW(hProcessSnap,&pe32))
{
if((WCHAR)pe32.szExeFile==ExeName)
{
CloseHandle(hProcessSnap);
return(pe32.th32ProcessID);
}
pe32.dwSize=sizeof(PROCESSENTRY32W);
}
CloseHandle(hProcessSnap);
return -1;
}
else
{
return -2;
}
}
функция должна возвращать id процесса. потом я функцией OpenProcess открываю процесс и GetModuleFileNameEx узнаваю путь к exe-шнику. но функция почему-то не работает. что тут нужно исправить? суть функции (если кто не понял из кода) что она должна перебрать процессы и сравнить каждый с заданным мною
Примечание:
это взято из примера:
http://netcode.ru/cpp/?lang=&katID=2&skatID=18&artID=197
я передал для VS
Примечание:
всё я решил сам))
может кому нужно:
static DWORD GetProcessID(String^ExeNam)
{
LPCWSTR ExeName=(LPCWSTR)Marshal::StringToHGlobalUni(ExeNam).ToPointer();
PROCESSENTRY32 pe32;
HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPALL,NULL);
if(hProcessSnap==NULL)return 0;
pe32.dwSize=sizeof(PROCESSENTRY32W);
if(Process32FirstW(hProcessSnap,&pe32))
{
if(StrStrW((LPCWSTR)pe32.szExeFile,ExeName)>0)
{
CloseHandle(hProcessSnap);
return(pe32.th32ProcessID);
}
pe32.dwSize=sizeof(PROCESSENTRY32);
while(Process32Next(hProcessSnap,&pe32))
{
if(StrStrW((LPCWSTR)pe32.szExeFile,ExeName)>0)
{
CloseHandle(hProcessSnap);
return(pe32.th32ProcessID);
}
pe32.dwSize=sizeof(PROCESSENTRY32);
}
CloseHandle(hProcessSnap);
return -1;
}
else
{
return -2;
}
}
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.