hook 钩子程序一 main (wow自动登录)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Threading;

namespace Hook2
{
    public partial class Form2 : Form
    {
        [DllImport("user32.dll")]
        static extern void BlockInput(bool Block);
        [DllImport("User32.dll")]
        private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
        [DllImport("User32.dll")]
        private extern static bool ShowWindow(IntPtr hWnd, int nCmdShow);
        [DllImport("User32.dll")]
        private extern static IntPtr GetForegroundWindow();
        [DllImport("user32.dll")]
        public extern static int GetSystemMetrics(int which);
        [DllImport("User32.dll")]
        public extern static bool SetWindowPos(IntPtr hWnd, IntPtr hPos, int x, int y, int cx, int cy, uint nflags);
        [DllImport("User32.dll")]
        private extern static IntPtr SetActiveWindow(IntPtr hWnd);
        [DllImport("User32.dll")]
        private extern static bool SetForegroundWindow(IntPtr hWnd);
        [DllImport("User32.dll")]
        private extern static bool BringWindowToTop(IntPtr hWnd);
        [DllImport("user32")]
        public extern static int SetCursorPos(int x, int y);


        private string strGameAcc;
        private string strGamePasswd;
        private Process myProcess;
        private UserActivityHook actHook;
        private static IntPtr wowProName;
        private bool bleft;
        private bool btab;
        private bool bhome;

        public Form2()
        {
            InitializeComponent();
          
            this.btab = false;
            this.bhome = false;
            this.bleft = false;
           
        }

        private void button2_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();
            textBox1.Text = openFileDialog1.FileName;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            start();
        }
        private void start()
        {
            KB.BlockKeyBoardInput(true);
            if (this.textBox1.Text == "")
            {
                MessageBox.Show("/u6ca1/u6709/u627e/u5230/u6587/u4ef6/u53ef/u4ee5/u8fd0/u884c/uff01");
            }
            else
            {
              
                Rectangle rectangle1 = Screen.AllScreens[0].Bounds;
                IntPtr hWnd = Form2.FindWindow("Shell_TrayWnd", null);
                Form2.ShowWindow(hWnd, 0);
                try
                {
                    if (this.myProcess != null)
                    {
                        this.myProcess.Dispose();
                    }
                    this.myProcess = new Process();
                    this.myProcess.StartInfo.FileName = this.textBox1.Text;
                    this.myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
                    this.myProcess.StartInfo.CreateNoWindow = true;
                    this.myProcess.Start();
                    this.RunMyWoW();
                }
                catch (Win32Exception exception1)
                {
                    if (exception1.NativeErrorCode == 2)
                    {
                        MessageBox.Show(exception1.Message + ". Check the path.");
                        return;
                    }
                    if (exception1.NativeErrorCode == 5)
                    {
                        MessageBox.Show(exception1.Message + ". You do not have permission to print this file.");
                    }
                    return;
                }
                finally
                {
                    this.actHook.Stop();
                    Form2.ShowWindow(hWnd, 5);
                }
            }
        }

        private void RunMyWoW()
        {
            KB.BlockKeyBoardInput(true);
            try
            {
                this.actHook.Start();
                strGameAcc = "test";
                strGamePasswd = "test";
                Point point1 = new Point(0);
                Point point2 = new Point(0);
                this.checkScreenDispPw(ref point1);
                this.checkScreenDispAc(ref point2);
                while (this.myProcess.WaitForInputIdle())
                {
                    Thread.Sleep(0x11f8);
                    Form2.wowProName = Form2.GetForegroundWindow();
                    IntPtr hPos = IntPtr.Zero;
                    uint nflags = 0x40;
                    Form2.SetWindowPos(this.myProcess.MainWindowHandle, hPos, 0, 0, Form2.ScreenX, Form2.ScreenY, nflags);
                    Thread.Sleep(0x64);
                    Form2.SetActiveWindow(this.myProcess.MainWindowHandle);
                    this.MinCurrentProcess();
                    IntPtr ptr1 = Form2.GetForegroundWindow();
                    if (ptr1 == Form2.wowProName)
                    {
                        this.bleft = true;
                        Form2.SetCursorPos(point2.X, point2.Y);
                        Mouse.LeftClick();
                        this.bleft = false;
                        Thread.Sleep(0x64);
                        SendKeys.SendWait(this.strGameAcc);
                        Thread.Sleep(0x64);
                    }
                    this.MinCurrentProcess();
                    ptr1 = Form2.GetForegroundWindow();


                    this.MinCurrentProcess();
                    if (this.strGamePasswd != "")
                    {
                        ptr1 = Form2.GetForegroundWindow();
                        if (ptr1 == Form2.wowProName)
                        {
                            this.bleft = true;
                            Form2.SetCursorPos(point1.X, point1.Y);
                            Mouse.LeftClick();
                            this.bleft = false;
                            Thread.Sleep(0x64);
                            SendKeys.SendWait(this.strGamePasswd);
                            Thread.Sleep(0x64);
                        }
                    }
                    this.btab = true;
                    KB.SendKey(KB.VirtualKeys.VK_RETURN);
                    return;
                }
            }
            catch (Exception exception1)
            {
                throw new Exception(exception1.Message);
            }
            finally
            {
                this.actHook.Stop();
                KB.BlockKeyBoardInput(false);
            }
        }
        //method
        private void MinCurrentProcess()
        {
            IntPtr hWnd = Form2.GetForegroundWindow();
            Process process1 = Process.GetCurrentProcess();
            if ((hWnd != process1.MainWindowHandle) && (hWnd != this.myProcess.MainWindowHandle))
            {
                Form2.ShowWindow(hWnd, 2);
            }
        }
        private bool checkScreenDispAc(ref Point pt)
        {
            int num2 = 0;
            bool flag1 = true;
            int num1 = Form2.ScreenX;
            num2 = Form2.ScreenY;
            if ((num1 == 0x400) && (num2 == 0x300))
            {
                pt.X = 0x1cc;
                pt.Y = 0x19f;
                return flag1;
            }
            if ((num1 == 0x320) && (num2 == 0x258))
            {
                pt.X = 0x168;
                pt.Y = 0x14a;
                return flag1;
            }
            if ((num1 == 0x480) && (num2 == 0x360))
            {
                pt.X = 0x208;
                pt.Y = 0x1d0;
                return flag1;
            }
            return false;
        }

        private bool checkScreenDispPw(ref Point pt)
        {
            int num2 = 0;
            bool flag1 = true;
            int num1 = Form2.ScreenX;
            num2 = Form2.ScreenY;
            if ((num1 == 0x400) && (num2 == 0x300))
            {
                //pt.X = 0x1cc;
                pt.X = 0x1cc - 0x1cc * 4 / 100;
                pt.Y = 0x1e0;
                return flag1;
            }
            if ((num1 == 0x320) && (num2 == 0x258))
            {
                //pt.X = 0x168;
                pt.X = 0x168 - 0x168 * 4 / 100;
                pt.Y = 0x183;
                return flag1;
            }
            if ((num1 == 0x480) && (num2 == 0x360))
            {
                //pt.X = 0x208;
                pt.X = 0x208 - 0x208 * 4 / 100;
                pt.Y = 0x224;
                return flag1;
            }
            return false;
        }


        // Properties
        public static int ScreenX
        {
            get
            {
                return Form2.GetSystemMetrics(0);
            }
        }

        public static int ScreenY
        {
            get
            {
                return Form2.GetSystemMetrics(1);
            }
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            this.actHook = new UserActivityHook();
            this.actHook.OnMouseActivity += new MouseEventHandler(this.MouseMoved);
            this.actHook.KeyDown += new KeyEventHandler(this.MyKeyDown);
            this.actHook.KeyPress += new KeyPressEventHandler(this.MyKeyPress);
            this.actHook.KeyUp += new KeyEventHandler(this.MyKeyUp);
        }
        public void MouseMoved(object sender, MouseEventArgs e)
        {
            int num1 = e.Clicks;
        }

        public void MyKeyDown(object sender, KeyEventArgs e)
        {
            if ((((e.KeyData.ToString().ToLower().IndexOf("lwin") > 0) || (e.KeyData.ToString().ToLower() == "shift")) || ((e.KeyData.ToString().ToLower() == "right") || (e.KeyData.ToString().ToLower().IndexOf("page") > 0))) || (((e.KeyData.ToString().ToLower() == "end") || (e.KeyData.ToString().ToLower() == "up")) || (((e.KeyData.ToString().ToLower() == "down") || (e.KeyData.ToString().ToLower().IndexOf("esc") > 0)) || (e.KeyData.ToString().ToLower().IndexOf("menu") > 0))))
            {
                e.Handled = true;
            }
            if (!this.btab && ((e.KeyData.ToString().ToLower() == "tab") || (e.KeyData.ToString().ToLower() == "return")))
            {
                e.Handled = true;
            }
            if (!this.bhome && (e.KeyData.ToString().ToLower() == "home"))
            {
                e.Handled = true;
            }
            if (!this.bleft && (e.KeyData.ToString().ToLower() == "left"))
            {
                e.Handled = true;
            }
        }

        public void MyKeyPress(object sender, KeyPressEventArgs e)
        {
            if ((((e.KeyChar.ToString().ToLower().IndexOf("lwin") > 0) || (e.KeyChar.ToString().ToLower() == "shift")) || ((e.KeyChar.ToString().ToLower() == "right") || (e.KeyChar.ToString().ToLower().IndexOf("page") > 0))) || (((e.KeyChar.ToString().ToLower() == "end") || (e.KeyChar.ToString().ToLower() == "up")) || (((e.KeyChar.ToString().ToLower() == "down") || (e.KeyChar.ToString().ToLower().IndexOf("esc") > 0)) || (e.KeyChar.ToString().ToLower().IndexOf("menu") > 0))))
            {
                e.Handled = true;
            }
            if (!this.btab && ((e.KeyChar.ToString().ToLower() == "tab") || (e.KeyChar.ToString().ToLower() == "return")))
            {
                e.Handled = true;
            }
            if (!this.bhome && (e.KeyChar.ToString().ToLower() == "home"))
            {
                e.Handled = true;
            }
            if (!this.bleft && (e.KeyChar.ToString().ToLower() == "left"))
            {
                e.Handled = true;
            }
        }

        public void MyKeyUp(object sender, KeyEventArgs e)
        {
            if ((((e.KeyData.ToString().ToLower().IndexOf("lwin") > 0) || (e.KeyData.ToString().ToLower() == "shift")) || ((e.KeyData.ToString().ToLower() == "right") || (e.KeyData.ToString().ToLower().IndexOf("page") > 0))) || (((e.KeyData.ToString().ToLower() == "end") || (e.KeyData.ToString().ToLower() == "up")) || (((e.KeyData.ToString().ToLower() == "down") || (e.KeyData.ToString().ToLower().IndexOf("esc") > 0)) || (e.KeyData.ToString().ToLower().IndexOf("menu") > 0))))
            {
                e.Handled = true;
            }
            if (!this.btab && ((e.KeyData.ToString().ToLower() == "tab") || (e.KeyData.ToString().ToLower() == "return")))
            {
                e.Handled = true;
            }
            if (!this.bhome && (e.KeyData.ToString().ToLower() == "home"))
            {
                e.Handled = true;
            }
            if (!this.bleft && (e.KeyData.ToString().ToLower() == "left"))
            {
                e.Handled = true;
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
           
            this.actHook.Stop();
            base.Close();
            Application.Exit();
        }
      
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值