プログラムが実行されているかどうかを判断する方法
4033 ワード
方法1:フォーム名でプログラムが実行されているかどうかを検出する
方法2:プロセスを検出する
// “ -- :admin”
if (FindWindow(NULL, _T(" -- :admin")))
AfxMessageBox(_T(" "));
else
{
//
ShellExecute(NULL, _T("open"), _T("D:\\Program Files\\GxAVI_left1.exe"), NULL, NULL, SW_SHOWNORMAL);
}
方法2:プロセスを検出する
#include
#include
#include
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).
", GetLastError());
return;
}
DWORD dwExitCode = 0;
do
{
GetExitCodeProcess(pi.hProcess, &dwExitCode);
if (dwExitCode == STILL_ACTIVE)
{
printf_s("process is running
");
Sleep(1000);
}
} while (dwExitCode == STILL_ACTIVE);
printf_s("process is exit
");
//
//WaitForSingleObject(pi.hProcess, INFINITE);
// Close process and thread handles.
//CloseHandle(pi.hProcess);
//CloseHandle(pi.hThread);
}