判断应用程序文件是否打开(比如.exe文件)

通过查找进程文件名的个数来判断进程程序是否打开1、传入参数:strName为进程名称,比如(CString strName= "test.exe";)

int GetProcessCount(const TCHAR* strName)

{
    int count = 0;
    try
    {
        TCHAR sztarget[MAX_PATH];

        lstrcpy(sztarget, strName);

        CharLowerBuff(sztarget, MAX_PATH);

        PROCESSENTRY32 my;

        HANDLE l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

        if (((int)l) != -1)
        {
            my.dwSize = sizeof(my);

            if (Process32First(l, &my))

            {
                do
                {
                    CharLowerBuff(my.szExeFile, MAX_PATH);

                    if (lstrcmp(sztarget, my.szExeFile) == 0)

                    {
                        count++;
                    }

                } while (Process32Next(l, &my));
            }
            CloseHandle(l);
        }
    }
    catch (std::exception e)
    {
        std::cout << e.what() << std::endl;
    }
    return count;
}

如果返回值个数为0,则进程未被打开,否则表示进程已经存在。

2、返回值为0,重新打开完整路径下对应的.exe文件,否则显示对应界面与窗口之上  

其中dir为应用程序文件所在路径,比如:(dir= "D:\test.exe";)

  char dir[MAX_STRING_LEN]={0};

 if(GetProcessCount(strName) == 0)
    {
        WinExec(dir,false);

       //ShellExecute(NULL, _T("open"), dir, NULL, NULL, SW_SHOWMAXIMIZED);
    }
    else
    {
        HWND hWnd = FindWindow(NULL,"test"); 
        if (hWnd)
        {    
            SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);        
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值