WebBrower如何加载QQ快速登录插件
在webBrower里打开QQ相关页面时,可以像如图显示快速一键登录如何可以做到? 请高人给个Demo最好,谢了!! --------------------编程问答-------------------- 先添加引用Microsoft Internet Controls(SHDocVw)和Microsoft HTML Object Library(MSHTML)
--------------------编程问答--------------------
//using System;
//using System.Runtime.InteropServices;
//using System.Windows.Forms;
//using mshtml;
void QuickLoginQQ()
{
HtmlWindow frame = webBrowser1.Document.Window.Frames["login_frame"];
frame = frame.Document.Window.Frames["xui"];
var sp = (IServiceProvider)(frame.DomWindow);
Object browser = null;
sp.QueryService(ref IID_IWebBrowserApp, ref IID_IWebBrowser2, out browser);
var doc = (IHTMLDocument3)((SHDocVw.IWebBrowser2)browser).Document;
var div = (IHTMLElement2)doc.getElementById("qlogin_list");
var a = (IHTMLElement)div.getElementsByTagName("a").item(0);
a.click();
}
private static Guid IID_IWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046");
private static Guid IID_IWebBrowser2 = new Guid("D30C1661-CDAF-11D0-8A3E-00C04FC9E26E");
[ComImport(), ComVisible(true), Guid("6D5140C1-7436-11CE-8034-00AA006009FA"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IServiceProvider
{
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int QueryService(ref Guid guidService, ref Guid riid, [MarshalAs(UnmanagedType.Interface)] out object ppvObject);
}
这个好像不行,还总是报错。
其实我的要求就是像那个图那样显示出来登录QQ的列表,不需要让它直接登录。显示出来后让用户自己选择点击QQ登录即可! --------------------编程问答--------------------
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using mshtml;
namespace WinApp1
{
public partial class Form1 : Form
{
private WebBrowser webBrowser1;
private Button button1;
public Form1()
{
InitializeComponent();
webBrowser1 = new WebBrowser
{
Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right,
Size = new Size(ClientSize.Width, ClientSize.Height - 40),
};
button1 = new Button
{
Anchor = AnchorStyles.Bottom, // | AnchorStyles.Left | AnchorStyles.Right,
Location = new Point(ClientSize.Width/2 - 40, ClientSize.Height - 30),
Text = "login",
};
Controls.AddRange(new Control[]{webBrowser1, button1});
webBrowser1.Navigate("http://qzone.qq.com/");
button1.Click += (s, e) => QuickLoginQQ();
}
void QuickLoginQQ()
{
HtmlWindow frame = webBrowser1.Document.Window.Frames["login_frame"];
frame = frame.Document.Window.Frames["xui"];
var sp = (IServiceProvider)(frame.DomWindow);
Object browser = null;
sp.QueryService(ref IID_IWebBrowserApp, ref IID_IWebBrowser2, out browser);
var doc = (IHTMLDocument3)((SHDocVw.IWebBrowser2)browser).Document;
var div = (IHTMLElement2)doc.getElementById("qlogin_list");
var a = (IHTMLElement)div.getElementsByTagName("a").item(0);
a.click();
}
private static Guid IID_IWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046");
private static Guid IID_IWebBrowser2 = new Guid("D30C1661-CDAF-11D0-8A3E-00C04FC9E26E");
[ComImport(), ComVisible(true), Guid("6D5140C1-7436-11CE-8034-00AA006009FA"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IServiceProvider
{
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int QueryService(ref Guid guidService, ref Guid riid, [MarshalAs(UnmanagedType.Interface)] out object ppvObject);
}
}
}
补充:.NET技术 , C#