Hello all,
I would like make an anti-afk bot for Gw2 using C#. I think I should use PostMessage fonction but I've some problems.
This is my code :
I have an error on LPARAM in my button1 code and I don't know where i may defined it.
Please help me.
PS : Thank's to buFFy! for his help and his button1 code.
I would like make an anti-afk bot for Gw2 using C#. I think I should use PostMessage fonction but I've some problems.
This is my code :
Code:
#region DllImport
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
static extern IntPtr SetFocus(IntPtr hWnd);
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32.dll", SetLastError = true)]
static extern bool PostMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
static extern int MapVirtualKey(int uCode, int uMapType);
#endregion
#region Consts
int WM_KEYDOWN = 0x0100;
int WM_KEYUP = 0x0101;
//Enum
enum VK : int
{
///Left mouse button
LBUTTON = 0x01,
///Right mouse button
RBUTTON = 0x02,
///Control-break processing
CANCEL = 0x03,
///Middle mouse button (three-button mouse)
MBUTTON = 0x04,
///Windows 2000/XP: X1 mouse button
XBUTTON1 = 0x05,
///Windows 2000/XP: X2 mouse button
XBUTTON2 = 0x06,
///BACKSPACE key
BACK = 0x08,
///TAB key
TAB = 0x09,
///CLEAR key
CLEAR = 0x0C,
///ENTER key
RETURN = 0x0D,
///SHIFT key
SHIFT = 0x10,
///CTRL key
CONTROL = 0x11,
///ALT key
MENU = 0x12,
///PAUSE key
PAUSE = 0x13,
///CAPS LOCK key
CAPITAL = 0x14,
///Input Method Editor (IME) Kana mode
KANA = 0x15,
///IME Hangul mode
HANGUL = 0x15,
///IME Junja mode
JUNJA = 0x17,
///IME final mode
FINAL = 0x18,
///IME Hanja mode
HANJA = 0x19,
///IME Kanji mode
KANJI = 0x19,
///ESC key
ESCAPE = 0x1B,
///IME convert
CONVERT = 0x1C,
///IME nonconvert
NONCONVERT = 0x1D,
///IME accept
ACCEPT = 0x1E,
///IME mode change request
MODECHANGE = 0x1F,
///SPACEBAR
SPACE = 0x20,
///PAGE UP key
PRIOR = 0x21,
///PAGE DOWN key
NEXT = 0x22,
///END key
END = 0x23,
///HOME key
HOME = 0x24,
///LEFT ARROW key
LEFT = 0x25,
///UP ARROW key
UP = 0x26,
///RIGHT ARROW key
RIGHT = 0x27,
///DOWN ARROW key
DOWN = 0x28,
///SELECT key
SELECT = 0x29,
///PRINT key
PRINT = 0x2A,
///EXECUTE key
EXECUTE = 0x2B,
///PRINT SCREEN key
SNAPSHOT = 0x2C,
///INS key
INSERT = 0x2D,
///DEL key
DELETE = 0x2E,
///HELP key
HELP = 0x2F,
///0 key
KEY_0 = 0x30,
///1 key
KEY_1 = 0x31,
///2 key
KEY_2 = 0x32,
///3 key
KEY_3 = 0x33,
///4 key
KEY_4 = 0x34,
///5 key
KEY_5 = 0x35,
///6 key
KEY_6 = 0x36,
///7 key
KEY_7 = 0x37,
///8 key
KEY_8 = 0x38,
///9 key
KEY_9 = 0x39,
///A key
KEY_A = 0x41,
///B key
KEY_B = 0x42,
///C key
KEY_C = 0x43,
///D key
KEY_D = 0x44,
///E key
KEY_E = 0x45,
///F key
KEY_F = 0x46,
///G key
KEY_G = 0x47,
///H key
KEY_H = 0x48,
///I key
KEY_I = 0x49,
///J key
KEY_J = 0x4A,
///K key
KEY_K = 0x4B,
///L key
KEY_L = 0x4C,
///M key
KEY_M = 0x4D,
///N key
KEY_N = 0x4E,
///O key
KEY_O = 0x4F,
///P key
KEY_P = 0x50,
///Q key
KEY_Q = 0x51,
///R key
KEY_R = 0x52,
///S key
KEY_S = 0x53,
///T key
KEY_T = 0x54,
///U key
KEY_U = 0x55,
///V key
KEY_V = 0x56,
///W key
KEY_W = 0x57,
///X key
KEY_X = 0x58,
///Y key
KEY_Y = 0x59,
///Z key
KEY_Z = 0x5A,
///Left Windows key (Microsoft Natural keyboard)
LWIN = 0x5B,
///Right Windows key (Natural keyboard)
RWIN = 0x5C,
///Applications key (Natural keyboard)
APPS = 0x5D,
///Computer Sleep key
SLEEP = 0x5F,
///Numeric keypad 0 key
NUMPAD0 = 0x60,
///Numeric keypad 1 key
NUMPAD1 = 0x61,
///Numeric keypad 2 key
NUMPAD2 = 0x62,
///Numeric keypad 3 key
NUMPAD3 = 0x63,
///Numeric keypad 4 key
NUMPAD4 = 0x64,
///Numeric keypad 5 key
NUMPAD5 = 0x65,
///Numeric keypad 6 key
NUMPAD6 = 0x66,
///Numeric keypad 7 key
NUMPAD7 = 0x67,
///Numeric keypad 8 key
NUMPAD8 = 0x68,
///Numeric keypad 9 key
NUMPAD9 = 0x69,
///Multiply key
MULTIPLY = 0x6A,
///Add key
ADD = 0x6B,
///Separator key
SEPARATOR = 0x6C,
///Subtract key
SUBTRACT = 0x6D,
///Decimal key
DECIMAL = 0x6E,
///Divide key
DIVIDE = 0x6F,
///F1 key
F1 = 0x70,
///F2 key
F2 = 0x71,
///F3 key
F3 = 0x72,
///F4 key
F4 = 0x73,
///F5 key
F5 = 0x74,
///F6 key
F6 = 0x75,
///F7 key
F7 = 0x76,
///F8 key
F8 = 0x77,
///F9 key
F9 = 0x78,
///F10 key
F10 = 0x79,
///F11 key
F11 = 0x7A,
///F12 key
F12 = 0x7B,
///F13 key
F13 = 0x7C,
///F14 key
F14 = 0x7D,
///F15 key
F15 = 0x7E,
///F16 key
F16 = 0x7F,
///F17 key
F17 = 0x80,
///F18 key
F18 = 0x81,
///F19 key
F19 = 0x82,
///F20 key
F20 = 0x83,
///F21 key
F21 = 0x84,
///F22 key, (PPC only) Key used to lock device.
F22 = 0x85,
///F23 key
F23 = 0x86,
///F24 key
F24 = 0x87,
///NUM LOCK key
NUMLOCK = 0x90,
///SCROLL LOCK key
SCROLL = 0x91,
///Left SHIFT key
LSHIFT = 0xA0,
///Right SHIFT key
RSHIFT = 0xA1,
///Left CONTROL key
LCONTROL = 0xA2,
///Right CONTROL key
RCONTROL = 0xA3,
///Left MENU key
LMENU = 0xA4,
///Right MENU key
RMENU = 0xA5,
}
#endregion
private void button1_Click(object sender, EventArgs e)
{
IntPtr hWnd = FindWindow(null, "Guild Wars 2");
SetForegroundWindow(hWnd);
SetFocus(hWnd);
System.Threading.Thread.Sleep(5000); //Wait 5 seconds
//Start bot
int x = MapVirtualKey(0x47, 0);
LPARAM lparam = (x << 16) | 1;
LPARAM lparamup = lparam | 0xc0000000;
PostMessage(hWnd, WM_KEYDOWN, x, lparam);
System.Threading.Thread.Sleep(30);
PostMessage(hWnd, WM_KEYUP, x, lparamup);
}
I have an error on LPARAM in my button1 code and I don't know where i may defined it.
Please help me.
PS : Thank's to buFFy! for his help and his button1 code.