如何在关机时自动关闭我的程序?
现在关机的时候如果我的程序还在运行的话电脑就关不了,不知道什么原因。
现在关机的时候如果我的程序还在运行的话电脑就关不了,不知道什么原因。
解决方案 »
- 自定义一个类和方法,为什么会出错??
- 我想改变headercontrol的sections里面文字的颜色,怎么办?
- 怎么不通过编译器把.c文件转换为.bin文件
- 急:关于Stream的问题...
- 用过dispatch 的请进,有一问
- 请问我的应用程序在最小化的时候,图标已经加入了启动栏里,但任务栏里也有窗体,我想不要任务栏的,该怎么办?
- 兄弟们快来呀,这儿有delphi7可免费download
- 记录集传递显示问题。请帮忙,解决定有高分相送。应该不是难的,可是我比较笨!!!
- 我有一个进销存软件的开发项目(准备外包),请各位开价。
- 誰能提供一個帶源碼的屏保網址?
- 如何在软件中实现"在线智能升级",请给出源码
- D7新建中的Multitier下的Remote Data Module和Transactional Data Module主要有什么区别
WM_QUERYENDSESSION
nSource = (UINT) wParam; // source of end-session request
fLogOff = lParam // logoff flag
Parameters
nSource
Reserved for future use.
fLogOff
Value of lParam. Indicates whether the user is logging off or shutting down the system. Supported values include: ENDSESSION_LOGOFF.
Return Values
If an application can terminate conveniently, it should return TRUE; otherwise, it should return FALSE.
当执行exitwindows函数时
它会发送一个WM_QUERYENDSESSION消息给所有正在运行的程序。
var EWX_SHUTDOWN,EWX_FORCE:integer;
VerInfo: TOSVersionInfo;
hToken: THANDLE;
tkp: TOKEN_PRIVILEGES;
Nothing: Cardinal;begin
EWX_SHUTDOWN:=1;
EWX_FORCE:=4;begin
VerInfo.dwOSVersionInfoSize := SizeOf(VerInfo);
GetVersionEx(VerInfo);
if VerInfo.dwPlatformId = VER_PLATFORM_WIN32_NT 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, 0, nil, Nothing);
end;
ExitWindowsEx(EWX_FORCE + EWX_SHUTDOWN + EWX_POWEROFF, 0);
end;EXITWINDOWSEX(EWX_POWEROFF,0);
EXITWINDOWSEX(EWX_FORCE OR EWX_SHUTDOWN,0);
end;