如何实现定时关机,如晚上10:00关机,以后机器运行到此时就强制关机。并且用户看不到程序的运行,和一个隐藏的进程一样。谢谢
解决方案 »
- 本人有一个delphi开发应用程序,因为换了重装系统,程序无法登录进入,请求高手解决,有一定的金钱被偿,限深圳特区内,有意者请加qq:38128151
- 关于指针,对象的问题,还是很不清楚,有谁能详细说明一下?
- 请问在用fastreport时,如何根据Memo的字段长度动态更改MasterData的高度?
- DBCombobox问题。
- 这个TADOTabel怎么了?
- DBGRID 中录入或者修改数据的问题
- 想兼职,谁要人?
- 有什么办法可以实现,对一个已经打开的页面实现自动的将文件保存下来
- PageControl1的TabSheet1标题的颜色好像改不了嘛?
- delphi6 调用 Axis1.4 for Java 开发的Web Services
- 大家讨论一下,borland 的delphi里的帮助怎么做得那么烂呢,跟vb得简直有天壤之别
- 中国有多少贫困人口?城镇低保人数7年增10倍
var
hProcess,hAccessToken:THandle;
LUID_AND_ATTRIBUTES:TLUIDAndAttributes;
TOKEN_PRIVILEGES: TTokenPrivileges;
BufferIsNull:DWORD;
Const
SE_SHUTDOWN_NAME='SeShutdownPrivilege';
begin
hProcess:=GetCurrentProcess();OpenProcessToken(hprocess,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,hAccessToken);
LookupPrivilegeValue(Nil,SE_SHUTDOWN_NAME,LUID_AND_ATTRIBUTES.Luid);
LUID_AND_ATTRIBUTES.Attributes:=SE_PRIVILEGE_ENABLED;
TOKEN_PRIVILEGES.PrivilegeCount:=1;
TOKEN_PRIVILEGES.Privileges[0]:=LUID_AND_ATTRIBUTES;
BufferIsNull:=0;AdjustTokenPrivileges(hAccessToken,False,TOKEN_PRIVILEGES,sizeof(TOKEN_PRIVI
LEGES),Nil,BufferIsNull);
ExitWindowsEx(EWX_REBOOT, 0);
ShutDownSystem:=True;
end;
做个程序加到计划任务中,或者在程序中用定时器检测时间,到时执行上面的代码
ExitWindowsEx(EWX_Shutdown, 0);
^^^^………………………………
…………………………
到时用 ExitWindowsEx(EWX_FORCE+EWX_SHUTDOWN,64)可以强制关闭,我在后面那个数字为0是出现了问题,所以用64或其它数字,自己试一下吧.在WIN2000下就参考 :galeboy(狂风)
要隐藏程序就不是那么简单,反正你也要让程序自动运行,就放在注册表的RunServices里
SetPriorityClass(GetCurrentProcess,REALTIME_PRIORITY_CLASS);
Form1.Visible:=false;
看不到程序,你把工程文件在保存为什么SYSTEMN这样就更吓唬人了.
ExitWindowsEx(EWX_FORCE+EWX_SHUTDOWN,38)
{
DWORD dwVersion = GetVersion();
if (dwVersion < 0x80000000) // Windows XP or2000
{
HANDLE hProcess,hToken;
TOKEN_PRIVILEGES Privileges;
LUID luid;
hProcess=GetCurrentProcess();
OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&hToken);
Privileges.PrivilegeCount=1;
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid);
Privileges.Privileges[0].Luid=luid;
Privileges.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&Privileges,NULL,NULL,NULL);
//ExitWindowsEx(EWX_POWEROFF, 0);
}
if(RadioGroup2->ItemIndex==1)//选注销
ExitWindowsEx(EWX_LOGOFF,0);
else if(RadioGroup2->ItemIndex==0)//选关机
ExitWindowsEx(EWX_SHUTDOWN,0);
else if(RadioGroup2->ItemIndex==2)//选重起
ExitWindowsEx(EWX_REBOOT,0);
else if(RadioGroup2->ItemIndex==3)//启动定时关机.
Form2->Timer->Enabled=true;
}
//---------------------------------------------
void __fastcall TForm2::Timer1Timer(TObject *Sender)
{
StatusBar->Panels->Items[1]->Text=TimeToStr(Time());
if(StatusBar->Panels->Items[1]->Text="10:00:00";
ExitWindowsEx(EWX_SHUTDOWN,0);
}这是我自己实现过的程序的部分代码,该了一点,如果你要实现定时关机的灵动性的话
就要将Timer1Timer()重新写过.让时间可以自己输入,我做过,但代码不知道那里去来.
有问题跟我联系,[email protected]
ExitWindowsEx(EWX_Shutdown, 0);win2000没有试过。