重新启动(结束并打开)explorer.exe C++

自写了个程序,能重新启动资源管理器~~~
不多说,直接上代码!

#include 
#include 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    char ProcessName[1000] = "explorer.exe";
    HANDLE SnapShot, ProcessHandle;
    SHFILEINFO shSmall;
    PROCESSENTRY32 ProcessInfo;

    SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if(SnapShot != NULL) 
    {
        ProcessInfo.dwSize = sizeof(ProcessInfo);  // 设置ProcessInfo的大小
        BOOL Status = Process32First(SnapShot, &ProcessInfo);
        while(Status)
        {
            // 获取进程文件信息
            SHGetFileInfo(ProcessInfo.szExeFile, 0, &shSmall, sizeof(shSmall), SHGFI_ICON|SHGFI_SMALLICON);

            // 检测进程是否需要关闭
            strlwr(ProcessInfo.szExeFile);

            if(!strcmp(strlwr(ProcessName), ProcessInfo.szExeFile)) 
            {
                // 获取进程句柄,强行关闭
                ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessInfo.th32ProcessID);
                TerminateProcess(ProcessHandle, 1);
                break;
            }
            // 获取下一个进程的信息
            Status = Process32Next(SnapShot, &ProcessInfo);
        }
    }
    // 打开explorer.exe
    ShellExecute(NULL, "open", strlwr(ProcessName), NULL, NULL, SW_SHOWNORMAL);
    return 0;
}

你可能感兴趣的:(C++,windows)