2 zhaojunv3 zhaojunv3 于 2014.11.17 13:49 提问

.net中如何获取同名窗口的句柄

在.net中可以通过引用win32的FindWindow()获取一个打开程序的窗口句柄!
可是问题来了,如果一个程序有两个实例,且窗口名称完全相同,怎么才来获取这两个
窗口的句柄?

2个回答

caozhy
caozhy   Ds   Rxr 2014.11.18 16:34

也可以使用EnumWindows遍历并且判断。

findcaiyzh
findcaiyzh   Rxr 2014.11.18 10:10

使用FindWindowEx API.

HWND WINAPI FindWindowEx(
In_opt HWND hwndParent,
In_opt HWND hwndChildAfter,
In_opt LPCTSTR lpszClass,
In_opt LPCTSTR lpszWindow
);

找第一个实例的时候hwndParent和hwndChildAfter都是null.
找下一个实例的时候hwndParent是Null, hwndChildAfter是第一次调用的返回值。

参考:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633500(v=vs.85).aspx

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
获取多个同名窗口的句柄
#include HWND gameh,gameh2,gameh3; //定义三个句柄 PCHAR winCaption = "诛仙2"; //窗口名称 HWND windowhWnd = 0; HWND gameall[3]; //存放同名窗口句柄的数组 bool CALLBACK enumWindowProc1(HWND hWnd,LPARAM lParam) { ch
.net 中句柄的理解
什么是句柄: ”随后程序再次访问对象,或者删除对象,都将句柄作为Windows API的参数来间接对这些对象进行操作。在这个过程中,句柄作为系统中对象的标识来使用“ Windows编程中,程序需要访问各种各样的资源,如文件、网络、窗口、图标和线程等。不同类型的资源被系统封装成不同的数据结构,当需要使用这些资源时,程序需要依据这些数据结构创建出不同的对象,当操作完毕并不再需要这些对象时,程序
获取窗口的句柄方法总结
 句柄获取方法(获取该窗口的句柄后,即可向该窗口类类发送消息、处理程序): 例如:::PostMessage("句柄", WM_USER_DRAWVIEWPIC_EDS, 0, 0); 0。获取所在类窗口的句柄: this->m_hwnd 1。主窗口的句柄: 无论在主窗口类内,还是子窗口类内,获取主窗口句柄的方法: AfxGetMainWnd()->m_hWnd,
获取控制台窗口的句柄
窗口,都有其唯一的句柄(hWnd)。得到了窗口句柄,能够做很多事情。控制台程序,若能在窗口效果上下文章,那么这个第三方工具将会很成功。 网上给出的常用方法: HWND hw=FindWindow("ConsoleWindowClass",NULL); 这不失为一个好方法,但
获取窗口控件句柄
快速获取已经打开窗口句柄、控件句柄,使用方便快速,简单易用
windows获取控制台窗口的句柄
全局声明: typedef HWND (WINAPI *PROCGETCONSOLEWINDOW)(); PROCGETCONSOLEWINDOW GetConsoleWindow; Main()中动态载入API函数GetConsoleWindow: HMODULE hKernel32 = GetModuleHandle(“kernel32”); GetConsoleWindow = (P
selenium窗口切换,获取句柄
演示案例:12306, 需求:点击购票按钮,页面跳转至购票页面,点击跳转页面“登录”按钮时,脚本报错 package com.Demotest; import org.openqa.jetty.html.List; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openq
获得多个同名顶层窗口的句柄
以记事本作为测试。从开始菜单启动记事本6次,记事本标题应该都是"无标题 - 记事本" 新建Win32 Application工程(Hello World!)里加入如下代码: BOOL CALLBACK lpEnumFunc(HWND hwnd,LPARAM strTarget) //添加回调函数 { char strTitle[128],strOutput[128]; GetWindow
VC 获取任务栏窗口的句柄
本文将介绍一个未公开的Win32 API函数:GetTaskmanWindow,利用它对Windows的任务栏进行操作。这个函数返回拥有任务栏按钮的窗口句柄。在微软的MSDN文档中,对任务栏是这样描述的:"……Windows界面包含一个特殊的应用程序桌面工具栏,叫做任务栏。任务栏可以用于在打开的不同窗口之间进行切换,以及启动新的应用程序……。任务栏包含有开始菜单、任务栏按钮、快捷菜单和状态
获取弹出式窗口(对话框)句柄
原文:获取弹出式窗口(对话框)句柄 http://www.vbgood.com/thread-103057-1-1.html昨天遇到了这个问题;碰巧今天在MSDN上看到了这方面的内容,记录下。 假设要获取 Notepad 的弹出消息框,那么可以这样做: Public Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function GetWindow Lib "user32" (ByV