MFC中,重启 explorer.exe 过程
MFC中,重启 explorer.exe 进程
为了在程序中实现这个刷新功能,我在响应一个菜单命令的时候,使用了下面的两句代码:
system("taskkill /im explorer.exe /f");
system("c:\\windows\\explorer.exe");
出现的问题:
程序的确能够 重启 explorer.exe 这个进程,但是完成任务后,却出现了一个标题栏的窗口名为C:\Windows\system32\cmd.exe 的DOS窗口。这个窗口需要自己手动去关闭它后,程序才能继续正常运行,如果不去终止这个DOS窗口,程序会异常终止或者卡死。
请问:
一、如何自动 关闭这个 DOS 窗口?
二、有没有其他的更好的方法,能够重启explorer.exe进程?
------解决方案--------------------
TerminateProcess()
CreateProcess()
------解决方案--------------------
我在XP下试了用SendMessage发WM_QUIT不行,PostThreadMessage倒是可以,但重启explorer.exe的时候连开机启动项也启动了
用TerminateProcess就没问题:
------解决方案--------------------
CreateProcess()里有参数可以设置是否显示dos窗口。
------解决方案--------------------
ShellExecute
为了在程序中实现这个刷新功能,我在响应一个菜单命令的时候,使用了下面的两句代码:
system("taskkill /im explorer.exe /f");
system("c:\\windows\\explorer.exe");
出现的问题:
程序的确能够 重启 explorer.exe 这个进程,但是完成任务后,却出现了一个标题栏的窗口名为C:\Windows\system32\cmd.exe 的DOS窗口。这个窗口需要自己手动去关闭它后,程序才能继续正常运行,如果不去终止这个DOS窗口,程序会异常终止或者卡死。
请问:
一、如何自动 关闭这个 DOS 窗口?
二、有没有其他的更好的方法,能够重启explorer.exe进程?
MFC
Windows
------解决方案--------------------
TerminateProcess()
CreateProcess()
------解决方案--------------------
我在XP下试了用SendMessage发WM_QUIT不行,PostThreadMessage倒是可以,但重启explorer.exe的时候连开机启动项也启动了
用TerminateProcess就没问题:
HANDLE hProcess;
DWORD dwProcessId;
GetWindowThreadProcessId(FindWindow(TEXT("Progman"), TEXT("Program Manager")), &dwProcessId);
hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId);
TerminateProcess(hProcess, 0);
CloseHandle(hProcess);
------解决方案--------------------
CreateProcess()里有参数可以设置是否显示dos窗口。
------解决方案--------------------
ShellExecute