[vb]FindWindow使用方法
FindWindow使用方法
━━━━━━━━━━━━━━━━━━━━━━━━━━
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
这个函数有两个参数,第一个是要找的窗口的类,第二个是要找的窗口的标题。在搜索的时候不一定两者都知道,但至少要知道其中的一个。有的窗口的标题是比较容易得到的,如"计算器",所以搜索时应使用标题进行搜索。但有的软件的标题不是固定的,如"记事本",如果打开的文件不同,窗口标题也不同,这时使用窗口类搜索就比较方便。如果找到了满足条件的窗口,这个函数返回该窗口的句柄,否则返回0。
前面提到的VB的FindWindow()函数的声明将两个参数都定义为String类型,而在实际使用过程中,如果我们忽略某个参数就将该参数的定义又As String改为As Any。这里的As Any相当于C语言中的强制类型转换。例如,如果我们忽略窗口的类,就将定义修改如下:
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As String) As Long
然后,在调用时使用如下语句:
hwndCalc = FindWindow(0&, "计算器")
这里的0&就表示忽略类名。需要注意的是FindWindow(0&, "计算器")和FindWindow("", "计算器")有两种完全不同的含义,前者表示忽略窗口的类,而后者表示窗口的类是个空串。类似的,我们也可以忽略标题而搜索指定的类。
从上面的讨论中可以看出,如果要搜索的外部程序的窗口标题比较容易得到,问题是比较简单的。可如果窗口的标题不固定或者根本就没有标题,怎么得到窗口的类呢?如果你安装了Visual C++,你可以使用其中的Spy++(如果没有VC++,在VB的盘上也可以找到Spy),在Spy++中有一个FindWindow工具,它允许你使用鼠标选择窗口,然后Spy++会显示这个窗口的类。
在Win32 API中还有一个FindWindowEx,它非常适合寻找子窗口。
用法示例
Option Explicit
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, lParam As Any) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" ( _
ByVal hWnd As Long, _
ByVal lpClassName As String, _
ByVal nMaxCount As Long) As Long
Private Declare Function ShowWindow Lib "user32" ( _
ByVal hWnd As Long, _
ByVal nCmdShow As Long) As Long
Const SW_SHOWNORMAL = 1
Const WM_CLOSE = &H10
Public Sub test()
Dim hWnd As Long
'不知道类名
hWnd = FindWindow(vbNullString, "计算器")
Debug.Print hWnd
End Sub
Public Sub test2()
Dim hWnd As Long
'知道计算器窗口的类名是: SciCalc
hWnd = FindWindow("SciCalc", vbNullString)
Debug.Print hWnd
End Sub
Public Sub Test3()
Dim hWnd As Long
Dim lpClassName As String
Dim retVal As Long
hWnd = FindWindow(vbNullString, "计算器")
If hWnd = 0 Then MsgBox "Couldn't find the window ...": Exit Sub
'Show the window
ShowWindow hWnd, SW_SHOWNORMAL
'Create a buffer
lpClassName = Space(256)
'retrieve the class name
retVal = GetClassName(hWnd, lpClassName, 256)
'Show the classname
Debug.Print "Classname: " + Left(lpClassName, retVal)
'Post a message to the window to close it
PostMessage hWnd, WM_CLOSE, 0&, 0&
End Sub
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lovegod12/archive/2009/04/19/4092028.aspx
★VB部分相关文章推荐:★
☆VB6 中善用ByRef 提升速度
☆[vb] Set 语句
☆VB_Format自定义格式
☆用VB如读取内存地址
☆vb FindwindowEx的用法实例
☆进制转化进10进制数
☆收藏:如何获取当前已经打开的IE对象(VB6代码)
☆DXInput中键码的转换(VB6.0代码)
☆如何在VB6.0里动态使用具有事件的对象
☆[vb]格式输出Format函数
☆读取和写入Windows的INI文件
☆简述UTF-8编码原理及其文本文件的读写技术【转】
☆VB中的文件操作
☆VB中的文件操作文档
☆vb 中拷贝文件
☆VB反跟踪技术点滴
☆VB共享软件防破解设计技术初探(二)
☆VB共享软件防破解设计技术初探(三)
☆VB共享软件防破解设计技术初探(一)
☆RTF文件格式【转】
☆VB压缩技术
☆[vb]FSO对象模型在VB中的应用
☆VB 窗体实现文件拖拽获取路径方法
☆VB:注册表的读写
☆vb中空操作(等待)的指令、延时方法
☆VB让控件可以当标题栏拖动
☆FSO对象新建、打开、保存文件
☆获取网关IP和MAC 的VB源码
☆VB文件关联
☆vb获得本地和远程的MAC地址(网卡地址)
☆VB中ShellExeCute的应用
☆VB打开网址方法大全
☆vb简单控制音量大小及静音的方法
☆拖动无边框窗体(VB6代码)
☆VB使用FileSystemObject对象写文件
☆VB 从注册表中删除项及其某个值
☆vb 字符串转为数字和判断字符串是否是数字字符串【转】
☆vb按热键启动应用程序
☆VB的坐标系统综述
☆VB利用API函数来处理文件
☆关于VB中Shell及ShellExecute的总结与记录
☆[vb]On Error GoTo 0和On Error resume区别
☆[vb]On Error 语句
☆记录一下:在菜单上添加自绘图形的例子(VB6代码)
☆vb中findwindow的疑惑
☆[vb]FindWindow使用方法
☆常用文件类[转,无法运行通,待调试]
☆[vb]url utf-8编码
☆VB中的Unicode 和Ansi 格式
☆VB中的format格式化函数
☆VB中字符串匹配的多种方式
☆VB抓图
☆谈vb目录文件操作的三种方法-2
☆谈vb目录文件操作的三种方法-1
☆vb使用open方法读写文件
☆VB的MD5加密模块
☆VB 超简单的屏幕截图代码
☆vb以类名或窗口标题查找句柄并关闭
☆VB将配置保存到EXE本身(生成EXE木马程序)
☆VB 调用腾讯截图控件CameraDLL.dll
☆在VB6.0中怎么实现escape和unescape
☆vb求任意两线交点
☆VB中调用Windows API的注意事项[VB知识库]
☆VB 一个获得自己外网IP 地址的程序代码
☆VB程序中实现IP地址子网掩码网关DNS的更改[转]
☆在VB 中应用FSO 对象模型介绍(摘自网络)
☆[转] Vb中FSO 对象的介绍
☆VB 画坐标轴
☆VB 二进制文件的操作
☆[VB]BMP转JPG
☆VB中KeyCode常数用法
☆vb实时曲线的绘制和保存
更多精彩>>>
[vb]FindWindow使用方法相关推荐
- vb使用open方法读写文件
(一)打开和关闭文件 1.顺序文件 打开顺序文件,我们可以使用Open语句.它的格式如下: Open pathname For [Input |Output |Append] As [#]filenu ...
- VB 两种方法实现热键
方法一: Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Intege ...
- vb直接读写文件服务器文件,vb使用open方法读写文件
vb使用open方法读写文件 vb使用open方法读写文件 (一)打开和关闭文件 1.顺序文件 打开顺序文件,我们可以使用Open语句.它的格式如下: Open pathname For [Input ...
- vb inet 一些方法
引用:http://apps.hi.baidu.com/share/detail/14791249 使用 Internet Transfer 控件 Internet Transfer 控件实现了两种广 ...
- vb未找到方法或数据成员_答疑 | VB首行的Option Explicit有何作用?
当我们用VB软件来写程序时,每次进入代码窗口都会自动出现Option Explicit这一句代码,这句代码的作用是是强制声明变量,也就是当我们在程序代码中,用到了没有定义的变量,程序就会自动给出警告提 ...
- java调用python脚本_调用Python写vb的脚本方法
某个项目中涉及到这样一个情景: VB写的原始项目要调用Python的一些方法完成特殊的操作, 那么这就涉及到了,在.Net Framework中如何调用Python的脚本方法. 具体步骤流程如下所示: ...
- VB 两种方法建立多级目录
VB 使用两种方法创建多层文件夹: 1.使用API Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp&qu ...
- 学习vb知识的方法总结
以前几乎没有接触过自学,但是在提高班的日子都是在自己学习,这段时间的vb学习让我有了一点深刻的体会,下来我分享给大家!!! 当我们在敲击代码的时候,很容易出现我们解决不了的东西,或者是不明白的,以及等 ...
- GenyMotion安装VB失败 解决方法 Intel HAXM安装错误
问题描述: 安装之后打开VB报错: Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, but CLSID_VirtualBox w/ IUn ...
最新文章
- 提升工作沟通,你需要明白这些内容
- Ionic中自定义公共模块以及在自定义模块中使用ionic内置模块
- Qt之QStackedWidget
- P2607 [ZJOI2008]骑士
- 【转载】 C#使用string.IsNullOrWhiteSpace方法判断字符串是否为非空字符
- oracle中特殊字符处理
- 机器学习的13种算法和4种学习方法,推荐给大家
- 石家庄地铁站项目最终总结报告
- 5年从点点点到测开,写给即将进入或者正在做测试的你...
- 数码相机与手机相机成像差别
- 微信公众号网页授权40029错误「建议收藏」
- 爱快中的虚拟机不能获取IPV4地址
- Android 通过短信(H5)跳转到App指定页面
- 什 么 是ECP、EPP ?
- 气死老师的作文(转贴)
- 青龙面板-- 咸鱼吃鱼(废-已不能使用)
- Android9显示模糊,app进入后台显示模糊效果
- Code First From DataBase_se7en3_新浪博客
- ibaits中进行log4j控制台输出
- html写静态页面容易写错总结
热门文章
- 聊天宝解散罗永浩退出;三大运营商回应提速降费;天猫 iPhone XS 最高降 2000 | 极客头条...
- BAT 鼎立格局被打破,2019 年这些互联网公司是程序员跳槽首选!
- 宇宙第一 IDE Visual Studio 支持 Java 了!
- 小米立 Flag:要做年轻人的第一个深度学习框架
- 马化腾:一推就倒!中国技术实力只是表面辉煌罢了
- c语言tracert程序一直超时,TRACERT怎么用我用这个命令为什么都是超时啊 爱问知识人...
- vue自动化部署linux,GitHub+Vue自动化构建部署
- java设计模式面试,深入分析
- day18【前台】订单
- ansys的kbc_ANSYS载荷施加