管理路由器每次要输密码真是麻烦,自己来写个浏览器
来源:互联网 发布:网络信息发布审查制度 编辑:程序博客网 时间:2024/05/22 17:29
本人使用 TP-LINK 路由器,每次打开都会弹出窗口让输入密码,能不能简单一点呢?下面就是实现了自动登录功能的简易浏览器代码。
用 VS2008 新建一个 windows 应用程序,在默认窗体中放一个 WebBrowser 控件,执行时需带三个参数,分别是路由器IP地址,用户名,密码。
Program.cs 如下:
using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;namespace AutoLogin{ static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] ps) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1(ps)); } }}
Form1.cs 如下:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices;namespace AutoLogin{ public partial class Form1 : Form, IOleClientSite, IServiceProvider, IAuthenticate { string[] ps; string url, uid, pwd; public Form1(string[] ps) { this.ps = ps; InitializeComponent(); if (ps.Length >= 1) { url = ps[0]; if (ps.Length >= 3) { uid = ps[1]; pwd = ps[2]; } } } public static Guid IID_IAuthenticate = new Guid("79eac9d0-baf9-11ce-8c82-00aa004ba90b"); public const int INET_E_DEFAULT_ACTION = unchecked((int)0x800C0011); public const int S_OK = unchecked((int)0x00000000); private bool haspass = true; private void Form1_Load(object sender, EventArgs e) { webBrowser1.Navigate("about:blank"); object obj = webBrowser1.ActiveXInstance; IOleObject oc = obj as IOleObject; oc.SetClientSite(this as IOleClientSite); webBrowser1.Navigate(url); } #region IOleClientSite 成员 public void SaveObject() { } public void GetMoniker(uint dwAssign, uint dwWhichMoniker, object ppmk) { } public void GetContainer(object ppContainer) { ppContainer = this; } public void ShowObject() { } public void OnShowWindow(bool fShow) { } public void RequestNewObjectLayout() { } #endregion #region IServiceProvider 成员 public int QueryService(ref Guid guidService, ref Guid riid, out IntPtr ppvObject) { int nRet = guidService.CompareTo(IID_IAuthenticate); if (nRet == 0) { nRet = riid.CompareTo(IID_IAuthenticate); if (nRet == 0) { if (haspass && !string.IsNullOrEmpty(pwd)) { ppvObject = Marshal.GetComInterfaceForObject(this, typeof(IAuthenticate)); haspass = false; return S_OK; } } } ppvObject = new IntPtr(); return INET_E_DEFAULT_ACTION; } #endregion #region IAuthenticate 成员 public int Authenticate(ref IntPtr phwnd, ref IntPtr pszUsername, ref IntPtr pszPassword) { pszUsername = Marshal.StringToCoTaskMemAuto(uid); pszPassword = Marshal.StringToCoTaskMemAuto(pwd); return S_OK; } #endregion } #region COM Interfaces [ComImport, Guid("00000112-0000-0000-C000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IOleObject { void SetClientSite(IOleClientSite pClientSite); void GetClientSite(IOleClientSite ppClientSite); void SetHostNames(object szContainerApp, object szContainerObj); void Close(uint dwSaveOption); void SetMoniker(uint dwWhichMoniker, object pmk); void GetMoniker(uint dwAssign, uint dwWhichMoniker, object ppmk); void InitFromData(IDataObject pDataObject, bool fCreation, uint dwReserved); void GetClipboardData(uint dwReserved, IDataObject ppDataObject); void DoVerb(uint iVerb, uint lpmsg, object pActiveSite, uint lindex, uint hwndParent, uint lprcPosRect); void EnumVerbs(object ppEnumOleVerb); void Update(); void IsUpToDate(); void GetUserClassID(uint pClsid); void GetUserType(uint dwFormOfType, uint pszUserType); void SetExtent(uint dwDrawAspect, uint psizel); void GetExtent(uint dwDrawAspect, uint psizel); void Advise(object pAdvSink, uint pdwConnection); void Unadvise(uint dwConnection); void EnumAdvise(object ppenumAdvise); void GetMiscStatus(uint dwAspect, uint pdwStatus); void SetColorScheme(object pLogpal); } [ComImport, Guid("00000118-0000-0000-C000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IOleClientSite { void SaveObject(); void GetMoniker(uint dwAssign, uint dwWhichMoniker, object ppmk); void GetContainer(object ppContainer); void ShowObject(); void OnShowWindow(bool fShow); void RequestNewObjectLayout(); } [ComImport, GuidAttribute("6d5140c1-7436-11ce-8034-00aa006009fa"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown), ComVisible(false)] public interface IServiceProvider { [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int QueryService(ref Guid guidService, ref Guid riid, out IntPtr ppvObject); } [ComImport, GuidAttribute("79EAC9D0-BAF9-11CE-8C82-00AA004BA90B"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown), ComVisible(false)] public interface IAuthenticate { [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int Authenticate(ref IntPtr phwnd, ref IntPtr pszUsername, ref IntPtr pszPassword ); } #endregion}
- 管理路由器每次要输密码真是麻烦,自己来写个浏览器
- opengl32.dll真是麻烦!
- 真是麻烦啊
- 真是麻烦啊
- 技术真是麻烦啊
- 破解路由器管理登录密码
- 【Unity问题】为什么Unity 5.5.0f3(64-bit)免费版打开项目每次要输入账号密码
- jquery 防止change事件每次要刷新
- 下点东西真是麻烦
- 下载个教程真是麻烦
- 夸平台真是麻烦啊........
- 中兴F660路由器获取管理密码方式
- 解决修改代码每次要重启服务器
- c++bytebuffer留着用,要不每次要写或者找
- 修改别人的程序真是麻烦!!
- 做点东西还真是麻烦阿
- 邀请同学加入课堂真是麻烦
- cetos 6.5中文乱码真是麻烦呀
- Socket编程 消息传送 UDP协议(窗口实现) 客户端
- 解读C++对象的内存布局深层剖写
- 创建一个16整型的数组,先输出数组中元素值为3的倍数的数,在输出下标为3的倍数的元素值
- 最火的Android开源项目
- ubuntu 修改时区
- 管理路由器每次要输密码真是麻烦,自己来写个浏览器
- linux下的ln命令
- VC学习: CPoint,CSize,CRect类说明
- Oracle 10g Scheduler 特性
- Append与Direct-Path Insert(一)
- C++中的虚函数(virtual function)
- 李某某判10年我觉得不够呀
- Linux下Mysql的配置管理
- Append与Direct-Path Insert(二)