国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.net下基于API封裝的DirectUIHWND窗體訪問

2024-07-10 12:58:53
字體:
來源:轉載
供稿:網友
 

直接切入正題:

1.添加引用. 項目->添加引用->c:/progmme~1/msn messenger/msnmsgr.exe

2. using messengerapi;

聲明:

private messengerapi.messengerclass msn;
private messengerapi.imessengerconversationwnd msnmsgwnd;

3.init里添加:

msn = new messengerclass();
   msn.onimwindowcreated +=new dmessengerevents_onimwindowcreatedeventhandler(msn_onimwindowcreated);
   msn.onimwindowdestroyed +=new dmessengerevents_onimwindowdestroyedeventhandler(msn_onimwindowdestroyed);

4.

private void msn_onimwindowcreated(object pimwindow)
  {
   msnmsgwnd = (imessengerconversationwnd) pimwindow; //取得im窗口句柄

  

   #region get im message
   system.intptr ptruihwnd = nativewin32.findwindowex(msnmsgwnd.hwnd, 0, "directuihwnd", 0);  //取得窗口內directuihwnd句柄
   guid guidcom= new guid(0x618736e0,0x3c3d,0x11cf,0x81,0xc,0x0,0xaa,0x0,0x38,0x9b,0x71);  //com的guid
   iaccessible iacurrent=null;            //iaccessible集
   try
   {
   
    nativewin32.accessibleobjectfromwindow(ptruihwnd,(int)nativemsg.objid_client,ref guidcom,ref iacurrent); //取得ptruihwnd中iaccessible集

    iacurrent = (iaccessible)iacurrent.accparent;  //其父,才是iaccessible集真正的容器
    int _childcount = iacurrent.accchildcount;
    object[] _children = new object[_childcount];
    int _out;
    nativewin32.accessiblechildren(iacurrent,0,_childcount-1,_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;
  }

5.直接查找消息窗體的方法

private void findimwindow()

{system.intptr hwndstart;
   int _next = 0;
   do
   {
    hwndstart = nativewin32.findwindowex(0, _next, "imwindowclass", 0);
    _next =  hwndstart.toint32();
   }while(_next != 0);

}

6.最后是api聲明

 #region api wrapper
 public class nativewin32
 {
  [dllimport("user32.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  = 0,
  childid_1   = 1,
  objid_client  = 0xffffffc
 }
 #endregion

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黔西县| 江永县| 广河县| 普陀区| 邵东县| 南溪县| 南丹县| 营山县| 三河市| 金坛市| 家居| 哈密市| 威宁| 承德县| 秦安县| 阿合奇县| 嘉荫县| 东兴市| 陵川县| 武功县| 潞西市| 东丰县| 平舆县| 包头市| 清水县| 扶绥县| 内乡县| 永定县| 琼中| 南郑县| 肇源县| 阿拉善左旗| 全椒县| 兴隆县| 曲麻莱县| 沧州市| 卫辉市| 平乐县| 扶风县| 东丽区| 广河县|