知识大全 .NET下基于API封装的DirectUIHWND窗体访问
Posted 知
篇首语:逆水行舟用力撑,一篙松劲退千寻。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .NET下基于API封装的DirectUIHWND窗体访问相关的知识,希望对你有一定的参考价值。
.NET下基于API封装的DirectUIHWND窗体访问 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
直接切入正题: 添加引用 项目 >添加引用 >C:\\Progmme~ \\MSN Messenger\\msnmsgr exe using MessengerAPI; 声明: private MessengerAPI MessengerClass msn; private MessengerAPI IMessengerConversationWnd msnMsgWnd; Init里添加: msn = new MessengerClass(); msn OnIMWindowCreated +=new DMessengerEvents_OnIMWindowCreatedEventHandler(msn_OnIMWindowCreated); msn OnIMWindowDestroyed +=new DMessengerEvents_OnIMWindowDestroyedEventHandler(msn_OnIMWindowDestroyed); private void msn_OnIMWindowCreated(object pIMWindow) msnMsgWnd = (IMessengerConversationWnd) pIMWindow; //取得IM窗口句柄 #region Get IM Message System IntPtr ptrUIHWND = NativeWIN FindWindowEx(msnMsgWnd HWND DirectUIHWND ); //取得窗口内DirectUIHWND句柄 Guid guid= new Guid( x E x C D x CF x xC x xAA x x x B x ); //的GUID IAccessible IACurrent=null; //IAccessible集 try NativeWIN AccessibleObjectFromWindow(ptrUIHWND (int)NativeMsg OBJID_CLIENT ref guid ref IACurrent); //取得ptrUIHWND中IAccessible集 IACurrent = (IAccessible)IACurrent accParent; //其父 才是IAccessible集真正的容器 int _ChildCount = IACurrent accChildCount; object[] _Children = new object[_ChildCount]; int _out; NativeWIN AccessibleChildren(IACurrent _ChildCount _Children out _out); //从IACurrent中 将所有子IAccessible加入_Children数组中 foreach(IAccessible _child in _Children) string _accName = _child get_accName((int)NativeMsg CHILDID_SELF); catch(Exception ex) throw ex; #endregion private void msn_OnIMWindowDestroyed(object pIMWindow) msnMsgWnd = null; 直接查找消息窗体的方法 Private void FindIMwindow() System IntPtr hWndStart; int _next = ; do hWndStart = NativeWIN FindWindowEx( _next IMWindowClass ); _next = hWndStart ToInt (); while(_next != ); 最后是API声明 #region API wrapper public class NativeWIN [DllImport( user dll CharSet=CharSet Auto)] public static extern IntPtr FindWindowEx( int parent /*HWND*/ int next /*HWND*/ string lpszClass string sWindowTitle); [DllImport( Oleacc dll )] public static extern int AccessibleObjectFromWindow( IntPtr hwnd int dwObjectID Guid refID ref IAccessible ppvObject); [DllImport( Oleacc dll )] public static extern int AccessibleChildren( Accessibility IAccessible paccContainer int iChildStart int cChildren [Out] object[] rgvarChildren out int pcObtained); public enum NativeMsg:long CHILDID_SELF = CHILDID_ = OBJID_CLIENT = xFFFFFFC #endregion cha138/Article/program/net/201311/13375相关参考
MicrosoftSyncFramework(MSF)为我们提供了进行同步应用开发的基础框架和API这些API即有基于托管代码的也有基于非托管代码的也就是说我们既可以开发基于NET平台使用托管AP
JSF和struts基于框架的错误控制与封装处理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 基于Visual C++的Winsock API研究
基于VisualC++的WinsockAPI研究 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!为了
知识大全 基于SVG的web页面图形绘制API介绍及编程演示
基于SVG的web页面图形绘制API介绍及编程演示 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!S
.Net环境下基于Ajax的MVC方案[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 问题
.Net环境下基于Ajax的MVC方案[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs
跳出封装剖析ASP.NET脚本回调的原理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
ASP.NET挪用淘宝API实例详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
.net连接Mysql封装类代码可直接调用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!下面是我封
使用.NET框架类替代API调用的问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 避免使用W