您的位置:首页 > 其它

怎么判断一个程序是否在运行

2017-04-01 11:12 381 查看
方法一:

通过窗体名称检测程序是否在运行

//定义程序窗体名称为“左前相机--当前用户: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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐