您的位置:首页 > 其它

快速精准获取窗口句柄的方法

2011-07-19 09:33 731 查看
我们在写程序中经常要操作外部程序,比如:设置它的大小、位置等。别人写的的程序我们如何控制呢?还好有强大api库。翻翻api,你会发现很多函数调用都需要知道窗口句柄。方法也很多,但能保证百分百成功的似乎没了。今天写代码就让我遇到了,折腾了半天。

先说说我的程序吧。在程序启动时,开启一个外部程序。这个外部程序开启后我又不想看到标题栏和边框,手动移动窗口似乎可刚好移动隐藏掉。于是想到了定位的方法。运行时却没有效果,外部程序窗口句柄找不到,开个记事本测试又可以,万般无赖啊。强大的vs其实已经为我们提供了工具。依次进入”开始菜单“——"所有程序"——"Microsoft Visual Studio 2008"——"Visual Studio Tools"——"spy++"(这个程序有的机器有,有的没有。可能与版本或者是否安装C++包有关),运行它。快捷键alt+f3出现如下窗口。



点击并拖动如图红色框中的图标就指定窗口,下面的三个框则会相应主变化。这个过程中我们主要是得到类这值,因为有些程序的标题是随时变化的。使用win32 api FindWindow就能找到窗口句柄了。原型如下:

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


  lpClassName:类名

  lpWindowName:窗口标题

不知是否有直接隐藏掉标题、边框的api。如果有,知道的望告知,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: