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

来源:互联网 发布:域名交易行情 编辑:程序博客网 时间:2024/04/29 04:33

方法一:
通过窗体名称检测程序是否在运行

//定义程序窗体名称为“左前相机--当前用户: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);}
0 0
原创粉丝点击