国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

用BCB實(shí)現(xiàn)禁止用戶關(guān)閉Window系統(tǒng)

2019-11-17 05:30:02
字體:
供稿:網(wǎng)友

  在軟件的安裝或演示操作等過程中,假如關(guān)閉Windows系統(tǒng)會(huì)產(chǎn)生嚴(yán)重的后果,就必須禁止用戶關(guān)閉Windows,直到完成相應(yīng)的操作,那么如何才能禁止用戶關(guān)閉Windows呢?其實(shí)很簡單,當(dāng)用戶關(guān)閉Windows時(shí),系統(tǒng)會(huì)發(fā)送給各應(yīng)用程序一個(gè)消息WM_QUERYENDsession,告訴各應(yīng)用程序要關(guān)機(jī)了,假如反饋回來的消息值為0,那么Windows就不能關(guān)機(jī)。因此,截獲WM_QUERYENDSESSION,并反饋回0,大功就告成了,下面是一個(gè)例子。

    在下面這個(gè)例子中,我們?cè)诖绑w中加入一個(gè)復(fù)選框(TCheckBox),假如用戶不選中它,則無法關(guān)閉Windows,假如選中它,才可以關(guān)閉。在實(shí)際應(yīng)用中,用戶可首先設(shè)定一個(gè)布爾變量,當(dāng)所需的作操都完成后,使其值變化,當(dāng)程序檢測到這個(gè)變量的值變化后才答應(yīng)關(guān)閉Windows。為方便大家使用,給出窗體的完整代碼(很短):

在.hpp中的PRivate段內(nèi)加入以下代碼:
//截獲 WM_QUERYENDSESSION 消息。
BEGIN_MESSAGE_MAP
   MESSAGE_HANDLER(WM_QUERYENDSESSION,TMessage,OnWMQueryEndSession)
END_MESSAGE_MAP(TForm);
void __fastcall TForm1::OnWMQueryEndSession(TMessage &Message);

在.cpp中添加以下代碼:

void __fastcall TForm1::OnWMQueryEndSession(TMessage &Message)
{
  //假如CheckBox被選中,答應(yīng)關(guān)機(jī)。
  if(CheckBox1->Checked)
    Message.Result=1;
  else
    Message.Result=0;
}

----運(yùn)行上面的程序,首先不要選中復(fù)選框,在Windows的“開始”菜單中選擇“關(guān)閉系統(tǒng)-->關(guān)閉計(jì)算機(jī)或重新啟動(dòng)計(jì)算機(jī)”,你將發(fā)現(xiàn)屏幕閃爍了一下又恢復(fù)了正常;將復(fù)選框選中,再關(guān)閉計(jì)算機(jī),這下就可如愿了。

----程序調(diào)試環(huán)境:C++ Builder 6.0 + sp3
                  windows 2000 ADV Server + sp3



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 秭归县| 铁力市| 扶风县| 左云县| 阿拉善右旗| 闸北区| 南昌市| 汝城县| 遵义市| 盐边县| 黔江区| 大渡口区| 平远县| 中山市| 邵东县| 鹿邑县| 响水县| 财经| 蓝山县| 枣强县| 茂名市| 达日县| 怀远县| 泽普县| 肥西县| 石首市| 原阳县| 历史| 汾阳市| 阳东县| 巴彦淖尔市| 镇安县| 广安市| 贞丰县| 梁平县| 塘沽区| 泸水县| 舒兰市| 仙居县| 东乌珠穆沁旗| 南投市|