• 根据进程获得exe名称


    #include<windows.h>
    
    //定义出错类型,列举所有出错提示框的信息
    const TCHAR *szErrorInfo[] = 
    {
        _T("致命的应用程序错误"),
        _T("应用程序错误"),
        _T("Fatal Application Error"),
        _T("Application Error"),
        NULL,
    };
    
    int WINAPI WinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPTSTR    lpCmdLine,
                       int       nCmdShow)
    {
        HANDLE hMutex = CreateMutex(NULL,FALSE,_T("SAVIOR"));
        if (hMutex)
        {
            if(ERROR_ALREADY_EXISTS == GetLastError())
            {
                return FALSE;
            }
        }
    
        TCHAR szPath[256];
        while (1)
        {
            HWND hWnd = NULL;        
            for (int i = 0;szErrorInfo[i];i++)
            {
                if (szErrorInfo[i])
                {
                    hWnd = FindWindow(NULL,szErrorInfo[i]);
                    if (hWnd)
                    {
                        //查找到出错提示对话框
                        DWORD dwProcessID;
                        
                        //获取出错进程ID
                        GetWindowThreadProcessId(hWnd,&dwProcessID);
                        
                        //获取出错进程句柄
                        HMODULE hProc = (HMODULE)OpenProcess(0,FALSE,dwProcessID);
                        if (hProc)
                        {
                            //获取出错进程对应的EXE
                            GetModuleFileName(hProc,szPath,255);
                        }
                        
                        //关闭出错提示对话框
                        SendMessage(hWnd,WM_CLOSE, 0, 0);
                        Sleep(3000);
    
                        //重新启动出错应用程序
                        PROCESS_INFORMATION pi;    
                        if (CreateProcess(szPath,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,&pi))
                        {
                            CloseHandle(pi.hProcess);
                        }
                    }
                }
                Sleep(100);
            }        
            Sleep(1500);
        }
        return TRUE;
    }
    

      

  • 相关阅读:
    CSS左侧固定宽 右侧自适应(兼容所有浏览器)
    MySQL学习笔记之一
    删除goagnt证书方法〔chrome
    JS通过ajax动态读取xml文件内容
    display vs visibility
    android SDK更新
    关于JS APP
    Ajax HTML, JS
    Request/Server模式
    关于SOAP
  • 原文地址:https://www.cnblogs.com/fuyanwen/p/3569372.html
Copyright © 2020-2023  润新知