怎样在C++Builder做一个关机程序?

特招 2004-03-26 03:07:04
怎样在C++Builder做一个关机程序?

我在CB中做了一个注销的程序,可以运行
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD temp;
ExitWindowsEx(EWX_LOGOFF,temp);
}
为什么用同样的方法做了个关机的程序就不行了呢?(运行时,点击按钮没有反应)
void __fastcall TForm1::Button3Click(TObject *Sender)
{
DWORD temp;
ExitWindowsEx(EWX_SHUTDOWN,temp);
}
请多多指点!
祝各位天天都有好心情!
...全文
64 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BeRoy 2004-03-29
  • 打赏
  • 举报
回复
对头,xp要权限,98不用。
特招 2004-03-27
  • 打赏
  • 举报
回复
我的操作系统XP
WbtServer 2004-03-26
  • 打赏
  • 举报
回复
这个方法跟你的操作系统有关系.
fjye 2004-03-26
  • 打赏
  • 举报
回复
你的问题应该是没有取得根用户的权限
fjye 2004-03-26
  • 打赏
  • 举报
回复
源碼任務心得分享 : 以程式控制 Windows 2000 關機
以程式控制 Windows 2000 關機

//-------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
&hToken);

LookupPrivilegeValue(null, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,
false,
&tkp,
0,
(PTOKEN_PRIVILEGES)null,
0);

// 下面八個動作中任選一種執行 ....

// 一般關閉,關閉前會詢問其它執行中的程式是否存檔
//ExitWindowsEx(EWX_LOGOFF,0); // 登出, 重新登入使用者
//ExitWindowsEx(EWX_REBOOT,0); // 重新開機
//ExitWindowsEx(EWX_SHUTDOWN,0); // 結束作業系統,出現"您可以放心關機畫面"
//ExitWindowsEx(EWX_POWEROFF,0); // 結束作業系統,並關閉電源(僅支援ATX 規格)

// 強制關閉,其它執行中的應用程式資料並不會被儲存
//ExitWindowsEx(EWX_LOGOFF | EWX_FORCE,0); // 登出, 重新登入使用者
//ExitWindowsEx(EWX_REBOOT | EWX_FORCE,0); // 重新開機
//ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,0); // 結束作業系統
//ExitWindowsEx(EWX_POWEROFF | EWX_FORCE,0); // 結束作業系統,並關閉電源 (僅支援ATX 規格)
}

以上代码来自中国BCB论坛

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧