WebBrower如何加载QQ快速登录插件

yeah86 2013-09-07 11:44:43
在webBrower里打开QQ相关页面时,可以像如图显示快速一键登录


如何可以做到? 请高人给个Demo最好,谢了!!
...全文
254 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeah86 2013-09-08
  • 打赏
  • 举报
回复
引用 1 楼 jshi123 的回复:
先添加引用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登录即可!
jshi123 2013-09-08
  • 打赏
  • 举报
回复

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);
		}
	}
}
jshi123 2013-09-08
  • 打赏
  • 举报
回复
先添加引用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);
}

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧