Я хочу убедиться, что helper.exe
работает, и наоборот.
Я ищу что-то вроде:
if (not running helper.exe) { //fatal error here }
к вашему сведению, я использую Windows Я ничего не пробовал, кроме поиска в Google, который не дал мне ответа.
@KenWhite мб, я правда только что подписался на переполнение стека, чтобы задать этот вопрос, лол
Ну, оставайся ненадолго. Перейдите по предложенной дублирующей ссылке в комментарии 2. Если это не отвечает на ваш вопрос, отредактируйте этот вопрос и объясните, почему. Скоро прочитайте страницу О и ссылки, описывающие Как задать вопрос и Как создать минимальный полный воспроизводимый пример. У тебя все получится.
Обратите внимание: это непереносимый код Windows, поскольку ОП пометил окна и сообщил, что использует окна.
Этот код скомпилирован и протестирован мной только что. Output:
на самом деле является копированием из окна консоли.
ЦЕЛЬ: посмотреть, запущен ли процесс, вернуть Process ID
и отобразить имя процесса. В этом случае код проверяет, работает ли msedge.exe
, и отображает Process ID
(PID).
Метод: выполняет поиск по всем запущенным процессам, выполняя строку. поиск нужного процесса.
#define _WIN32_WINNT 0x0501 /* WinXP minimum platform */
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
/*--------------------------------------------
FindProcessId()
*--------------------------------------------*/
DWORD FindProcessId(char *processName)
{
PROCESSENTRY32 processInfo;
HANDLE processesSnapshot =
CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if ( processesSnapshot == INVALID_HANDLE_VALUE )
return 0;
processInfo.dwSize = sizeof(processInfo);
Process32First(processesSnapshot, &processInfo);
printf("FindProcessId(%s) comp: %s\n",processName, processInfo.szExeFile);
if ( !_stricmp(processName, processInfo.szExeFile) )
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
while ( Process32Next(processesSnapshot, &processInfo) )
{
printf("FindProcessId(%s) comp: %s\n",processName, processInfo.szExeFile);
if ( !_stricmp(processName, processInfo.szExeFile) )
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
}
CloseHandle(processesSnapshot);
return 0;
}
/*-------------------------------------
main()
*------------------------------------*/
int main()
{
DWORD PID=0;
PID = FindProcessId("msedge.exe");
printf("PID = %lu\n", PID);
system("pause");
return 0;
}
Выход:
...
...
FindProcessId(msedge.exe) comp: svchost.exe
FindProcessId(msedge.exe) comp: svchost.exe
FindProcessId(msedge.exe) comp: splwow64.exe
FindProcessId(msedge.exe) comp: svchost.exe
FindProcessId(msedge.exe) comp: taskhostw.exe
FindProcessId(msedge.exe) comp: msedge.exe
PID = 12156
Press any key to continue . . .
у него проблема с ProcessInfo: «аргумент типа «WCHAR *» (он же «wchar_t *») несовместим с параметром типа «const char *»
@someguywholikesC -- привет. Надеюсь, это не сделает его непригодным для использования. Что касается меня, я компилирую с отключенным UNICODE, и, возможно, поэтому я не получаю ошибок или предупреждений при компиляции? Я думаю, что для исправления вы можете: 1.) привести строку к wchar ( также это) или 2.) отключить UNICODE. Не уверен, кто из них сделает это за вас. Спасибо, что выбрали мой ответ, и я надеюсь, что вы сможете его использовать.
Чтобы что-то уточнить, отредактируйте свой пост. Вы не должны ничего комментировать самому себе. Кроме того, добавленный вами тег Windows сообщает нам, что вы используете Windows.