阿里旺旺自动回复工具开发<二>

本文介绍了一种通过InternetExplorer_Server控件获取HTML内容的方法,并提供了具体的C#代码实现。此外,还讨论了如何通过调整软件设置来简化HTML内容的分析过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天说到获取消息得从Internet Explorer_Server这个里面进行获取。获取这个控件里面的HTML内容是非常方便的,因为在Visual Studio中可以直接在引用中找到Interop.SHDocVw。通过这个可以很方便的将里面的内容获取出来。

获取HTML内容代码:

/**********获取内容的方法***********/
//hwndInterneExplorer_Server:浏览器控件句柄
//document:获取的IHTMLDocument2对象
public static void GetInterfacesByHandleOfInternetExplorer_Server(IntPtr hwndInterneExplorer_Server,
            out IHTMLDocument2 document)
        {
            document = null;

            Guid IID_IWebBrowser2 = typeof(SHDocVw.IWebBrowser2).GUID;
            Guid IID_IHTMLDocument2 = typeof(IHTMLDocument2).GUID;
            Guid SID_SWebBrowserApp = typeof(SHDocVw.IWebBrowserApp).GUID;

            try
            {
                int nMsg = WinApi.RegisterWindowMessage("WM_HTML_GETOBJECT");

                UIntPtr lRes;
                WinApi.SendMessageTimeout(hwndInterneExplorer_Server, nMsg, 0, 0,
                    WinApi.SMTO_ABORTIFHUNG, 1000, out lRes);

                if (!(bool)(lRes.ToUInt32() == 0))
                {
                    int hr = WinApi.ObjectFromLresult((int)lRes.ToUInt32(),
                        ref IID_IHTMLDocument2, 0, out document);

                    if ((document != null))
                    {
                        IntPtr puk = Marshal.GetIUnknownForObject(document);

                        IServiceProvider pro = document as IServiceProvider;

                        object objIWebBrowser2;
                        pro.QueryService(ref SID_SWebBrowserApp, ref IID_IWebBrowser2, out objIWebBrowser2);
                        IWebBrowser2 web = objIWebBrowser2 as IWebBrowser2;
                    }
                }
            }
            catch
            {
            }
        }



/**********IServiceProvider接口类***********/
[
    ComImport, Guid("6d5140c1-7436-11ce-8034-00aa006009fa"),
    InterfaceType(ComInterfaceType.InterfaceIsIUnknown)
    ]
    public interface IServiceProvider
    {
        void QueryService(ref Guid guidService,
            ref Guid riid,
            [MarshalAs(UnmanagedType.Interface)] out object ppvObject);
    }

  通过上面的代码就可以获得消息内容了,离成功又进了一步~~但是问题又来了,里面的HTML内容获取出来之后该怎么分析呢?在2010版本的旺旺中每次聊天消息都会自带上次的内容,所以获取的HTML内容比较麻烦不方便分析。于是看了看设置里面

把上面的勾去掉就可以将聊天框中的历史消息去掉,每次获取的HTML内容就是我们需要的消息内容了。至于怎么处理就不详细写出来了。既然消息已经获取到了,就可以往数据库查了然后获取对应回复。今天的问题又解决了,下一步就是怎么用WinApi点击自绘的发送按钮了。明天继续~~~~~

查看原文:http://www.likefeng.com/post/1041.html


本文出处:Likefeng.com | 李科锋的个人博客

转载于:https://www.cnblogs.com/likefeng/archive/2011/11/30/2269623.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值