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();
}
}
}