发信人: yingzi007()
整理人: (2000-10-09 12:21:21), 站内信件
|
VB爱好者乐园
主力站点: http://www.d1vb.com
备用站点: http://vbvb.yes8.com
利用 窗口函数监视系统的运行情况(VB类)
摘要 本文介绍了用窗口函数制作系统监视器的方法。用 VB5.0 编译并运行本文 介绍的程序,可以监视系统正在运行的程序,并可根据您的要求关闭某些程序。
所用到的 API 函数 FindWindow、PostMessage
一、概述
当你不在你的机器旁边时,你是否会担心有人在你的机器上运行了某些程序(给 你的机器带来损坏)或有小孩子在你的电脑上"胡耍"。你是否想到设计一个监视 系统的程序,可以发现有人在你的机器上运行了哪些不当的程序,或当有小孩子 在你的机器上玩游戏时,立刻强制关闭游戏。读完了本文,你就可以着手去做了 。
二、设置 OnTimer 事件
要实现监视系统,首先要实现的是 OnTimer 事件,就是要站程序每隔一段时间去 "检查"一下当前系统中有哪些程序在运行。
你可装截 Timer 控件,设置 Interval 属性,如:
Timer1.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 个 Comm andButton 控件,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 "呵呵,小子你又在偷玩游戏" 注释:如果在玩上 面的3个游戏,则关闭游戏,并警告
End Sub
4.程序初始化
Private Sub Form_Load()
Timer1.Interval = 60000
Timer1.Enabled = False 注释:使时间控件失效
End Sub
5.时间控件的操作
Private Sub Timer1_Timer()
n = n + 1
If n = 2 Then CloseWin 注释:这里设置为每隔2分钟运行一次
End Sub
6.按"开始监视"按钮
Private Sub Command1_Click()
Timer1.Enabled = True 注释:激活时间控件,运行第 5 步的操作
End Sub
补充:在你按"开始监视"按钮后,可以再写一些代码,把你的程序隐藏或缩到任 务栏上,当然这不是这一篇文章能写完的,这些功能就要各位自己去想想了。
7.程序结束
Private Sub Command2_Click()
End
End Sub
好了,一个简单的系统监视程序就做出来了。
最后的补充:如果想要做一个非常完整的系统监视程序,那么你可要花花时间了 。
第1步:首先,修改注册表,在计算机启动时就运行本程序,并且不能关闭。
第2步:要调用 API 函数使本程序更隐蔽些。
第3步:还需要随时修改检测的"窗口标题"及当有人运行游戏程序时,把他玩游戏 开始时间和玩得什么游戏,保存到文件中去等等功能吧。
本程序用 VB5.0 编译通过,在中文 Windows98 环境下运行良好 。
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.110.173.200]
|
|