高分请教:如何监视程序的运行!(高手请进)
高分请教:如何监视程序的运行!(高手请进)
楼主Roisen(薄荷~第八月危机)2002-05-14 15:01:06 在 VB / 基础类 提问 我想用vb来做一个系统监视的程序,但是我不想用timer控件来循环检测,我只是希望我想检测的情况发生以后可以通知我的程序。
比如举个例子,我想检测ie程序的运行情况,但是我不知道用户什么时候会打开一个ie程序,只有知道用户什么时候打开了ie,才可以获得ie的句柄,进而监视ie.我希望用户在打开ie的时候可以通知我的vb程序。这个怎么样实现?
如果用timer来循环检测是一个很笨的办法,我希望可以有一个高效的办法。
另外,怎么获得一个运行的程序的句柄?
救命!高分答谢
问题点数:0、回复次数:2Top
1 楼gump2000(阿甘)回复于 2002-05-14 15:27:16 得分 0
您可以使用FindWindow
【函数】
FindWindow
【操作系统】
Win9X:Yes
WinNT:Yes
【声明】
FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
【说明】
寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题)
【返回值】
Long,找到窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError
【其它】
很少要求同时按类与窗口名搜索。为向自己不准备参数传递一个零,最简便的办法是传递vbNullString常数
示例
Dim hw& , cnt&
Dim rttitle As String * 256
hw& = FindWindow("ThunderRT5Main", vbNullString) " ThunderRTMain under VB4
cnt = GetWindowText(hw& , rttitle, 255)
MsgBox Left$(rttitle, cnt), 0, "RTMain title"
【参数表】
lpClassName ---- String,指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类
lpWindowName --- String,指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收任何窗口标题
不用 Timer 如何检测:) 任务管理器还是用Timer的了
Top
2 楼Roisen(薄荷~第八月危机)回复于 2002-05-16 09:25:13 得分 0
非常感谢,但是我希望可以有人提供像钩子函数那样的方法,自动监视系统的消息或者进程。Top
-
相关文章
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn
