螢幕保護程式工具模組

設定螢幕保護程式開始
檢查螢幕保護程式密碼對話盒
執行螢幕保護程式
引用本網頁內容的執行範例
設定螢幕保護程式結束
取得螢幕保護程式的檔名
檢查螢幕保護程式是否正在執行中

說明:

本來沒空寫這篇的,不過一直有網友寫信來問如何支援 Windows 的螢幕保護程式密碼保護 (Screen Saver Password) ,只好乖乖的寫這篇,免得一直回信回不完

設定螢幕保護程式開始

函數名:myScreenSaverStart

說明:這個函數的目的只是當螢幕保護程式開始時,應該讓作用視窗顯示在最上層,並且讓 Ctrl+Alt+Del 等相關功能鍵失效,所以沒什麼特別的部分,本函數需參照視窗工具模組設定程式在最頂端

引數 類型 說明
hWnd 必要 作用中視窗代碼

範例:

myScreenSaverStart Me.hWnd

設定螢幕保護程式結束

函數名:myScreenSaverEnd

說明:這個函數為上一函數的反函數,目的是解除 Ctrl+Alt+Del 等相關功能鍵失效狀態,所以沒什麼特別的部分,若有呼叫 myScreenSaverStart ,強烈建議程式結束前,呼叫本函數以解除 Ctrl+Alt+Del 等相關功能鍵失效狀態

範例:

myScreenSaverEnd

檢查螢幕保護程式密碼對話盒

講這個函數我就不得不廢話一點了,這個函數是在 MSDN 中都沒有記載的,是璉璉的秘技,那或許有網友要問,那璉璉是怎麼知道的呢?那是因為我用土法煉鋼的方法,對 Windows 目錄下所有檔做 16 進位搜尋,把所有相關函數名硬是抓出來,再根據我對 DLL 檔結構的了解,確認引數的位元組,並猜了幾次引數內容掰對的

函數名:myVeriftyScreenSaverPassword,檢查螢幕保護程式密碼對話盒,正確傳回 True ,錯誤傳回 False

引數 類型 說明
hWnd 必要 作用中視窗代碼

範例:

If myVeriftyScreenSaverPassword(Me.hWnd) Then
 myScreenSaverEnd
 Unload Me
End If

說明:

使用前請確定你有設螢幕保護程式密碼,若沒有設定,則傳回值永遠為真 (True)

取得螢幕保護程式的檔名

函數名:myGetScreenSaverFileName,取得螢幕保護程式的檔名,本函數不需引數

範例:

Debug.Print myGetScreenSaverFileName
' 傳回 C:\WINDOWS\SYSTEM\Flying Through Space.scr

說明:

使用前請確定你有設螢幕保護程式密碼,若沒有設定,則傳回值為空字串,本函數需引用註冊資訊相關內容

執行螢幕保護程式

函數名:myScreenSaverRunning,執行螢幕保護程式,無傳回值

範例:

myScreenSaverRunning

說明:

本函數由取得螢幕保護程式的檔名函數啟動,使用前請確定你有設螢幕保護程式密碼,若沒有設定,則不啟動

檢查螢幕保護程式是否正在執行中

函數名:IsScreenSaverRunning,檢查螢幕保護程式是否正在執行中,執行中傳回 True ,未執行傳回 False

範例:

Debug.Print IsScreenSaverRunning

說明:

本函數由取得螢幕保護程式的檔名函數判定,使用前請確定你有設螢幕保護程式密碼,若沒有設定,傳回值永遠為否 (False),另本函數亦引用了視窗工具相關內容,使用時請一併引用!目前尚未進行 Windows NT 的測試,哪位朋友測過後請告訴我

引用本網頁內容的執行範例

經運用本文內容後,完成的螢幕保護程式並支援 Windows 內建密碼保護功能

轉載 MSDN 文章

本資訊版權屬 Microsoft 所有,文章是 MSDN 裡的,我只是抓回來自己參考並提供網友參考螢幕保護程式