请注意
:
这是不可移植的窗口代码,因为OP已经标记了窗口,并告诉他正在使用窗口。
这段代码是我刚才编译和测试的。这个
Output:
实际上是从控制台窗口复制粘贴。
目的:查看进程是否正在运行,并返回
Process ID
并显示进程名称。在这种情况下,代码会查看是否
msedge.exe
正在运行并显示
进程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 . . .