我有一个表单,一个按钮。我需要在Button1.Click上重新启动Windows资源管理器。我用谷歌搜索它,但我没有得到任何适当的解决方案。解决方案在WinXP,Vista中运行但在Win7中不起作用的所有方法。请提供准确的解决方案。
答案 0 :(得分:2)
在TlHelp32上添加用途
在Windows 7或更高版本中,此功能有效:
function KillTask(ExeFileName: string): Integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
ProcessHandle: Cardinal;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if FSnapshotHandle = INVALID_HANDLE_VALUE then
RaiseLastOSError;
try
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
begin
ProcessHandle:= OpenProcess(PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0);
if ProcessHandle > 0 then
begin
try
Result := Integer(TerminateProcess(ProcessHandle);
finally
CloseHandle(ProcessHandle);
end;
end
else
RaiseLastOSError;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
finally
CloseHandle(FSnapshotHandle);
end;
end;
它杀了并重新开始!
KillTask('explorer.exe');
在以前的版本中,它只会杀死!!