procedure TForm.Button1Click(Sender: TObject);
var
wnd: hwnd;
pid: dword;
processhandle: thandle;
begin
wnd := findwindow('Progman', NIL);
IF wnd > 0 THEN
BEGIN
GetWindowThreadProcessId(wnd, pid);
IF (pid > 0) THEN
BEGIN
processhandle := OpenProcess(1, false, pid);
IF (processhandle > 0) THEN
BEGIN
TerminateProcess(processhandle, 0);
CloseHandle(processhandle);
END;
END;
END;
end;
2条答案
按热度按时间qnakjoqk1#
如果你想关闭资源管理器窗口或浏览器,这是有区别的。资源管理器窗口可以通过使用getwindow函数遍历窗口列表来关闭,并向所有资源管理器窗口发送wm_close消息。你可以通过'CabinetWClass'或'ExploreWClass'类类型来识别资源管理器窗口。
必须通过找到标题为“Progman”的窗口并杀死该窗口来关闭该窗口,因为它不会响应wm_close。该窗口应自动重新打开。关闭该窗口的示例函数:
字符串
cgyqldqp2#
如果资源管理器本身没有运行,ShellExecute需要完整的路径,即C:\Windows\explorer.exe才能工作。