VB鍵盤鼠標(biāo)無動(dòng)作調(diào)用程序的嘗試
我想要實(shí)現(xiàn)的功能是,當(dāng)鍵盤無輸入、鼠標(biāo)無移動(dòng)或點(diǎn)擊動(dòng)作時(shí)調(diào)用程序。首先想到的是用鉤子HOOK來獲取鍵盤或者鼠標(biāo)的動(dòng)作,如果無動(dòng)作時(shí)調(diào)用程序。我嘗試的結(jié)果是HOOK來HOOK去總是有問題。
后來想到Windows的屏幕保護(hù)程序就是當(dāng)鍵盤鼠標(biāo)無動(dòng)作時(shí)進(jìn)入屏幕保護(hù)的,于是改變思路,想把程序做成這樣的形式,鍵盤鼠標(biāo)無動(dòng)作,系統(tǒng)進(jìn)入屏幕保護(hù),然后檢測(cè)系統(tǒng)是否運(yùn)行屏幕保護(hù)程序,如果運(yùn)行的話則調(diào)用程序。這種方式就是以屏幕保護(hù)程序作為中介,把檢測(cè)鍵盤鼠標(biāo)動(dòng)作的工作交給屏幕保護(hù)程序來完成了。SystemParametersInfo可以實(shí)現(xiàn)獲取屏幕保護(hù)信息的函數(shù)。參考代碼如下:
'API調(diào)用與常用定義: Private Declare Function SystemParametersInfo _ Lib "user32" _ Alias "SystemParametersInfoA" _ (ByVal uiAction As Long, _ ByVal uiParam As Long, _ pvParam As Any, _ ByVal fWInIni As Long) As Boolean Private Const SPI_GETSCREENSAVEACTIVE As Long = &H10 '屏保是否啟用的常量 Private Const SPI_GETSCREENSAVERRUNNING As Long = &H72 '屏保是否運(yùn)行的常量 Private Sub Timer1_Timer() Dim bRunning As Boolean '屏保是否運(yùn)行的變量,當(dāng)然你可以定義全局變量 SystemParametersInfo SPI_GETSCREENSAVERRUNNING, 0, bRunning, False '調(diào)用API,bRunning返回屏保運(yùn)行狀態(tài) Debug.Print Time; "屏保運(yùn)行="; bRunning '演示:打印屏保是否運(yùn)行的信息 End Sub '另外,查看屏保是否啟用,也可以用下面方法: SystemParametersInfo SPI_GETSCREENSAVEACTIVE, 0, bActive, False 'bActive為返回值(邏輯型)
可是不知道為什么我在WIN7下調(diào)試還是有問題,提示SystemParametersInfo SPI_GETSCREENSAVERRUNNING, 0, bRunning, False
中的bRunning類型錯(cuò)誤,只能作罷。
最后來說一下最終實(shí)現(xiàn)的方案是使用GetLastInputInfo函數(shù)獲取系統(tǒng)的空閑時(shí)間,參考代碼如下:
Option Explicit Private Declare Function GetLastInputInfo Lib "user32" (plii As LASTINPUTINFO) As Boolean Private Declare Function GetTickCount Lib "kernel32" () As Long Private Type LASTINPUTINFO cbSize As Long dwTime As Long End Type Private Sub Form_Load() Timer1.Interval = 1000 End Sub Private Sub Timer1_Timer() Dim lii As LASTINPUTINFO lii.cbSize = Len(lii) If GetLastInputInfo(lii) Then If (GetTickCount - lii.dwTime) / 60000 >= 15 Then Call MsgBox("由于本機(jī)15分鐘沒有操作,如果3分鐘后沒有反應(yīng),系統(tǒng)將強(qiáng)制關(guān)機(jī)", vbYesNo + vbExclamation + vbDefaultButton2, "提示") End If End If End Sub
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
上一篇:VBS腳本寫的Windows硬件檢測(cè)工具分享
欄 目:vb
本文標(biāo)題:VB鍵盤鼠標(biāo)無動(dòng)作調(diào)用程序的嘗試
本文地址:http://mengdiqiu.com.cn/a1/vb/7187.html
您可能感興趣的文章
- 01-10用vbs實(shí)現(xiàn)配置無人登錄計(jì)算機(jī)時(shí)使用的屏幕保護(hù)程序
- 01-10vbs屏蔽鍵盤按鍵
- 01-10vbs實(shí)現(xiàn)無黑框無DOS窗口隱藏批處理運(yùn)行窗口
- 01-10vbs SendKey 用法 Sendkey 鍵盤對(duì)應(yīng)的碼表
- 01-10Windows 安裝IIS出現(xiàn)的問題(無法安裝IIS,提示“安裝程序無法復(fù)
- 01-10VBS 腳本不能運(yùn)行 提示W(wǎng)indows無法訪問指定設(shè)備路徑或文件
- 01-10用VBS實(shí)現(xiàn)一個(gè)小鍵盤動(dòng)作CTRL+V粘貼操作與思路分析
- 01-10用VBS控制鼠標(biāo)的實(shí)現(xiàn)代碼(獲取鼠標(biāo)坐標(biāo)、鼠標(biāo)移動(dòng)、鼠標(biāo)單擊
- 01-10VBS獲取文件MD5值(無組件)
- 01-10VB實(shí)現(xiàn)鼠標(biāo)繪圖實(shí)例代碼


閱讀排行
- 1C語言 while語句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語法速查及實(shí)例說明
隨機(jī)閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實(shí)例總結(jié)