私は1つのボタンで1つのフォームを持っています。Button1でWindowsエクスプローラーを再起動する必要があります。クリックします。グーグルで検索しましたが、適切な解決策がありません。ソリューションがWinXP、Vistaで機能するが、Win7では機能しないことをすべて通知します。正確な解決策を提供してください。
質問する
881 次
1 に答える
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');
以前のバージョンでは、殺すだけです!!
于 2013-03-22T17:28:43.907 に答える