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

我们在写程序中经常要操作外部程序,比如:设置它的大小、位置等。别人写的的程序我们如何控制呢?还好有强大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。如果有,知道的望告知,谢谢。

posted @ 2011-07-19 09:33  jewely  阅读(4950)  评论(2编辑  收藏  举报