用VB编写系统监视器

合集下载

用VB6编程监控CPU的资源状况VB-电脑资料

用VB6编程监控CPU的资源状况VB-电脑资料

用VB6编程监控CPU的资源状况VB-电脑资料用 VB 6编程监控CPU的资源状况作为一个系统级程序员或者编程爱好者,掌握一些系统的高级编程技巧是非常有意义的,。

本文将介绍如何利用一些高级的编程技巧来实现动态监控。

虽然Windows 98“系统工具”中的“资源状况”程序能够监视CPU的资源占用状况,但用VB6编程监控CPU的资源状况作为一个系统级程序员或者编程爱好者,掌握一些系统的高级编程技巧是非常有意义的。

本文将介绍如何利用一些高级的编程技巧来实现动态监控。

虽然Windows98“系统工具”中的“资源状况”程序能够监视CPU的资源占用状况,但是那些相关的数据却无法传递到我们自己的程序中。

为此,笔者用VB 6编写了一个具有上述功能的CPU监视软件,它可以实现对CPU资源状况的监视并取得有关数据,并且能够显示到一个精致的图示窗口中。

编程原理CPU的资源占用情况真正反映在CMOS中,但是如果我们直接从这里开始编程,那将是一件非常复杂的工作。

幸好,Windows 98已经帮我们做好了这一步,它的底层技术能够从CMOS中获取CPU的资源占用状况参数并且记录到注册表中“HKEY_DYN_DATAPerfStatsStatData”的分支“KERNELCPUUsage”中,通过周期性地读取该键的键值,并且将参数传递到我们自己制作的监视器界面或者有关变量中,就可以即时获得并反映出CPU的使用状况了。

本程序的关键是以通用的方法获取相关键值并反映输出到自制的动态进度监视器上,为了更有利于观察、分析,我们将添加一个简单的趋势分析平均线。

通过本文,初学者还将能了解如何从注册表的指定项获取数据和利用Picture控件实现进度指示器的编程技巧。

开发步骤1.设计程序界面首先运行VB 6中文版,建立一个标准的exe工程,将窗体命名为frmmain,borderstyle属性设为:3-fixed,caption,属性设置为空;接着添加一个frame控件——“frame1”,caption属性设置为空,再添加picturebox控件pctPrg,前景色为绿色,背景色为浅红色;最后添加一个定时器控件——“timer”,interval设置为100(当然,也可以根据自己的需要设置读取间隔),enabled设置为true,其他的属性采用系统的默认值,调整窗体和控件到适当位置和适当大小即可(参见附图)。

用VB编写监视指定进程的程序

用VB编写监视指定进程的程序

用VB编写监视指定进程的程序作者: 徐原一、前言有些对外营业的公司在大厅中都有一个触摸屏,以供客户查询公司的信息,可是通常查询程序都很大,而且很复杂,这样在连续长时间使用后难免会出现错误以致程序中途退出,这时就要工作人员来重新启动那个程序,而且有时候很忙不一定能有专人守在这个地方。

其实可以用一个程序来专门处理这种情况的。

我们局电信营业前台的多媒体查询系统也常常会出现这样的问题,下面是本人开发出来的监控程序处理思路。

二、实现思路及关键技术要防止程序中途退出,就需要另外的一个程序专门对要监控的进程进行时刻不停的监控,检测到被监控的进程退出了就重新启动它。

但是有时候可能是操作系统出了问题,不能简单地重复启动要监控的进程,在重启了一定的次数后被监控进程仍然退出,那就需要重新启动操作系统了,以便使操作系统中的环境参数等重新初始化,然后再运行监控进程并启动被监控的进程。

监控进程的存在最好不能影响被监控的进程,监控进程启动的时候要进行判断,看当前状况下被监控的进程有没有起来,如果起来了就获取其进程句柄并进行监控,如果没有起来则使之起来并监控。

这里判断一个被监控的进程有没有起来不能简单地通过查找窗口标题来实现,因为窗口标题在程序内部可能是根据运行的时刻和条件动态地改变的,而且别的进程也可以和可能去改变被监控进程的窗口标题。

程序中使用了CreateToolhelp32SnapShot()‘函数通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照.说到底,可以获取系统中正在运行的进程信息,线程信息,等这个API函数遍历系统进程池里的所有进程全路径等信息来查找的,一个进程运行起来之后,它的路径是不可能被改变的,无论它自己还是别的进程。

为了实现程序的高效率,这里监控进程不是用Timer控件轮寻来检测,而是用API函数WaitForSingleObject (),同时传入等待时间为无限长(-1),但是这里有个问题,就是程序在等待的同时被冻结,这样用户在这个时候就无法对该监控程序进行设置操作了,为了避免这种情况,这里使用了多线程技术,在VB中使用多线程一直是不安全的,在线程代码中必须不能出任何错误。

利用VB开发基于Modbus协议的温度、湿度监控系统软件

利用VB开发基于Modbus协议的温度、湿度监控系统软件
《 冶金 自动化》04 20 年增刊
利用 V B开发基于 Mo b s d u 协议的 温度、 湿度监控 系统软件
陈 曦, 涛, 张 付少波, 孙英科, 任金全
( 河北工业大学 自 动化研究所 , 天津 303) 010
[ 要I 摘 控制技术、 计算机技术和网络技术相结合促进了集散控制系统( C ) D S 的进一步发展, 使控制系统实现了集中管 理、 分散控制。本文以一个基于 R -45 S 8 总线的温度、 湿度控制系统为例, 全面介绍了该系统的硬件组成及软件结构, 并
20 5
万方数据
( 冶金 自ห้องสมุดไป่ตู้动化》04 20 年增刊
io6 n ()= & 2 f H C io7 n ()= &HA f 8 io8 n ()= 邑H3 f 8
Ma F r . C m T oO tu = i o i om MS o m w . pt n n u f
编程过程中应该注意: ①在用户使用监控软件的时候应该充分考虑用户操作合法性问题, 譬如端口 使用情况、 通信设备工作状态等; ②由于系统的通信过程是串行通信, 在编程过程中注意上位机与下位机 之间的同步, 当不同步时, 通信可能被中断, 应该适当地考虑时间的延迟。
1 温度、 湿度控制系统的构成
该系统属于集散控制系统( C ) D S的一个小型的操作站, 网络的拓扑结构采用菊花链形式, 如图 1 所
不 。
能仪表
调节阀
加湿器
湿度传感器
温度传感器
图 1 系统构成图
系统的各个部分的组成和功能为: 操作站既可以是工业控制机也可以是桌面台式机, 安装在控制室内。其作用是运行组态软件, 将各
两种传输模式中( S I或R U , A CI T )传输设备已 Mobs 将 du 消息转为有起点和终点的帧, 这就允许接 收的设备在消息起始处开始工作, 读地址分配信息, 判断哪一个设备被选中( 广播方式则传给所有设备) ,

用VB6.0实现网络实时监控系统

用VB6.0实现网络实时监控系统

用VB6.0实现网络实时监控系统计算机网络技术的日益发展和普及,为信息共享提供了一条全球性的高速通道,但目前采用的TCP/IP协议族潜在着安全漏洞,其安全机制并不健全,如何保护企业内部网络中的资源及信息不受外部攻击者肆意破坏或盗窃,是企业网络安全需要解决的重要问题。

当我们担心被黑客攻击或怀疑电脑被植入木马时,我们往往求助于防火墙,本系统即通过实时监控全部TCP连接的方法来实现防黑客攻击。

同时网络管理人员在整个网络运行期间,能否实时监控联网计算机的运行状态和操作对网络安全具有极其重要的作用.下面就以Visual Basic 6.0作为开发工具讲述两个主要模块的设计和实现。

系统概述该系统由两个子系统组成:服务器端系统和客户端(工作站)系统。

服务器端系统安装在网络管理人员的计算机上,用于实施各种对联网计算机的监控操作;客户端系统安装在每台联网的计算机上,它运行后以图标的方式出现在系统任务栏的提示区中,不影响工作站的其他操作,只用于响应服务器端的监控命令,并根据服务的需要,及时采样工作站的相应数据返回给服务器端。

该系统的运行环境可以运行于Win98、Win95或WinNT、Win2000下。

在系统的开发中,引入了WINSOCK通讯控件,除此之外,为较好地实现各项监控操作,还用到了几个API 函数。

系统功能1、监控全部TCP连接:实时监控所有服务器端口的连接情况、及时对异常连接发出警告并提示用户删除异常连接;2、屏幕监控:该功能允许服务器随时把被监控工作站的屏幕画面抓取到服务器中,网络管理人员对相应工作站所进行的操作一目了然,若发现有非法操作即可采取发送警告或强制措施,强迫其停止相应操作;3、对工作站进行锁机、关机、限制鼠标活动等;4、服务器和工作站之间的信息互送。

功能的实现1、监控全部TCP连接TCP/IP(Transmission Control Protocol/Internet Protocol:传输控制协议/互联网协议)是一个包括TCP、IP、 UDP、ARP、RARP和ICMP等在内的网络协议集。

VB监视文件变化

VB监视文件变化

这次介绍的是如何利用Windows未公开函数实现系统文件操作监视功能。

利用该功能可以对Windows下的任何文件操作,包括建立文件、文件夹;删除文件;改变文件大小等操作都可以纪录在案。

首先来介绍实现上面操作的两个未公开函数:SHChangeNotifyRegister和SHChangeNotifyDeregister,SHChangeNotifyRegister函数的定义如下:Declare Function SHChangeNotifyRegister Lib "shell32" Alias "#2" _(ByVal hWnd As Long, _ByVal uFlags As SHCN_ItemFlags, _ByVal dwEventID As SHCN_EventIDs, _ByVal uMsg As Long, _ByVal cItems As Long, _lpps As PIDLSTRUCT) As Long其中参数hWnd指定接受系统通告的窗口句柄,参数uMsg指定消息值,如果函数调用成功,系统就会将hWnd指定的窗口加入到系统通告链中,并且返回系统通告句柄。

当有建立文件等系统操作发生时,系统会向hWnd指定的窗口发送uMsg消息,关于其它参数,会在下面的程序中说明。

函数SHChangeNotifyDeregister的定义如下:Declare Function SHChangeNotifyDeregister Lib "shell32" Alias "#4" _(ByVal hNotify As Long) As Boolean其中参数hNotify指定系统通告的句柄。

下面是操作的具体的VB范例:首先建立一个新的工程,在Form1中加入一个TextBox控件。

在Form1的代码窗口之中加入以下代码:Option ExplicitPrivate Sub Form_Load()If SubClass(hWnd) Then '改变Form1的消息处理函数If IsIDE ThenText1.Text = vbCrLf & _"一个 Windows的文件目录操作即时监视程序," & vbCrLf & "可以监视在Explore中的重命名、新建、删除文" & _vbCrLf & "件或目录;改变文件关联;插入、取出CD和添加" & vbCrLf & "删除网络共享都可以被该程序记录下来。

利用VB控件监视与管理时间服务器

利用VB控件监视与管理时间服务器

利用VB控件监视与管理时间服务器蔡菲菲;刘爱民;郎宏山【期刊名称】《气象科技》【年(卷),期】2011(39)6【摘要】Time synchronization has a major impact on the quality of images received by satellites in the polar orbiting meteorological satellite data acquisition system. Therefore, TimeServer is needed to provide criterion time for the system to ensure complete reception on schedule. The GPS clock is used as the reference source of TimeServer for its stabilization and accuracy. In order to ensure that the GPS-TimeServer works normally, it is necessary to monitor its status. The monitoring and management functions through the serial communication on the TimeServer is based on the Visual Basic 6.0. The monitoring function provides an important basis for fault finding, troubleshooting, and recording. The management functions include inquiry and sub-function setting, which is convenient for users to operate.%在极轨气象卫星数据接收系统中,时间统一性对气象卫星资料接收质量有着重要影响.因此需要时间服务器为系统提供统一的时间基准,从而保证卫星资料的完整按时接收.由于GPS时钟具有稳定、准确的特点,将其作为时间服务器的信号源.为了保证GPS时间服务器正常工作,有必要对其进行状态监视.在VB6.0环境下,利用串口通信成功实现了对时间服务器的监视、管理功能.监视功能为时间服务器故障的发现、定位与记录提供了重要依据.管理功能包括参数查询、功能设置等,方便用户对时间服务器的操作.【总页数】5页(P818-822)【作者】蔡菲菲;刘爱民;郎宏山【作者单位】国家卫星气象中心,北京100081;国家卫星气象中心,北京100081;国家卫星气象中心,北京100081【正文语种】中文【相关文献】1.用VB5.0的Winsock控件创建TCP/IP客户机/服务器程序 [J], 宋卫华2.基于VB_Winsock控件文件服务器的设计 [J], 陈青贵3.基于VB_Winsock控件文件服务器的设计 [J], 陈青贵4.在PowerBuilder中利用WinSock控件制作简单的Web服务器 [J], 胡迎新;贾玉锋5.利用VB的MCI.VBX控件进行多媒体程序设计 [J], 陆星海因版权原因,仅展示原文概要,查看原文内容请购买。

基于VB的温度实时监控系统的设计

基于VB的温度实时监控系统的设计

温度实时监控系统的设计2008年4月摘要本论文简要的阐述了温度监控系统的现状与发展趋势和各个模块实现的设计方案。

硬件部分,我们采用DS18B20芯片实现温度采集模块。

利用AT89S51的高密度、非易失性存储和兼容标准MCS-51指令系统及80C51引脚结构,使其作为单片机控制模块的核心。

在数据传输模块我们选择MAX232实现单片机与PC的过渡桥梁作用。

软件部分,用单片机汇编语言与VB相结合并利用PC机串口通信技术,编写了双方的通信协议方便数据交换,并且PC机与单片机通信比较稳定。

本系统的温度监控部分主要在PC上操作,它采用Click事件来实现通信指令的触发,利用MSComm控件里的OnComm事件来实现PC机通过串口与单片机通信功能。

本设计不仅可以在图形界面下方便的查看外设温度,而且能够进行多路选择查看或单路查看等功能。

关键词:温度实时监控;DS18B20;VB;MSComm;AbstractThe present paper brief elaboration temperature supervisory system's present situation and the trend of development and each module realized design proposal.The system hardware part,we use DS18B20 the chip to realize the temperature gathering module. Using AT89S51 high density,non-volatility memory and compatible standard MCS-51 command system and 80C51 pin structure,causes its achievement monolithic integrated circuit control module the core .We choose MAX232 in the data transmission module to realize the monolithic integrated circuit and the PC transition bridge role.Software aspect,unify and use the PC machine serial port communication with the monolithic integrated circuit assembly language and VB has as compiled the bilateral communication protocol convenient data exchange and PC machine and the monolithic integrated circuit correspondence are quite stable.This system's temperature monitoring part mainly operates on PC. It uses the Click event to realize correspondence order triggering and controls in using MSComm the OnComm event to realize PC machine through the serial port and the monolithic integrated circuit correspondence function. This design not only may the examination peripheral device temperature which facilitates under the graphical interface but also can carry on multi-channel functions and so on choice examinations or single-channel examination.Key words: Temperature real-time monitoring; DS18B20; VB; MSComm;目录1 引言 (1)2 总体设计 (2)2.1方案比较 (2)2.1.1温度传感器的选择 (2)2.1.2 控制器的选择 (3)2.1.3 数据串行通信的接口标准 (3)2.1.4 WINDOWS编程语言选择 (4)2.2系统设计方案简介 (4)3 硬件设计 (6)3.1温度采集模块 (6)3.1.1 DS18B20芯片介绍 (6)3.1.2 DS18B20芯片与AT89S51连接 (10)3.2单片机控制模块 (10)3.2.1 AT89S51芯片介绍 (11)3.2.2 芯片HD7279A简介 (11)3.2.3 HD7279A与AT89S51的连接 (11)3.3数据传输模块 (12)4 系统软件设计 (14)4.1单片机模块软件设计 (14)4.1.1 主程序设计 (14)4.1.2 温度采集子程序设计 (15)4.1.3 串口中断子程序设计 (15)4.2PC机人机交互模块设计 (16)4.2.1 系统工作流程 (17)4.2.2 系统界面设计 (17)4.2.3 全局变量和各控件的设置 (18)4.2.4 通讯程序设计 (19)4.2.5 接收信息设计 (21)4.2.6 发送信息设计 (23)4.2.7下拉列表初始化 (24)5 结束语 (26)致谢 (27)参考文献 (28)附录1 系统实物图 (29)附录2 实验原理图 (30)附录3 毕业设计作品说明书 (31)1 引言随着计算机技术的发展和成熟,计算机的应用也越来越广泛。

用VB60实现网络实时监控系统

用VB60实现网络实时监控系统
'CopyMemory为API函数
CopyMemory Ip_Buf(1), TCP1.TCP_Table(i).dwLocalAddr, 4
Tmp3 = Tmp3 + CStr(Ip_Buf(1)) + "." + _
CStr(Ip_Buf(2)) + "."+ CStr(Ip_Buf(3)) _
CopyMemory Ip_Buf(1), TCP1.TCP_Table(i).dwRemoteAddr, 4
Tmp3 = Tmp3 + CStr(Ip_Buf(1)) + "." + CStr(Ip_Buf(2)) _
+ "."+ CStr(Ip_Buf(3)) + "." + CStr(Ip_Buf(4))
系统功能
1、监控全部TCP连接:实时监控所有服务器端口的连接情况、及时对异常连接发出警告并提示用户删除异常连接;
2、屏幕监控:该功能允许服务器随时把被监控工作站的屏幕画面抓取到服务器中,网络管理人员对相应工作站所进行的操作一目了然,若发现有非法操作即可采取发送警告或强制措施,强迫其停止相应操作;
Else
MsgBox "删除失败"
End If
Timer1_Timer
End Sub
2、屏幕监控
当服务器系统发现TCP异常连接时,可通过屏幕监控功能将局域网中被监控工作站的屏幕画面抓取到服务器中并实施相应措施,如对工作站锁机或关机等。此处用到WINSOCK控件,其通讯原理请参阅相关资料,屏幕监控功能用到TCP协议,为了达到更好的效果,可在窗体中加入TIMER控件,设定TIMER事件。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用VB编写系统监视器编程专区2008-05-02 15:52:42 阅读95 评论0 字号:大中小订阅用VB编写系统监视器当你不在你的机器旁边时,你是否会担心有人在你的机器上运行了某些程序(给你的机器带来损坏)或有小孩子在你的电脑上"胡耍"。

你是否想到设计一个系统监视的程序,可以发现有人在你的机器上运行了哪些不当的程序,或当有小孩子在你的机器上玩游戏时,立刻强制关闭游戏。

读完了本文,你就可以着手去做了。

实现原理首先用Timer控件的ontimer来实现实时监控,接下来的问题是怎样去"检查"当前系统中有哪些程序在运行。

这个可以用findwindow这个API函数实现,如果发现被监视的程序已经运行就使用API 函数PostMessage 发送一个WM_CLOSE消息关闭它.程序实例下面给出一个实例,它是用VB 56. 编制而成的。

如果运行的是"扫雷"游戏,就强行关闭它,并发出警告。

具体程序如下;启动VB6.0新建一个标准工程,在窗体中添加两个CommandButton控伯和一个Timer控件如(图1 ).写下以下代码:Option ExplicitPrivate Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongConst WM_CLOSE = &H10Const WM_QUIT = &H12Dim Handle As IntegerDim n As IntegerPrivate Sub Command1_Click()Timer1.Interval = 1000Timer1.Enabled = Trueform1.hideEnd SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Load()Timer1.Enabled = FalsePrivate Sub Timer1_Timer()Dim hwnd As LongDim hlong As Longhwnd = FindWindow(vbNullString, "扫雷") '查找窗口标题为扫雷If hwnd <> 0 Then '如果窗口存在hlong = PostMessage(hwnd, WM_CLOSE, 0, 0) '发送关闭程序的消息End IfEnd Sub好了,一个简单的系统监视程序就做出来了。

最后的补充:如果想要做一个非常完整的系统监视程序,那么你可要花多一点时间了。

第1步:首先,修改注册表,在计算机启动时就运行本程序,并且不能关闭。

第2步:要调用API 函数使本程序更隐蔽些。

第3步:还需要随时修改检测的"窗口标题"及当有人运行游戏程序时,把他玩游戏开始时间和玩得什么游戏,保存到文件中去等等功能吧。

本程序用VB6.0 ,win98se测试同通过用VB5.0获取正在系统中运行的窗口标题山东德州胥智强熟悉Visual Basic的读者都知道,AppActivate语句是激活一个应用程序窗口其后所带的参数是指要被子激活的应用程序窗口标题条的字符串。

如果要激活的是一个常见的应用程序,我们在编写程序时就可以直接写上此程序的窗口标题。

例如,我们想激活Windows95的计算器,可先运行程序x=SHELL("Calc.exe",1),然后再激活计算器窗口AppActivate“计算器”,则程序焦点自动转到计算器窗口上。

然而单纯使用该方法局限性非常大,比如上述例子,如果我们放在英文Windows95上运行,计算器的窗口标题就不是“计算器”,而是“Calculator”。

再一个局限性就是在很多情况下我们并不知道要激活的程序窗口标题名称,如何编制一个能自动查找程序窗口标题名称的程序是本文要解决的问题。

我们可以采取如下办法,来获取正在系统运行的窗口标题。

在WindowsAPI中有一个函数:Get Windows (ByVal hWnd As Long ,ByVal wCmd As Long) As Long 其中,hWnd是当前窗口句柄,wCmd是与hWnd有联系的常量,其含义如下:wCmd值含义GW-GHILD第一个子窗口GW-HWNDFIRST子窗口的第一兄弟窗口,其第一个顶层窗口GW-HWNDLAST子窗口的最后一个兄弟窗口,或最后一个顶层窗口GW-HWNDNEXT后继窗口GW-HWNDPRCV先前窗口GW-OWNER窗口拥有者此函数返回值是wCmd所指的窗口的句柄。

我们利用此句柄,再用函数Get WindowsText (ByVal hWnd As Long ,ByVal Ipstring As String, ByVal cch As Long) As Long,将句柄hWnd指定的窗口标题放入一个字符串变量Ipstring中,cch是指放入Ipstring中的最大字符数。

此函数成功时返回字符串长度,如果窗口无标题则返回零。

在使用Get WindowsText函数前,还要先用函数Get WindowsTextLength (ByVal hWndAs Long )As Long得到hWnd指定窗口标题的长度,放入cch中。

自编一个过程FindTitle()查找系统中正在运行的所有标题,首先获得第一个顶层窗口句柄currwnd,而后采用While…Wend循环结构,当currwnd不为零而且标题文本长度不为零时,将获得的标题存入列表框Combo1,再找后继窗口的句柄,当句柄currwnd=0时表示已没有了后继窗口,退出循环。

这样就将系统中所有的窗口句柄及标题找出来了。

然而调试中发现用此方法找到的窗口标题非常多,这说明Windows系统运行时有许多隐含的窗口,而这些窗口是我们所不需要的,而且用AppActivate激活时也出现错误。

因此我们再自编一个过程Sift ()查找可激活的窗口。

其方法是用AppActivate逐个激活所有窗口,出现错误的丢掉,保留可激活的窗口标题,放入列表框Combo2。

首先新建窗体Form1,Caption=“获取窗口标题”,在窗体Form1上建立两个标签,Label1,Caption=“所有窗口标题”,Label2.Caption=“可激活的窗口标题”;建立两个下拉列表框,Combo1存放系统中的所有标题名称,Combo2存放可激活的标题名称;再建立两个命令按钮,Command1.Caption=“激活窗体”,可对所列窗体进行测试,命令按钮Command2.Caption=“刷新”,点击它可重新查找所有在系统中的窗体名称,当本程序运行以后又运行了新程序时使用此按钮。

从VB系统菜单上选取Project中的Add Module,将下述API函数及一些常量录入。

'Module 模块Declare Function GetWindow Lib "user32"(ByVal hwnd As Long, ByVal wCmd As Long)As LongDeclare Function GetWindowText Lib "user32" Aias"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String,ByVal cch As Long)As LongDeclare Function GetWindowText Length Lib "user32" Aias"GetWindowTextLengthA" (ByVal hwnd As Long)As LongPublic Const GW-HWNDFIRST=0Public Const GW-HWNDLAST=1Public Const GW-HWNDNEXT=2Public Const GW-HWNDPREV=3Public Const GW-OWNER=4建立两个子程序:Sub FindTitle ()'查找桌面上的所有窗口标题Dim currwnd As IntegerCombo1.ClearCurrwnd=GetWindow (hwnd, GW-HWNDFIRST)While currwnd<>0Length= GetWindow TextLength (currwnd)listitem$=Space $(length +1)length= GetWindow Text (currwnd,listitem$,length+1)if length>0 ThenCombo1.Addltem listitem $End ifcurrwnd= GetWindow (currwnd, GW-HWNDNEXT)if Combl1.ListCount>0 ThenCombo1.Text=Combol.List (0)Combo1.Listindex =0ElseMsgBox“没有发现可活动的窗口”,16,“活动”End ifWendEnd SubSub Sift ()'测试窗口能否活动i=0Combo2.ClearDoOn Local Error Resume NextAppActivate Combo1.List (i)If Err =0 ThenCombo2.Additem Combo1.List(i)End ifi=i+1Loop Unti 1 i=Combo1.ListCount-1AppActivate Form1.CaptionIf Combo2.ListCount>0 thenCombo2.Text =Combo2.List (0)Combo2.Listindex =0ElseMsgBox “没有发现可活动窗口”,16,“活动”End ifEnd SubPrivate Sub Form-Load ()Form1.Show'首先将本窗体显示出来,否则查找出的窗体标题没有本身MsgBox "开始查找窗口标题"Call FindTitleCall SiftEnd SubPrivate Sub Command1-Click ()F $=Combo2.TextOn Local Error Resume NextAppActivate F $End SubPrivate Sub Command2-Click ()Call FindTitleCall SiftEnd Sub本程序在Visual Basic5.0上调试通过。

相关文档
最新文档