代码改变世界

c# 制作赛尔号登录器

2022-04-05 16:18  jym蒟蒻  阅读(597)  评论(0编辑  收藏  举报

使用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。

整体效果

顺利登录赛尔号,而且具有多开小号、缓存清理等功能。

在这里插入图片描述