方法一:
通过窗体名称检测程序是否在运行
//定义程序窗体名称为“左前相机--当前用户:admin”
if (FindWindow(NULL, _T("左前相机--当前用户:admin")))
AfxMessageBox(_T("左前相机已经打开"));
else
{
//打开此窗体名称对应的程序
ShellExecute(NULL, _T("open"), _T("D:\\Program Files\\GxAVI_left1.exe"), NULL, NULL, SW_SHOWNORMAL);
}
方法二:
检测一个进程
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
void _tmain(int argc, TCHAR *argv[])
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
//程序路径
TCHAR szApp[] = _T("StorageRecycler.exe");//待检测程序
// 启动程序.
if (!CreateProcess(NULL, // No module name (use command line)
szApp, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // use CREATE_NO_WINDOW to hide window
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi) // Pointer to PROCESS_INFORMATION structure
)
{
printf("CreateProcess failed (%d).\n", GetLastError());
return;
}
DWORD dwExitCode = 0;
do
{
GetExitCodeProcess(pi.hProcess, &dwExitCode);
if (dwExitCode == STILL_ACTIVE)
{
printf_s("process is running\n");
Sleep(1000);
}
} while (dwExitCode == STILL_ACTIVE);
printf_s("process is exit\n");
// 阻塞等待进程结束
//WaitForSingleObject(pi.hProcess, INFINITE);
// Close process and thread handles.
//CloseHandle(pi.hProcess);
//CloseHandle(pi.hThread);
}