社区
VCL组件使用和开发
帖子详情
如何用BCB控制电脑强行关机?
aivinok
2003-05-27 09:05:42
如何用BCB控制电脑强行关机?
有程序吗?写下来看看..急.
...全文
118
17
打赏
收藏
如何用BCB控制电脑强行关机?
如何用BCB控制电脑强行关机? 有程序吗?写下来看看..急.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
aivinok
2003-05-30
打赏
举报
回复
我有一个问题:我现在学C++builder有2个月了。我发现学这个工具的书籍很少。和以后的发展。。请问要不要转学其它工具?例如delpi 或C#
thingking
2003-05-29
打赏
举报
回复
呵呵
godtorch
2003-05-28
打赏
举报
回复
GZ
dolphin2001
2003-05-28
打赏
举报
回复
察看MSDN,里面讲的好详细
zywx
2003-05-27
打赏
举报
回复
DateTimeToStr(DateTimePicker4->DateTime)==DateTimeToStr(Now()
不准确,计算机很容易错过这个时间,最好有个范围
aivinok
2003-05-27
打赏
举报
回复
//我写的这个,看那里有问题
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
CheckBox1->Checked=false;
//初始设置为不可访问
CheckBox1->Enabled=false;
DateTimePicker4->DateTime=Now();
DateTimePicker3->DateTime=Now();
DateTimePicker2->DateTime=Now();
//用系统时间初始化组件
DateTimePicker1->DateTime=Now();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
DateTimePicker2->DateTime=Now();
//接收当前日期和时间,用于即时显示
DateTimePicker1->DateTime=Now();
//随时检测设定的关机日期和时间是否有效
if(DateTimePicker4->DateTime < Now())
{
CheckBox1->Checked=false;
//无效时不可访问
CheckBox1->Enabled=false;
}
else
CheckBox1->Enabled=true; //有效时可以访问
if(CheckBox1->Checked==true&&DateTimeToStr(DateTimePicker4->DateTime)==DateTimeToStr(Now()))
{//判断定时关机条件是否满足
//DWORD tmp;
//调用Win API函数关闭计算机
//ExitWindowsEx(EWX_SHUTDOWN,tmp);
//UINT flags;
//flags=EWX_FORCE;
//DWORD tmp;
//ExitWindowsEx(EWX_SHUTDOWN,tmp);
// ExitWindowsEx(EWX_POWEROFF,0);
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if(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_POWEROFF,0);
//Timer1->Enabled=false;
}
}
TDateTime presetDateTime,currentDateTime;
presetDateTime=DateTimePicker3->DateTime;
currentDateTime=Now();
//得到时间差(秒数)
Edit1->Text=int((presetDateTime.Val-currentDateTime.Val)*60*60*24);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DateTimePicker3Change(TObject *Sender)
{
DateTimePicker4->DateTime=DateTimePicker3->DateTime;
//检测设置的日期是否有效
if(DateTimePicker4->DateTime < Now())
{
CheckBox1->Checked=false;
CheckBox1->Enabled=false;
}
else
CheckBox1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DateTimePicker4Change(TObject *Sender)
{
DateTimePicker3->DateTime=DateTimePicker4->DateTime;
//检测设置的时间是否有效
if(DateTimePicker3->DateTime < Now())
{
CheckBox1->Checked=false;
CheckBox1->Enabled=false;
}
else
CheckBox1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD tmp;
ExitWindowsEx(EWX_SHUTDOWN,tmp);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if(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_POWEROFF,0);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
DWORD tmp;
ExitWindowsEx(EWX_LOGOFF,tmp);
}
//---------------------------------------------------------------------------
zywx
2003-05-27
打赏
举报
回复
sorry 还有把第一句去掉,呵呵,太马虎了
zywx
2003-05-27
打赏
举报
回复
sorry
ExitWindowsEx(1 | EWX_FORCE, 0); 改为
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);
zywx
2003-05-27
打赏
举报
回复
试一试这个吧 98 2000通用
OnCloseQuery=NULL;
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(1 | EWX_FORCE, 0);
break;
ziyue
2003-05-27
打赏
举报
回复
直接关掉进程就行了。。
aivinok
2003-05-27
打赏
举报
回复
csuzz(陈靖仇) 你的程序也是运行后没有反应的.
aivinok
2003-05-27
打赏
举报
回复
注消
DWORD tmp;
ExitWindowsEx(EWX_LOGOFF,tmp);
上面这个运行成功了.....但是,还有关机和重启的怎么运行不成功呀?
csuzz
2003-05-27
打赏
举报
回复
2K,xp下要取得权限
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
switch (RadioGroup1->ItemIndex)
{
case 0 :
ExitWindowsEx(EWX_LOGOFF, 0);break;
case 1 :
if (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_SHUTDOWN|EWX_POWEROFF, 0);
}
break;
case 2 :
if (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_REBOOT, 0);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
{
switch (RadioGroup1->ItemIndex)
{
case 0 :
Label2->Caption="结束回话,在完全耗电状态下运行计算机。";break;
case 1 :
Label2->Caption="结束回话并关闭Windows。这样就可以安全的关掉电源了";break;
case 2 :
Label2->Caption="结束回话,关闭Windows,重新启动Windows。";
}
}
aivinok
2003-05-27
打赏
举报
回复
我是这样子的,但是也不行.没有反应.
DWORD tmp;
ExitWindowsEx(EWX_SHUTDOWN,tmp);
编译失败
2003-05-27
打赏
举报
回复
關机
DWORD tmp;
ExitWindowsEx(EWX_SHUTDOWN,tmp);
重起
DWORD tmp;
ExitWindowsEx(EWX_REBOOT,tmp);
注消
DWORD tmp;
ExitWindowsEx(EWX_LOGOFF,tmp);
aivinok
2003-05-27
打赏
举报
回复
DWORD tmp;
//调用Win API函数关闭计算机
ExitWindowsEx(EWX_SHUTDOWN,tmp);
这样子怎么不行?
wangjin0325
2003-05-27
打赏
举报
回复
void_fastcall TForm1::Button1Click(TObject*Sender)
{
UINT flags;
flags=EWX_SHUTDOWN;
ExitWindowsEx(flags,0);
}
(01)C++ builder之自动
关机
欢迎各地朋友加入我的QQ群484979943,进群密码“
BCB
”,同时也请将该群号广为宣传,希望能够广集各方高手,共同进步。如需下载开发工具及源代码请加入我的QQ群)【阅读倡议】1、有问题请留言;2、没问题请点赞;3、看...
常用
电脑
资料速查
总目录1.《BIOS报警声意义》2.《BIOS自检与开机故障相关问题》3.《计算机几个常见指标的意义》4.《显卡GPU参数和比较[转译]》5.《显示卡常见故障全面解决》6....《
电脑
重启故障》13.《光驱常见故障》14.《显示器抖
木马是如何编写的
文章作者:武汉 周侃信息来源:第八军团特洛依木马这个名词大家应该不陌生,自从98年“死牛崇拜... 我那时在《
电脑
报》上看到一篇文章,大意是一个菜鸟被人用BO
控制
了,吓得整天吃不下饭、睡不着觉、上不了网,到处求
iOS开发-小白(新手)必看,基础常识
快速浏览大纲 Mac & OS X App Store、iTunes Store、iTunes、Apple Store 这些名称 常用的快捷键 Multi-Touch 触控板手势 ...Mac 需要
关机
吗? 推荐常用基本软件 结尾 ------------
木马入门
木马是如何编写的(一) 特洛依木马这个名词大家应该不陌生,自从98年“死牛崇拜”黑客小组... 我那时在《
电脑
报》上看到一篇文章,大意是一个菜鸟被人用BO
控制
了,吓得整天吃不下饭、睡不着觉、上不了网,到处求救!
VCL组件使用和开发
604
社区成员
13,460
社区内容
发帖
与我相关
我的任务
VCL组件使用和开发
C++ Builder VCL组件使用和开发
复制链接
扫一扫
分享
社区描述
C++ Builder VCL组件使用和开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章