使用c#制作赛尔号登录器
需求:
打开赛尔号官网,发现我的chrome浏览器无法运行Flash。这是因为Adobe 公司放弃了对 Flash Player 的支持。
那么如果我想要玩游戏,又不想下载别的浏览器,只好自己写一个登陆器了。
创建项目
首先创建新项目
然后建几个窗体
建好大致就是下面这样。
FromMainMenu窗体
然后设计窗体,mainMenu窗体如下。这里面用的是TabControl。
这里面要修改每一个tabPage的Name和Tag
然后添加事件SelectedIndexChanged。
双击窗体,就能生成一个构造函数。
FormMainMenu整体的源代码如下,起到一个选项卡切换窗体的功能,用来多开小号。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
using System.Windows.Forms;namespace SeerLauncher
{public partial class FormMainMenu : Form{public FormMainMenu(){InitializeComponent();}public int[] s = { 0, 0 , 0 , 0 , 0 , 0};//用来记录窗体是否打开过private void tabControl1_SelectedIndexChanged(object sender, EventArgs e){if (s[tabControl1.SelectedIndex] == 0){btnX_Click(sender, e);}} private void FormMainMenu_Load(object sender, EventArgs e){string formClass = "SeerLauncher.Form1";GenerateForm(formClass, tabControl1);}public void GenerateForm(string form, object sender){//反射生成窗体Form fm = (Form)Assembly.GetExecutingAssembly().CreateInstance(form);//设置窗体没有边框,加入到选项卡中fm.FormBorderStyle = FormBorderStyle.None;fm.TopLevel = false;fm.Parent = ((TabControl)sender).SelectedTab;fm.ControlBox = false;fm.Dock = DockStyle.Fill;fm.Show();s[((TabControl)sender).SelectedIndex] = 1;}private void btnX_Click(object sender, EventArgs e){string formClass = ((TabControl)sender).SelectedTab.Tag.ToString();GenerateForm(formClass, sender);}private void tabPage1_Click(object sender, EventArgs e){}private void tabPage3_Click(object sender, EventArgs e){}}
}
Form窗体
其中用了个menuStrip控件。
还有webBrowser控件。按照下面这样修改属性。
如果电脑上安装了高版本的IE浏览器,Webbrowser控件会使用IE7兼容模式显示网页内容。
解决方法是在注册表中为进程指定引用IE的版本号。
Form1源代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace SeerLauncher
{public partial class Form1 : Form{[DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")]public static extern int SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize);public Form1(){InitializeComponent();timer1.Enabled = true;timer1.Interval = 1000;timer1.Start();}private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e){webBrowser1.Refresh();}private void 清理缓存ToolStripMenuItem_Click(object sender, EventArgs e){Clear();}private void Clear(){SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);}private void timer1_Tick(object sender, EventArgs e){long Memory = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64;long Temp = Memory / 1024 / 1024;label1.Text = Temp + " " + "M";}private void checkBox1_CheckedChanged(object sender, EventArgs e){if (checkBox1.Checked){timer2.Enabled = true;timer2.Interval = 8000;timer2.Start();}else{timer2.Enabled = false;}}private void timer2_Tick(object sender, EventArgs e){long Memory = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64;long Temp = Memory / 1024 / 1024;if(Temp > 500){Clear();}}private void Form1_Load(object sender, EventArgs e){}private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e){}}
}
同理修改Form2到Form6。
整体效果
顺利登录赛尔号,而且具有多开小号、缓存清理等功能。