1。在WINDOWS里如何做到关闭指定或所有运行的程序?2。如何可靠的关闭WINDOWS?
解决方案 »
- 删除tstringlist相同节点间的所有节点
- unable to start performance monitoring
- 编译d2009时,如何关闭, .net选项,
- IDTCPCLIENT与都有服务器端都有多线程的情况下,正常连接后,断开老报地址异常
- 关于webbrowser的问题???
- 动态SQL问题
- 怎样才能让DBComboBox1下拉时看到其他数据(其他记录的同一field)?
- 高手看过来!!!100分相送!!!!
- 如何用Delphi实现GIf图片的添加(会动的)
- 唉,好久没来了。是在没分散。
- 新手第一次发帖,请求dxDBGrid的问题,急急急!谢谢各位大侠!
- 为什么很多人会用ehlib,但却没有人写一点教不会用的人变成会用的人的资料呢?
2、你说的关闭windows是指窗口还是系统?关机有api函数的。
h:thandle;
begin
h:= findwindow(nil,'form1'); //窗口名字根据自己的内容变化
if h=0 then
begin
showmessage('没有找到制定窗口');
exit;
end;
sendmessage(h,WM_CLOSE,0,0);
END;
ExitWindowsEx(EWX_SHUTDOWN,0); //EWX_REBOOT
handle:thandle;
begin
handle:= Findwindow(nil,'计算器');
if handle>0 then Sendmessage(handle,WM_CLOSE,0,0);
END;
exitwindow(EWX_SHUTDOWN,0); 是以前老的关机函数
ExitWindowsEx(EWX_SHUTDOWN,0); 这个是新的api函数,这个比较好些.
至于怎么查找窗体的句柄,楼上的都说了.当然也可以做循环来找出所有窗体.
例子么.....相信后面上来的哥们会给出的,^-^
LPARAM lParam // application-defined value
);
这个函数可以列举。
procedure Shutdown;
var
htmp,hToken:Thandle;
tkp:TOKEN_PRIVILEGES;
tkpOld:TOKEN_PRIVILEGES;
begin
if application.MessageBox('确实要关机吗?',pchar(application.Title),mb_okcancel)=mrok then
begin
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY,hToken);
LookupPrivilegeValue(nil, 'SeShutdownPrivilege',tkp.Privileges[0].Luid);
tkp.PrivilegeCount:=1;
tkp.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, false, tkp, sizeof(tkpOld), tkpOld, htmp);
ExitwindowsEx(EWX_POWEROFF,0);
end;
end;