FindWindow 用来根据类名和窗口名来得到窗口句柄的。但是这个函数不能查找子窗口,也不区分大小写。

如果要从一个窗口的子窗口中查找需要使用FindWindowEX。

如果要搜索的外部程序的窗口标题比较容易得到,问题是比较简单的。可如果窗口的标题不固定或者根本就没有标题,怎么得到窗口的类呢?这时我们可使用Microsoft Spy++,运行Spy++,按ALT+F3,在弹出的界面中拖动目标图标到程序上即可。

FindWindow用法

函数功能:该函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。在查找时不区分大小写。

函数型:HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName);

参数:

IpClassName :指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobafAddAtom函 数产生的全局成员。该成员为16位,必须位于IpClassName的低 16位,高位必须为 0。

IpWindowName:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为空,则为所有窗口全匹配。

返回值:如果函数成功,返回值为具有指定类名和窗口名的窗口句柄;如果函数失败,返回值为NULL。
C#中使用该函数首先导入命名空间:

using System.Runtime.InteropServices;  

然后写API引用部分的代码,放入 class 内部

[DllImport("user32.dll", EntryPoint = "FindWindow")]
private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);  

这个函数有两个参数,第一个是要找的窗口的类,第二个是要找的窗口的标题。在搜索的时候不一定两者都知道,但至少要知道其中的一个。有的窗口的标题是比较 容易得到的,如"计算器",所以搜索时应使用标题进行搜索。但有的软件的标题不是固定的,如"记事本",如果打开的文件不同,窗口标题也不同,这时使用窗 口类搜索就比较方便。如果找到了满足条件的窗口,这个函数返回该窗口的句柄,否则返回0。例如:

    IntPtr hwnd = FindWindow(null, "计算器");  if (hwnd != IntPtr.Zero)  {  MessageBox.Show("找到计算器窗口");  }  else  {  MessageBox.Show("没有找到计算器窗口");  }  hwnd = FindWindow("Notepad", null);  if (hwnd != IntPtr.Zero)  {  MessageBox.Show("找到记事本窗口");  }  else  {  MessageBox.Show("没有找到记事本窗口");  }  

从上面的讨论中可以看出,如果要搜索的外部程序的窗口标题比较容易得到,问题是比较简单的。可如果窗口的标题不固定或者根本就没有标题,怎么得到窗口的类 呢?这时我们可使用Microsoft Spy++,运行Spy++,按ALT+F3,在弹出的界面中拖动目标图标到程序上即可。

转载于:https://www.cnblogs.com/welhzh/p/6120841.html

windows中使用Findwindow函数与FindWindowEx函数来实现自动控制、触发第三方软件事件的方法...相关推荐

  1. Windows API一日一练 41 FindWindowEx函数

    当你想控制一个现有的窗口程序时,就需要获取那个程序的窗口句柄.比如有一些黑客软件需要查找到窗口,然后修改窗口的标题.在外挂流行的今天,惊奇地发现它们也可以修改输入窗口的文字.这其中,就需要使用到 Fi ...

  2. Windows API一日一练(41)FindWindowEx函数

    当你想控制一个现有的窗口程序时,就需要获取那个程序的窗口句柄.比如有一些黑客软件需要查找到窗口,然后修改窗口的标题.在外挂流行的今天,惊奇地发现它们也可以修改输入窗口的文字.这其中,就需要使用到Fin ...

  3. vue中解决模糊搜索输入中文时--未输入完成时触发input事件

    在给输入框绑定input或keydown事件时 预期效果是有输入法时,输入中文后触发事件,不希望输一个字母就触发一次事件 可以用到compositionstart,compositionend. 主流 ...

  4. html中hover无法触发,jQuery中trigger无法触发hover事件解决方法

    做jquery练习的时候需要在外部触发元素的"hover"事件,于是,问题来了:根本没有触发,无论是trigger( )还是triggerHandler( ),查询后得知: Dep ...

  5. c语言findwindowex函数用法,VB中findwindowex函数的用法?

    FindWindowEx函数 函数功能:在窗口列表中寻找与指定条件相符的第一个子窗口 . 该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配.这个函数查找子窗口,从排在给定的子窗口后面 ...

  6. R语言使用edit函数在Rsudio中生成数据编辑器(在windows中生成编辑器)、在编辑器中输出需要的数据生成最终的dataframe

    R语言使用edit函数在Rsudio中生成数据编辑器(在windows中生成编辑器).在编辑器中输出需要的数据生成最终的dataframe 目录

  7. 在Windows中测试c语言单个函数运行时间方法

    在做单片机项目开发的过程中,在特殊应用中对代码执行的时间有着严格的要求,那么如何准确的测试出每个函数的的运行速度是多快呢?通常用单片机测试的方法就是通过示波器观察. 比如现在要测试使用二分查找法,在数 ...

  8. windows中定时操作(SetTimer函数用法)

    最近需要在服务端定时执行某个操作,于是需要用到SetTimer函数.当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间 ...

  9. WindowsAPI-Findwindow函数和FindWindowEx用法

    1.函数说明: FindWindow,Win32 API函数. FindWindow函数返回与指定字符串相匹配的窗口类名或窗口名的最顶层窗口的窗口句柄.这个函数不会查找子窗口. 2.函数原型: HWN ...

最新文章

  1. html 表格自动计算,HTML表格中的JavaScript计算
  2. 计算机视觉:让冰冷的机器看懂多彩的世界
  3. [小问题] 使用idea 打包maven项目时可能遇到xml文件打包不进去
  4. dede 会员中心编辑添加和修改图集的时候自定义的字段模型显示不出来的问题...
  5. Mac OS使用技巧之三:发射无线网络信号的方法
  6. Python3.6 IDLE 使用 multiprocessing.Process 不显示执行函数的打印
  7. android7.0提示定位,解决android7.0上某些PopuWindow显示位置不正确的问题
  8. 知识星球如何升级为正式星球 知识星球怎么创建星球
  9. Java实训项目:GUI学生信息管理系统(2019)【上】
  10. VC++动态链接库(DLL)编程(三)――MFC规则DLL
  11. db2 导出换行_数据库 db2 换行符
  12. 关于tomcat那些事情 - tomcat6.0 配置ip地址访问不用加端口和项目名
  13. Mesos:拒绝微软1.4亿美金收购的独角兽
  14. 常见的 web server
  15. java环境变量的作用和含义_java环境变量的配置及各环境变量的含义 | 学步园
  16. UltraISO(软碟通)制作U盘启动盘完整教程
  17. 链表结点定义---指针指向结点
  18. B站网页视频加速设置
  19. JAVA —— 比较日期时间大小
  20. Vissim与matlab联调环境配置

热门文章

  1. java计算机毕业设计音乐资源分享网站系统源码+数据库+系统+lw文档+部署
  2. html表单背景如何填充,Chrome 自动填充的表单是淡黄色的背景,有方法自定义吗...
  3. 【NOIP2013】积木大赛(差分数组,贪心模拟)
  4. 坚果云选择性同步重拾
  5. python figure函数_python3_matplotlib_figure()函数解析
  6. Time Wait的作用、原因、影响和如何避免
  7. 攀升闪电龙BG1电脑总是自动关机怎么重装系统教学
  8. 剖析遍历抓取的html标签数据,Jquery遍历数组(包括获取后端数据后的操作)和遍历标签(class名)...
  9. iOS精仿唱吧下载按钮、仿知乎日报、自定义提示视图、过渡动画、记录应用等源码...
  10. 关于用户权限的数据库设计