一、重启PPC
ExitWindowsEx(2,0); (注意在Uses中必须加入aygshell,否则不能调用,为这个我找了好久的资料)
二、休眠
最简单,直接调用 GwesPowerOffSystem;
三、关屏,比较复杂一些,提供一段完整代码
procedure TForm1._OffScreenClick(Sender: PObj);
Const
QUERYESCSUPPORT=8;
SETPOWERMANAGEMENT=6147;
//GETPOWERMANAGEMENT=6148;
Var
fQueryEsc,rc:Integer;
_hdc:HDC;
vpm:VIDEO_POWER_MANAGEMENT;
begin
//关闭屏幕
_hdc := GetDC (NULL);
fQueryEsc:= SETPOWERMANAGEMENT;
rc:= ExtEscape(_hdc,QUERYESCSUPPORT,sizeof(fQueryEsc),PAnsiChar(@fQueryEsc),0,0);
if (rc = 0) then
ReleaseDC (NULL, _hdc);
vpm.Length := sizeof (vpm);
vpm.DPMSVersion := 1;
vpm.PowerState := Ord(VideoPowerOff);
rc:= ExtEscape(_hdc, SETPOWERMANAGEMENT,sizeof(vpm), @vpm, 0, 0)
ReleaseDC (NULL, _hdc);
//退出程序
Form.Close;
end;
第一次用Lazarus+kol-ce编程,很多东西和DELPHI完全不一样,而且用KOL必须用其自身提供的函数,而不能用FreePascal标准函数,难度要大多了,不过为了程序最精简化,也值了,基本是用API在开发了