500分求未登陆就可以使用的定时关机程序 ( 积分: 200 )

  • 主题发起人 主题发起人 lhc4000
  • 开始时间 开始时间
L

lhc4000

Unregistered / Unconfirmed
GUEST, unregistred user!
要求:
1、启动Windows到选择用户登录界面后就开始运行定时程序,设定时间到达时能够自动关
机。
2、不要建议我登录一个用户,因为这不符合我的需求。
3、请提供源码

余下的300分,程序经验证可行后另开帖付
 
做成服务程序就OK了。
 
请高手提供一下源码
 
写成驱动,完全可以解决你的问题,不过开发驱动就有点难度了哈.自己查这方面的资料,我也不会驱动的开发.
 
做成服务程序
 
做成服务程序,再通过TIME设置循环时间。
 
本人水平不高,动手能力有限,谁可以提供一个测试代码吗?
 
有个简单的方法。不用写代码。
首先:定时关机。XP自己有命令可以定时关机。举例:运行 shutdown -s -t 60 表示一分钟以后关机。泥可以做成批处理文件 AutoShutDown.bat
其次:要未登录就运行,可以做成服务类型。有个工具 叫:SRVINSTW 微软下载页面那就可下载。是用来添加删除服务的。你把这个BAT用这个工具添加成系统服务既可......

还有,好像忘掉了一样东西,控制面板中的计划任务。。。。。。
 
function TForm1.ShutDown(uFlags: Cardinal): Boolean;
const
ADJUST_PRIV = TOKEN_QUERY or TOKEN_ADJUST_PRIVILEGES;
SHTDWN_PRIV = 'SeShutdownPrivilege';
PRIV_SIZE = sizeOf(TTokenPrivileges);
var
Len: DWORD;
TokenPriv, Dummy: TTokenPrivileges;
Token: THandle;
Error: integer;
begin
Error:= 0;
// 设置特权
if not OpenProcessToken(GetCurrentProcess(), ADJUST_PRIV, Token) then
Error:= Error or 4;
if not LookupPrivilegeValue(nil, SHTDWN_PRIV, TokenPriv.Privileges[0].Luid) then
Error:= Error or 8;
TokenPriv.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
TokenPriv.PrivilegeCount:= 1; // One privilege to set
if not AdjustTokenPrivileges(Token, false, TokenPriv, PRIV_SIZE, Dummy, Len) then
Error:= Error or 16;
ExitWindowsEx(uFlags, 0);
Result:= (Error = 0);
end;

关机时只要调用函数
ShutDown(EWX_POWEROFF + EWX_FORCE);

当然要把程序设成自启动
 
to 我心蓝蓝: 你的方法可以试试。
to djrj: 你的关机代码我也有的,我原来就做了一个可用的定时关机程序,只是不能用于未登录的情形下。
 
关于 我心蓝蓝 的方法:
1、用SRVINSTW将批处理文件 AutoShutDown.bat添加成系统服务经我试验似乎是不可行的,服务启动时提示出错(因为AutoShutDown.bat本不是服务程序不能正确返回有关消息给系统)
2、用计划任务。。。。。。这是一个好方法,经试验可行。用它配合我原来做的定时关机程序很好用。在此暂记一功。

但我还是希望能实现我的要求:直接用Delphi程序实现,不管是做成服务程序(我知道Delphi可以编写服务程序的)还是用其他方法。还请其他高手抽空展现一下你们的能耐……
 
你们的方法太麻烦了,其实很简单:
1、要想未登录就能挂起,只能将程序写成服务,如何做网上搜一下,太多了,不多说了。
2、可做一个时间判断函数来确定何时关机,这也很简单,不用说了吧。还是说一下吧用DecodeDate和DecodeTime函数将年月日和时分秒拆开来判断,写到timer里这样就OK了。
3、关机代码,写多人都写的很复杂,其实只要知道“冲击波”的程序员都应该详细了解过shutdown命令吧(不知道了自己查查),再配合winexec命令,不就OK了吗?
以上方法又简单,又实用,根本写不了几行代码!
 
算了,帮你顶吧。
 
就是一个简单的服务
楼主你自己懒得动,你给200块我给你写个 (呵呵,其实我也懒 哈哈)
 
后退
顶部