給電腦裝個監視器
發表于:2007-07-14來源:作者:點擊數:
標簽:
當你不在你的機器旁邊時,你是否會擔心有人在你的機器上運行了程序,給你的機器帶來損壞;或有小孩子在你的電腦上“胡鬧”。你是否想到設計一個監視系統的程序,可以發現有人在你的機器上運行了哪些不當的程序,或當有小孩子在你的機器上玩 游戲 時,立刻強
當你不在你的機器旁邊時,你是否會擔心有人在你的機器上運行了程序,給你的機器帶來損壞;或有小孩子在你的電腦上“胡鬧”。你是否想到設計一個監視系統的程序,可以發現有人在你的機器上運行了哪些不當的程序,或當有小孩子在你的機器上玩
游戲時,立刻強制關閉游戲。讀完了本文,你就可以著手去做了。
一、設置 OnTimer 事件
要實現監視系統,首先要實現的是 OnTimer 事件,就是要程序每隔一段時間去“檢查”一下當前系統中有哪些程序在運行。
你可裝載 Timer 控件,設置 Interval 屬性為“60000”
這樣系統差不多會每隔1分鐘就會“檢查”一下當前系統有哪些程序正在運行。
如果你覺得間隔時間太短,可以改用如下代碼:
Private Sub Timer1_Timer()
Dim n As Integer
n = n + 1
If n = 2 Then″檢查″ ′這里設置為2分鐘,你可自己改
End Sub
二、監視系統的運行
接下來的問題是怎樣去“檢查”當前系統中有哪些程序在運行。
方法一:我們知道,Windows 程序基本上都是以窗口的形式運行的,每個程序都對應一個主窗口和若干子窗口,我們只要用 API函數 GetWindow 獲取每個程序的主窗口的句柄 HWND,接著用 API 函數 GetWindowText 得到這些窗口的標題,就可以判斷到底是哪些程序在運行了。
方法二:使用 API 函數 FindWindow 直接查找
我們這里就用方法二(比較簡單)。
三、關閉程序
發現不適當的程序,關閉它,可以用 API 函數 PostMessage。
四、程序示例
下面給出一個實例,它是用 VB 5.0 編制而成的。本程序每隔 2 分鐘“檢查”一下窗口。如果運行的是“掃雷”、“紅心大戰”等游戲,就強行關閉它,并發出警告。具體程序代碼如下:
1、建立基于對話框的應用程序,標題為“系統監視器”,裝載 2 個 CommandButton 控件,Caption 屬性分別為:“開始監視”、“程序結束”。
2、首先聲明API 函數 FindWindow 及程序所需要的各變量
Private Declare Function FindWindow Lib ″user32″ Alias ″FindWindowA″(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib ″user32″ Alias″PostMessageA″ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const WM-CLOSE = &H10
Const WM-QUIT = &H12
Dim Handle As Integer
Dim n As Integer
3、定義關閉程序窗口的子程序
Sub CloseWin() ′關閉指定窗口
Dim WinText(1 To 3) As String
Dim i As Integer
WinText(1) = ″掃雷″
′關閉下面的3個游戲,各位可以自己定義,不過程序窗口的標題一定要對,不然程序是不會被關閉的。
WinText(2) =″Microsoft 網上紅心大戰″
WinText(3) = ″紙牌″
For i = 1 To 3
Handle = FindWindow(
vbNullString, WinText(i))
PostMessage Handle, WM-CLOSE, 0, 0
Next
If Handle <> 0 Then MsgBox ″呵呵,你又在偷玩游戲″
End Sub
最后的補充:如果想要做一個非常完整的系統監視程序,那么你可要花些時間了。
第1步:首先,修改注冊表,在計算機啟動時就運行本程序,并且不能關閉。
第2步:要調用 API 函數使本程序更隱蔽些。
第3步:還需要隨時修改檢測的“窗口標題”,當有人運行游戲程序時,把他玩游戲開始時間和玩得什么游戲,保存到文件中去等等功能。
本程序用 VB 5.0 編譯通過,在中文 Windows 98 環境下運行良好 。
原文轉自:http://www.anti-gravitydesign.com