再起動(終了および開く)explorer.exe C++

2632 ワード

自分でプログラムを書いて、リソースマネージャを再起動することができます~~~多く言わないで、直接コードに行きます!
#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;
}