1. 程式人生 > >Delphi 訊息攔截篇 -- 之攔截系統關機、重啟、登出

Delphi 訊息攔截篇 -- 之攔截系統關機、重啟、登出

最近做的專案中需要攔截系統關機,因為我在FormCloseQuery中總是把CanClose設為False,不攔截關機的話直接導致系統中的關機、重啟、登出都失效了!導致使用者不能關機!(提示使用者說要關機的話直接按電源^^)這樣肯定是不行的!

要完成這個功能只需要攔截到WM_QUERYENDSESSION訊息就萬事Ok!

關鍵在於怎麼在Delphi下攔截WM_QUERYENDSESSION訊息呢?Delphi也是很強悍的,當然不用直接去SetWindowLong了。

好了不廢話了,部落格的第一篇文章就開始啦!

首先介紹一下Delphi中攔截訊息的幾種做法

第一種:自定義處理單條訊息

第二種:利用Application.OnMessage處理訊息

第三種:自己處理視窗函式,個人感覺這是最強大的,可以攔截一切發往視窗的訊息!

經過再次測試,只有Application.OnMessage不能攔截WM_QUERYENDSESSION訊息!還有,有時候Delphi的一些控制元件也會導致不能正確攔截,今天測試了一晚上了。。--|,總算解決了這個問題!!

好了,本文到此結束。由於在做這個功能的時候遇到了一些低階問題^^,所以馬上在部落格上記錄一下,2點了啊!睡覺去,明天爭取把專案全部完成!加油!!!