西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发其它知识 → 面向QQ编程 QQ窗口的抓取及如何自动化操作

面向QQ编程 QQ窗口的抓取及如何自动化操作

相关软件相关文章发表评论 来源:本站整理时间:2010/9/1 1:58:38字体大小:A-A+

作者:佚名点击:336次评论:0次标签: QQ

  • 类型:QQ 其它大小:774KB语言:中文 评分:6.3
  • 标签:
立即下载

本文在文章开始,先介绍下窗口的抓取软件,Spy++及AccExplorer32.exe,前者是大名鼎鼎的微软出品,几乎可以抓取所有的Windows窗口及控件(其实也是一个窗口),另外一个也是类似,功能可以互补一下。

首先看看两者的界面,在抓取QQ的【查找联系人/群/企业】的窗口时候的情况:

 
Sp++的界面

 
AccExplorer32.exe界面

两者界面不同,不过基本功能有重叠,Spy++提供的功能可能会更多一些,这两个软件都可以对列出的窗口进行一系列的操作,如可以找到相关的窗口信息,窗口位置,以及对各种窗口操作的信息,包括鼠标、键盘等一系列的操作都可以模拟出来,非常强大。 

为了模拟抓取窗口以及对窗口的各种操作,我们可以通过FindWindow和FindWindowEx、SendMessage、PostMessage等Windows消息来进行处理,便可实现基本的窗口、控件操作,另外按钮的操作,我们则可以模拟鼠标单击某个坐标点的方式实现按钮的单击操作模拟。 模拟的QQ界面窗口如下所示,是一个查找窗口的。

 

我们通过抓取窗口信息,我们看到该窗口下面只有两个可见窗口,分别对应两个输入控件,可以发现该窗口的一个输入(账号和昵称输入框中的任何一个)的Class 名称如下所示:

 

首先我们来创建一个界面,如下所示,用来模拟相关的操作。

 

我们在辅助类中定义几个函数用来实现窗口的操作 

         [DllImport("user32.dll")]

        private static extern IntPtr FindWindowEx(IntPtr parent, IntPtr childAfter, string className, string windowName);

        [DllImport("user32.dll", EntryPoint = "FindWindow")]
        private static extern IntPtr FindWindowWin32(string className, string windowName);

        [DllImport("user32.dll ")]
        public static extern int GetClassName(IntPtr hWnd, [Out] StringBuilder className, int maxCount);

        [DllImport("user32.dll")]
        private static extern int SendMessage(IntPtr window, int message, int wparam, int lparam);

        [DllImport("user32", CharSet = CharSet.Auto)]
        private extern static int SendMessage(IntPtr hWnd, int wMsg, int wParam, string lpstring);

        [DllImport("user32.dll")]
        private static extern int PostMessage(IntPtr window, int message, int wparam, int lparam);

     

 

 

在实际的按钮操作代码中,我们简化了具体的操作,只需要调用辅助类就可以了

         private void btnSearch_Click(object sender, EventArgs e)

        {
            Win32Window win = Win32Window.FindWindow(null, this.txtWindowName.Text);
            if (win != null)
            {
                ArrayList list = win.Children;
                foreach (Win32Window sub in list)
                {
                    if (sub.Visible && sub.ClassName == "ATL:30A4D1D8")
                    {
                        sub.SendMessage(WindowMessage.WM_SETTEXT, 0, this.txtInput.Text);
                    }
                }
            }
            int x = 288;
            int y = 328;
            win.ClickWindow("left", x, y, false);
        }

 

 

其中位置信息时通过Spy++监控出来的信息。

 

最后结果如下所示,实现控件内容的修改,并执行了单击按钮的操作,弹出添加好友确认信息。

 


 

如果要进行进一步的操作,在继续对弹出的窗口进一步分析即可,其他所有的窗口操作,原理一样,这样就可以实现很多程序的自动模拟操作,是不是很方便呢。

    qq空间克隆器
    (25)qq空间克隆器
    西西软件园提供好用的空间克隆器官方免费下载,提到空间相信很多人第一个想到就是如何去美化自己的空间更受好友关注,空间克隆器,使用它我们就可以浏览并一键克隆该站所提供的众多空间主题内容。克隆空间的同时还可以选择保留当前装扮的所有模块,更人性化。空间预览功能不用打开浏览器,小窗口中直接预览空间,简单实用。...更多>>
    qq空间音乐克隆器
    (8)qq空间音乐克隆器
    空间音乐播放器一直是黄钻等用户的特权,就是利用你的虚荣心赚你的钱,不过朋友访问你的空间能听到你最喜欢的音乐也确实是一件不错的事情,要是能免费就更好了。空间音乐克隆器是什么空间音乐克隆器是一款克隆别人空间音乐到自己空间使用的软件,相当于你可以使用这种软件来达到免费享受空间音乐播放器的母的。空间音乐克隆器免费下载大全小编主要整理了一些主流的空间音乐克隆器免费给大家分享,也是用户比较多的几款,小编都已经...更多>>

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)