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使用方法相关推荐

  1. vb使用open方法读写文件

    (一)打开和关闭文件 1.顺序文件 打开顺序文件,我们可以使用Open语句.它的格式如下: Open pathname For [Input |Output |Append] As [#]filenu ...

  2. VB 两种方法实现热键

    方法一: Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Intege ...

  3. vb直接读写文件服务器文件,vb使用open方法读写文件

    vb使用open方法读写文件 vb使用open方法读写文件 (一)打开和关闭文件 1.顺序文件 打开顺序文件,我们可以使用Open语句.它的格式如下: Open pathname For [Input ...

  4. vb inet 一些方法

    引用:http://apps.hi.baidu.com/share/detail/14791249 使用 Internet Transfer 控件 Internet Transfer 控件实现了两种广 ...

  5. vb未找到方法或数据成员_答疑 | VB首行的Option Explicit有何作用?

    当我们用VB软件来写程序时,每次进入代码窗口都会自动出现Option Explicit这一句代码,这句代码的作用是是强制声明变量,也就是当我们在程序代码中,用到了没有定义的变量,程序就会自动给出警告提 ...

  6. java调用python脚本_调用Python写vb的脚本方法

    某个项目中涉及到这样一个情景: VB写的原始项目要调用Python的一些方法完成特殊的操作, 那么这就涉及到了,在.Net Framework中如何调用Python的脚本方法. 具体步骤流程如下所示: ...

  7. VB 两种方法建立多级目录

    VB 使用两种方法创建多层文件夹: 1.使用API Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp&qu ...

  8. 学习vb知识的方法总结

    以前几乎没有接触过自学,但是在提高班的日子都是在自己学习,这段时间的vb学习让我有了一点深刻的体会,下来我分享给大家!!! 当我们在敲击代码的时候,很容易出现我们解决不了的东西,或者是不明白的,以及等 ...

  9. GenyMotion安装VB失败 解决方法 Intel HAXM安装错误

    问题描述: 安装之后打开VB报错: Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, but CLSID_VirtualBox w/ IUn ...

最新文章

  1. 提升工作沟通,你需要明白这些内容
  2. Ionic中自定义公共模块以及在自定义模块中使用ionic内置模块
  3. Qt之QStackedWidget
  4. P2607 [ZJOI2008]骑士
  5. 【转载】 C#使用string.IsNullOrWhiteSpace方法判断字符串是否为非空字符
  6. oracle中特殊字符处理
  7. 机器学习的13种算法和4种学习方法,推荐给大家
  8. 石家庄地铁站项目最终总结报告
  9. 5年从点点点到测开,写给即将进入或者正在做测试的你...
  10. 数码相机与手机相机成像差别
  11. 微信公众号网页授权40029错误「建议收藏」
  12. 爱快中的虚拟机不能获取IPV4地址
  13. Android 通过短信(H5)跳转到App指定页面
  14. 什 么 是ECP、EPP ?
  15. 气死老师的作文(转贴)
  16. 青龙面板-- 咸鱼吃鱼(废-已不能使用)
  17. Android9显示模糊,app进入后台显示模糊效果
  18. Code First From DataBase_se7en3_新浪博客
  19. ibaits中进行log4j控制台输出
  20. html写静态页面容易写错总结

热门文章

  1. 聊天宝解散罗永浩退出;三大运营商回应提速降费;天猫 iPhone XS 最高降 2000 | 极客头条...
  2. BAT 鼎立格局被打破,2019 年这些互联网公司是程序员跳槽首选!
  3. 宇宙第一 IDE Visual Studio 支持 Java 了!
  4. 小米立 Flag:要做年轻人的第一个深度学习框架
  5. 马化腾:一推就倒!中国技术实力只是表面辉煌罢了
  6. c语言tracert程序一直超时,TRACERT怎么用我用这个命令为什么都是超时啊 爱问知识人...
  7. vue自动化部署linux,GitHub+Vue自动化构建部署
  8. java设计模式面试,深入分析
  9. day18【前台】订单
  10. ansys的kbc_ANSYS载荷施加