如何实现定时关机的程序 同上 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TTime+關機函數自己找一下看看 使用BOOL SetWindowExtEx就可以了。 程序中设个定时器,关机代码如下BOOL MyExitWindowsEx(UINT uFlag){ OSVERSIONINFO osv; //定义一个操作系统信息的结构体 osv.dwOSVersionInfoSize=sizeof OSVERSIONINFO; GetVersionEx(&osv); //查询当前操作系统 if(osv.dwPlatformId==VER_PLATFORM_WIN32_NT) //判断是否是2000/NT {//下面为向操作系统获取权限操作 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(uFlag,0);} //--------------------------------------------win2000关机代码:var VerInfo: TOSVersionInfo; hToken: THANDLE; tkp: TOKEN_PRIVILEGES; Nothing: Cardinal;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;//--------------win95/98procedure ExitWin9895(EWX: integer); begin ExitWindowsEx(EWX, 0); end; To joky1981() 你能把源码也给我一份吗?我的邮件[email protected]谢谢了! 我直接调用了ExitWindowsEx函数,用ExitWindowsEx(0,0);只是注销用户,到help中查找ExitWindowsEx的用法,也无说明,不知这个函数内的参数都如何写,关机的如何写 在Win9x 下比较容易实现,但在win2000下却不听话了,WinNT和XP下我没试过,不知怎样 ExitWindowsEx函数只能在WIN98下支持用在2000&xp下用要先获得相应权限才能有效CQP(我生活着,存在的意义还未找到。) 已经写了 delphi 调用webservices 问题! 保存多个文件,可以像数据库那样有回滚功能吗? TFileStream文件的读取 帮忙看个例子 WORD表格问题 大难题?苦恼中... 有关报表显示的问题? 大家帮个忙---关于2000下打印的问题 //=====关于Query的多表查询与更新====== 急! 如何关闭运行SQL时的砂漏CURSOR,或如何使控件根据数据库中的数值实时变化。 SQL语句到底出了什么问题? ADO能否连接dbase 5数据表?
自己找一下看看
{
OSVERSIONINFO osv; //定义一个操作系统信息的结构体
osv.dwOSVersionInfoSize=sizeof OSVERSIONINFO;
GetVersionEx(&osv); //查询当前操作系统
if(osv.dwPlatformId==VER_PLATFORM_WIN32_NT) //判断是否是2000/NT
{//下面为向操作系统获取权限操作
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(uFlag,0);
}
win2000关机代码:var
VerInfo: TOSVersionInfo;
hToken: THANDLE;
tkp: TOKEN_PRIVILEGES;
Nothing: Cardinal;
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;
//--------------win95/98
procedure ExitWin9895(EWX: integer);
begin
ExitWindowsEx(EWX, 0);
end;
你能把源码也给我一份吗?我的邮件[email protected]谢谢了!
用ExitWindowsEx(0,0);只是注销用户,
到help中查找ExitWindowsEx的用法,也无说明,
不知这个函数内的参数都如何写,
关机的如何写
用在2000&xp下用要先获得相应权限才能有效
CQP(我生活着,存在的意义还未找到。) 已经写了