FindWindow用法

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

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

    参数:

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

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

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

 

[c-sharp] view plaincopy
  1. using System.Runtime.InteropServices;  

 

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

 

[c-sharp] view plaincopy
  1. [DllImport("user32.dll", EntryPoint = "FindWindow")]  
  2. private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);  

 

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

 

[c-sharp] view plaincopy
  1. IntPtr hwnd = FindWindow(null, "计算器");  
  2. if (hwnd != IntPtr.Zero)  
  3. {  
  4.     MessageBox.Show("找到计算器窗口");  
  5. }  
  6. else  
  7. {  
  8.     MessageBox.Show("没有找到计算器窗口");  
  9. }  
  10. hwnd = FindWindow("Notepad", null);  
  11. if (hwnd != IntPtr.Zero)  
  12. {  
  13.     MessageBox.Show("找到记事本窗口");  
  14. }  
  15. else  
  16. {  
  17.     MessageBox.Show("没有找到记事本窗口");  
  18. }  

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国大城市政治地位综合实力排名

中国大城市政治地位综合实力排名! 中国大城市政治地位综合实力排名!政治地位: 政治地位: 1(直辖市 4 个):上海、北京、天津、重庆 2(副省级城市 15 个):广州、深圳、武汉、南京、沈阳…

sourcemap总结

sourcemap在线上压缩文件调试中很重要,在此总结如下: 1. 开启sourcemap (1). 浏览器要开启source-map支持(2). 压缩文件底部要有source-map的URL,压缩要开启source-map(3). .map文件要放在服务器,source-map URL指向的位置 2. sou…

navicat 导出的sql文件,再导入,运行SQL文件成功,数据库中却没有表

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 问题描述:本来在数据库上右键 ,运行SQL文件 ,就可以导入 sql ,建表成功,并且数据也该的…

mysql索引之二级索引学习总结

二级索引又称辅助索引、非聚集索引(no-clustered index)。b&#xff0b;tree树结构。然而二级索引的叶子节点不保存记录中的所有列&#xff0c;其叶子节点保存的是<健值&#xff0c;(记录)地址>。好似聚集索引中非叶子节点保存的信息&#xff0c;不同的是二级索引保存的是…

264,avs中Skip宏块与Direct预测模式 ,对称模式的区别

1. B_Skip类型宏块 &#xff1a;无像素残差&#xff0c;无运动矢量残差&#xff08;MVD&#xff09;和参考帧。解码时&#xff0c;通过Direct预测模式&#xff08;时间或空间&#xff09;计算出前、后向MV后&#xff0c;直接利用前、后向MV得到像素预测值。像 素重构值像…

【hdu 6444】Neko's loop

【链接】 我是链接,点我呀:) 【题意】 给你一个序列. 你可以选择起点i。 然后每次往右跳k次。 得到下一个值a[ik];。 问你跳m次能得到的最大值ma是多少。 如果>s输出0 否则输出s-ma; 【题解】 最后肯定会形成gcd(n,k)个环的。 对于每个环(长度为cnt。 预处理出从1..2cnt的…

高性能MySQL之Count统计查询

近一段时间&#xff0c;有同事问我 “MySQL执行count很慢&#xff0c;有没有什么优化的空间”。当时在忙&#xff0c;就回复了一句“innodb里面count统计都是实时统计&#xff0c;慢一些是正常的”&#xff0c; 周末闲暇下来&#xff0c;想到以前有好多人都问过关于count的问题…

js转换字符串为base64位

在window对象下有两个api,可以对ASCII编码进行编译,得到base64位的字符串 btoa:编码为base64atob:解码为ASCII码此种方法不能对中文进行操作,因为ASCII码中没有中文,如果编码会得到乱码 要编码中文可以先用encodeURIComponent() 对字符串进行转义,转义后再btoa()成base64就可以…

java 文件下载,中文表名,中文内容

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 RequestMapping("userDownloadTemplet")private void userDownloadTemplet(HttpServletRequest request,HttpServletResponse …

cherry-pick的用法

简述 git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作。例如&#xff0c;假设我们有个稳定版本的分支&#xff0c;叫v2.0&#xff0c;另外还有个开发版本的分支v3.0&#xff0c;我们不能直接把两个分支合并&#xff0c;这样会导致稳定版本混乱&#xff0c…

Docker 二进制安装docker

https://blog.csdn.net/bruce_yds/article/details/80035714转载于:https://www.cnblogs.com/Presley-lpc/p/9698724.html

264,avs重要的变量:

B帧&#xff1a; B8pdir[i] i为0,1,2,3&#xff1b;值的含义&#xff1a;0&#xff1a;前向 &#xff1b;1&#xff1a;后向&#xff1b;2&#xff1a;双向&#xff1b;如果为intra_block,则为-1. B8mode[i] i为0,1,2,3 &#xff0c;值的含义&#xff1a;1:16x16 2:16x8 3…

insert into 语句的三种写法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 insert into 语句的三种写法 方式1、 INSERT INTO t1(field1,field2) VALUE(v001,v002); // 明确只插入一条Value 方式2、 IN…

Linux系统中跟TCP相关的内核参数

1. TCP保活机制 参考 《Nginx(三) 配置文件详解 - 基础模块》3.18章节 net.ipv4.tcp_keepalive_intvl&#xff1a;设置两次相邻探活检测的间隔时间。默认是75秒&#xff0c;单位是秒。net.ipv4.tcp_keepalive_probes&#xff1a;设置探活最多检测次数。默认是9次&#xff0c;单…

ECMAScript3中数组方法

<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>ECMAScript3中数组方法</title></head><body><script>//字符串和数组之间相转换的方法 1.join() split() /*var str abcdefg…

implements Serializable

Serializable是一个对象序列化的接口&#xff0c;一个类只有实现了Serializable接口&#xff0c;它的对象才是可序列化的。因此如果要序列化某些类的对象&#xff0c;这些类就必须实现Serializable接口。而实际上&#xff0c;Serializable是一个空接口&#xff0c;没有什么具体…

Codeforces 1045. A. Last chance(网络流 + 线段树优化建边)

题意 给你 \(n\) 个武器&#xff0c;\(m\) 个敌人&#xff0c;问你最多消灭多少个敌人&#xff0c;并输出方案。 总共有三种武器。 SQL 火箭 - 能消灭给你集合中的一个敌人 \(\sum |S| \le 100000\) &#xff1b;认知光束 - 可以消灭 \([l, r]\) 区间中的一个敌人&#xff1b;O…

常用宏定义 - 系统相关

/** 是否iPad */ #define isPad (UI_USER_INTERFACE_IDIOM() UIUserInterfaceIdiomPad)/** 是否iPad */ #define someThing (UI_USER_INTERFACE_IDIOM() UIUserInterfaceIdiomPad)? ipad: iphone/** 获取系统版本 */ #define IOS_VERSION &#xff3b;[UIDevice currentDevi…

周鸿祎详解360手机战略:赚钱不靠硬件靠服务

摘要&#xff1a;奇虎360总裁周鸿祎不久前在微博上宣布360公司将要进军手机行业的消息后&#xff0c;一度掀起业界的轩然大波&#xff0c;褒贬之声均不绝于耳。对于合作厂商的选择&#xff0c;周鸿祎直言出货量是一个重要参考指标&#xff0c;“每年的出货量最少不低于500万~10…

解决报错:;Syntax error on token(s), misplaced construct(s)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错如题&#xff0c;这是语法错误&#xff0c;如括号不匹配、代码没有写在一个方法中、少分号、变量名不对、少半个大括号 ... 总之就…