程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#實現的QQ登錄器(1)

C#實現的QQ登錄器(1)

編輯:關於C語言

前幾天看到一篇文章說通過DOS命令就可以登陸QQ,在運行裡試了一下,真的可以

代碼如下:

Code

[copy to clipboard]

CODE:

QQ路徑 /start QQUIN:QQ號 PWDHASH:經過MD5和BASE64雙充加密的QQ密碼 /stat:登陸類型

今天就想做個QQ登錄器試一下,信息保存嘗試使用了序列化,發現功能真的太強大了,剛才整理了一下,現在完工,裡面做了大量的注釋,放出代碼,文章最下面有打包的下載:

QQLoginForm.cs窗體

Code

[copy to clipboard]

CODE:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;
using System.Diagnostics;
namespace QQLogin
{
  public partial class QQLoginForm : Form
  {
    public QQLoginForm()
    {
      InitializeComponent();
    }
    UserInfo ui;
    private void button1_Click(object sender, EventArgs e)
    {
      //單用戶登陸
      if (ui == null)
      {
        ui = new UserInfo();//如果沒有提取出來對象,就創建一個
      }
      if (ui != null)
      {
        ui.Username = this.txtUser.Text.Trim();
        ui.PassWord = this.txtPwd.Text;
        ui.Type = this.cboType.Text == "正常" ? "41" : "40";
        if (this.ValidateInput())
        {//驗證是否輸入完全
          if (string.IsNullOrEmpty(ui.Path))
          {//判斷是否有QQ路徑,如果沒有就打開對話框來選擇一下
            DialogResult dr = this.opfQQ.ShowDialog();
            if (dr == DialogResult.OK)
            {
              ui.Path = opfQQ.FileName;//將選擇的路徑賦值給對象
              this.LoginQQ(ui.Username, ui.PassWord, ui.Type, ui.Path);//登陸QQ
            }
          }
          else
          {
            this.LoginQQ(ui.Username, ui.PassWord, ui.Type, ui.Path);
          }
        }
        SerializeHelper.SerializeUserInfo(ui);//每次登陸都序列化保存一次
      }
    }
    private bool ValidateInput()
    {//驗證是否輸入完整
      if (this.txtUser.Text == "")
      {
        this.txtUser.Focus();
        return false;
      }
      else if(this.txtPwd.Text=="")
      {
        this.txtPwd.Focus();
        return false;
      }
      return true;
    }
    private void LoginQQ(string user,string pwd,string type,string path)
    {//登陸QQ的命令,通過CMD命令來執行
      Process MyProcess = new Process();
      //設定程序名
      MyProcess.StartInfo.FileName = "cmd.exe";
      //關閉Shell的使用
      MyProcess.StartInfo.UseShellExecute = false;
      //重定向標准輸入
      MyProcess.StartInfo.RedirectStandardInput = true;
      //重定向標准輸出
      MyProcess.StartInfo.RedirectStandardOutput = true;
      //重定向錯誤輸出
      MyProcess.StartInfo.RedirectStandardError = true;
      //設置不顯示窗口
      MyProcess.StartInfo.CreateNoWindow = true;
      //執行強制結束命令
      MyProcess.Start();
      MyProcess.StandardInput.WriteLine(path+" /start QQUIN:"+user+" PWDHASH:" + EncodeHash.pwdHash(pwd) + " /stat:"+type);//直接結束進程ID
      MyProcess.StandardInput.WriteLine("Exit");
    }
    private void btnExit_Click(object sender, EventArgs e)
    {
      Application.Exit();
    }
    private void txtUser_KeyPress(object sender, KeyPressEventArgs e)
    {
      if ((e.KeyChar < '0' || e.KeyChar > '9')&&e.KeyChar!=8)
      {//只能輸入數字和退格鍵
        e.Handled = true;
      }
    }
    private void QQLoginForm_Load(object sender, EventArgs e)
    {
      LoadInfo();//單用戶獲取
    }
    private void LoadInfo()
    {//單用戶獲取
      ui = SerializeHelper.DeserializeUserInfo();//返回獲取後對象
      if (ui != null)
      {
        this.txtUser.Text = ui.Username;//填充文本框
        this.txtPwd.Text = ui.PassWord;//填充密碼框
        this.cboType.SelectedIndex = ui.Type == "41" ? 0 : 1;//選擇登陸方式
      }
      else
      {
        this.cboType.SelectedIndex = 0;
      }
    }
    private void btnConfig_Click(object sender, EventArgs e)
    {
      ConfigForm cf = new ConfigForm();
      cf.ShowDialog();
      LoadInfo();
    }
  }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved