100元:MSN聊天窗口上面的内容 ( 积分: 0 )

  • 主题发起人 主题发起人 zqssoft
  • 开始时间 开始时间
Z

zqssoft

Unregistered / Unconfirmed
GUEST, unregistred user!
如何通过线程注入到MSN,实时取得当前激活的MSN聊天窗口上面显示的双方聊天内容在本程序的memo控件中。能实现者,愿意酬谢RMB:100元。
联系QQ:34。33。16。893。
 
不知道你弄这个做什么

希望不是干坏事情
 
我想做个MSN来消息自动朗读程序,需要获取最后来的消息整个句子。然后朗读,谁能实现,请联系我,谢谢。
 
这个东西我有Demo

100太少,不过它也没什么技术含量
 
sendmessage getwindowtext
 
帮你顶,我也想知道,并且问过,但是没有人知道
 
在次帮你顶
 
to:老付
没有句柄的
 
TO:linuxping:你想要多少,我的经济能力有限。既然没有什么技术含量,请稍微收费帮助一下我。谢谢你!
 
你先用spy++看看聊天窗口的类名,richEdit的类名,然后什么都好做了

QQ:254930005
 
没有vc哪里有spy++
下载了一个,什么也查不到,所有窗口的东西就有一个句柄
 
高了半天还没有搞出来
 
可以用Delphi自带工具ws32看看聊天窗口的类名[:D]
 
也没有找到
 
或者,可以用注入内存空间然后转换字符串。或者,可以用枚举窗口的方法。
下面是在网上搜索到的.net代码,懂的请帮助看看,改为delphi的,访问DirectUIHWND窗口,并获取其中的文本内容.谢谢.

问题 最近研究界面,发现微软的程序都使用directuihwnd,可是我找不到关于这方面的介绍。
最近研究界面,发现微软的程序都使用directuihwnd,可是我找不到关于这方面的介绍。
响应者 1:.net下基于api封装的directuihwnd窗体访问 响应者 2:.net下基于api封装的directuihwnd窗体访问

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;
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
{

public static extern intptr findwindowex(
int parent /*hwnd*/,
int next /*hwnd*/,
string lpszclass,
string swindowtitle);


public static extern int accessibleobjectfromwindow(
intptr hwnd,
int dwobjectid,
guid refid,
ref iaccessible ppvobject);


public static extern int accessiblechildren(
accessibility.iaccessible pacccontainer,
int ichildstart,
int cchildren,
object[] rgvarchildren,
out int pcobtained);

}
public enum nativemsg:long {
childid_self = 0,
childid_1 = 1,
objid_client = 0xffffffc
}
#endregion
 
linuxping呢,你要多少?
 
我考老大,一个也没有看懂
 
http://www.vckbase.com/document/viewdoc/?id=883
再提供一点资料,谁将其转换为Delphi代码,实现功能者,付100元.
 

Similar threads

后退
顶部