获取所有QQ窗口 举个例子,我打开了几个QQ的聊天窗口。怎么样获取这几个窗口(因为我想模拟键盘输入信息并发送)并将其置于最顶端。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 EnumWindows 然后根据标题筛选 通过EnumWindows可以枚举出所有窗口。但怎么通过句柄获取该窗口所包含的所有控件,例如所有按钮、所有文本框的内容? 09不是用的winForm,应该是用GDI+自己画的窗体,EnumWindows不管用了... 若是 在 C++中可以用Spylite或者是Spy++来查看窗口的句柄但是,QQ的不好搞 Delphi中利用钩子实现QQ聊天窗口的修改http://dev.yesky.com/477/2168977.shtml EnumWindows不过获取的时候。可能会被杀毒软件报警。 关键就是想办法取得窗口的类型,取标题不可靠然后就可以 findwindow取句柄已有句柄就可以findwindowex,getchild...enumwindow枚举窗口也可以试试 谁发个捕获09的 demo 看看啊 现成的DEMO么.没有.目前做的是群聊机器人,参与试用群:55793080 C#中哪有demo控件啊,好像没有吧 这是我当时用来找 BQQ 窗口的, 你参考一下子namespace notepadinsp{ using System; using System.Windows.Forms; using System.Diagnostics; class inspector { static void Main() { Process[] procs = Process.GetProcessesByName("bqq3.1.5"); if (procs.Length != 0) { IntPtr hwnd = procs[0].MainWindowHandle; // do something with the handle //... MessageBox.Show(new WindowWrapper(hwnd), "Hello World!"); } else MessageBox.Show("bqq is not running."); } } public class WindowWrapper : System.Windows.Forms.IWin32Window { IntPtr _hwnd; public WindowWrapper(IntPtr handle) { _hwnd = handle; } public IntPtr Handle { get { return _hwnd; } } }} 首先,很疑惑搂主的意图。qq2008以后版本,为防止编程者利用windos API勾选窗口事件,qq已经作了相应调整,用户所谓看到的窗口,只不过是腾迅自己画的一个图片,它不是一个窗口!切忌!如果你想用窗口获取的方式,对不起,获不到。不过办法还是有的,提供给你一个思路。比如获得最前端不重叠的完整图片,就是那个登陆画面,再利用点对点方式,获得完整窗口。如果想取密码,只能沉默了。 各位,首先声明 1、我不做坏事 2、说QQ 只是举个例子,如果QQ如上面几位所说的无法获取句柄的话那我们就用其它窗口来做测试。例如有一个窗口,是一个用于显示提示信息的窗口。由于这窗口的标题与其它窗口会相同,所以无法通过标题来判断。是否还有其它方式来判断当前获取到的窗口是否我想要的? 我现在通过EnumChildWindows可以获取到窗口的所有控件的句柄,但如果某个控件是文本框,怎么样把一个值赋予这个文本框? 我用旺旺的登录窗口试了一下SetWindowText方法,不行的。按钮就会赋值,但登录名称和密码都没变。 现在HWND已经有了,但给文本框赋值不成功。按钮就可以 基于Office开发报告(word文档)审查工具 执行这段代码后,为什么分别输出的是False和True? 求木板裁切最佳算法 在不同命名空间中,一个疑问? 一个很低级的问题! 谁有 "利用XML实现通用WEB报表打印 "的源代码。 static 的生命周期问题? 关于类调用问题? ILMerge合并时的错误,exe的config文件合并不进去 如何用HttpWebResponse 获取Input内容值 如何解除网络用户对本机文件的占用 winform 读取动态网页源文件
应该是用GDI+自己画的窗体,
EnumWindows不管用了...
http://dev.yesky.com/477/2168977.shtml
不过获取的时候。可能会被杀毒软件报警。
然后就可以 findwindow取句柄
已有句柄就可以findwindowex,getchild...
enumwindow枚举窗口也可以试试
{
using System;
using System.Windows.Forms; using System.Diagnostics;
class inspector
{
static void Main()
{
Process[] procs = Process.GetProcessesByName("bqq3.1.5");
if (procs.Length != 0)
{
IntPtr hwnd = procs[0].MainWindowHandle;
// do something with the handle
//...
MessageBox.Show(new WindowWrapper(hwnd), "Hello World!");
}
else
MessageBox.Show("bqq is not running.");
}
}
public class WindowWrapper : System.Windows.Forms.IWin32Window
{
IntPtr _hwnd; public WindowWrapper(IntPtr handle)
{
_hwnd = handle;
} public IntPtr Handle
{
get { return _hwnd; }
}
}
}
qq2008以后版本,为防止编程者利用windos API勾选窗口事件,qq已经作了相应调整,
用户所谓看到的窗口,只不过是腾迅自己画的一个图片,它不是一个窗口!切忌!
如果你想用窗口获取的方式,对不起,获不到。
不过办法还是有的,提供给你一个思路。
比如获得最前端不重叠的完整图片,就是那个登陆画面,再利用点对点方式,获得完整窗口。
如果想取密码,只能沉默了。