Best WinAppDriver code snippet using WinAppDriverUIRecorder.KBDLLHOOKSTRUCT.KeyboardHookProc
MouseKeyboardHook.cs
Source:MouseKeyboardHook.cs  
...260    {261        static bool s_bPausing = false;262        //Declare MouseHookProcedure as a HookProc type.263        static HookProc MouseHookProcedure;264        static HookProc KeyboardHookProcedure;265        //Declare the hook handle as an int.266        static uint s_hHookMouse = 0;267        static uint s_hHookKeyboard = 0;268        // WinUser.h269        public const int WM_MOUSEFIRST = 0x0200;270        public const int WM_MOUSEMOVE = 0x0200;271        public const int WM_LBUTTONDOWN = 0x0201;272        public const int WM_LBUTTONUP = 0x0202;273        public const int WM_LBUTTONDBLCLK = 0x0203;274        public const int WM_RBUTTONDOWN = 0x0204;275        public const int WM_RBUTTONUP = 0x0205;276        public const int WM_RBUTTONDBLCLK = 0x0206;277        public const int WM_MBUTTONDOWN = 0x0207;278        public const int WM_MBUTTONUP = 0x0208;279        public const int WM_MBUTTONDBLCLK = 0x0209;280        public const int WM_MOUSEWHEEL = 0x020A;281        public const int WM_XBUTTONDOWN = 0x020B;282        public const int WM_XBUTTONUP = 0x020C;283        public const int WM_XBUTTONDBLCLK = 0x020D;284        //Declare the mouse hook constant.285        public const uint WH_JOURNALRECORD = 0;286        public const uint WH_JOURNALPLAYBACK = 1;287        public const uint WH_KEYBOARD = 2;288        public const uint WH_GETMESSAGE = 3;289        public const uint WH_CALLWNDPROC = 4;290        public const uint WH_CBT = 5;291        public const uint WH_SYSMSGFILTER = 6;292        public const uint WH_MOUSE = 7;293        public const uint WH_HARDWARE = 8;294        public const uint WH_DEBUG = 9;295        public const uint WH_SHELL = 10;296        public const uint WH_FOREGROUNDIDLE = 11;297        public const uint WH_CALLWNDPROCRET = 12;298        public const uint WH_KEYBOARD_LL = 13;299        public const uint WH_MOUSE_LL = 14;300        [StructLayout(LayoutKind.Sequential)]301        public class POINT302        {303            public int X;304            public int Y;305        }306        [StructLayout(LayoutKind.Sequential)]307        public class MSLLHOOKSTRUCT308        {309            public POINT pt;310            public uint mouseData;311            public uint flags;312            public uint time;313            public uint dwExtraInfo;314        }315        [StructLayout(LayoutKind.Sequential)]316        public class KBDLLHOOKSTRUCT317        {318            public uint vkCode;319            public uint scanCode;320            public uint flags;321            public uint time;322            public uint dwExtraInfo;323        }324        private static void StartMouseHook()325        {326            StopMouseHook();327            MouseHookProcedure = new HookProc(MouseHookProc);328            s_hHookMouse = (uint)NativeMethods.SetWindowsHookExNative(MouseHookProcedure, (uint)WH_MOUSE_LL, NativeMethods.GetCurrentThreadId());329        }330        private static void StopMouseHook()331        {332            if (s_hHookMouse != 0)333            {334                NativeMethods.UninitializeHook(s_hHookMouse);335                s_hHookMouse = 0;336            }337            MouseHookProcedure = null;338        }339        private static void StartKeyboardHook()340        {341            StopKeyboardHook();342            KeyboardHookProcedure = new HookProc(KeyboardHookProc);343            s_hHookKeyboard = (uint)NativeMethods.SetWindowsHookExNative(KeyboardHookProcedure, (uint)WH_KEYBOARD_LL, 0);344        }345        private static void StopKeyboardHook()346        {347            if (s_hHookKeyboard != 0)348            {349                NativeMethods.UninitializeHook(s_hHookKeyboard);350                s_hHookKeyboard = 0;351            }352            KeyboardHookProcedure = null;353        }354        public static bool StartHook()355        {356            MouseKeyboardHook.StartMouseHook();357            MouseKeyboardHook.StartKeyboardHook();358            return (s_hHookKeyboard != 0 && s_hHookMouse != 0);359        }360        public static void StopHook()361        {362            MouseKeyboardHook.StopMouseHook();363            MouseKeyboardHook.StopKeyboardHook();364        }365        public static IntPtr KeyboardHookProc(int nCode, IntPtr wParam, IntPtr lParam)366        {367            if (nCode < 0)368            {369                return NativeMethods.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam);370            }371            KeyboardEvents kEvent = (KeyboardEvents)wParam.ToInt32();372            KBDLLHOOKSTRUCT kbd = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(KBDLLHOOKSTRUCT));373            int scanCode = (int)kbd.scanCode;374            VirtualKeys vk = (VirtualKeys)kbd.vkCode;375            if (vk == VirtualKeys.VK_PAUSE && kEvent == KeyboardEvents.KeyDown)376            {377                s_bPausing = !s_bPausing;378            }379            // Record encoded key virtual key...KeyboardHookProc
Using AI Code Generation
1using System;2using System.Windows.Forms;3using WinAppDriverUIRecorder;4{5    {6        public Form1()7        {8            InitializeComponent();9        }10        private void Form1_Load(object sender, EventArgs e)11        {12            KeyboardHookProc.KeyPress += new KeyPressEventHandler(KeyboardHookProc_KeyPress);13        }14        private void KeyboardHookProc_KeyPress(object sender, KeyPressEventArgs e)15        {16            textBox1.Text = ((int)e.KeyChar).ToString();17        }18    }19}20using System;21using System.Windows.Forms;22using WinAppDriverUIRecorder;23{24    {25        public Form1()26        {27            InitializeComponent();28        }29        private void Form1_Load(object sender, EventArgs e)30        {31            MouseHookProc.MouseClick += new MouseClickEventHandler(MouseHookProc_MouseClick);32        }33        private void MouseHookProc_MouseClick(object sender, MouseClickEventArgs e)34        {35            textBox1.Text = e.Button.ToString();36        }37    }38}39using System;40using System.Windows.Forms;41using WinAppDriverUIRecorder;42{43    {44        public Form1()45        {46            InitializeComponent();47        }48        private void Form1_Load(object sender, EventArgs e)49        {50            MouseHookProc.MouseMove += new MouseMoveEventHandler(MouseHookProc_MouseMove);51        }52        private void MouseHookProc_MouseMove(objectKeyboardHookProc
Using AI Code Generation
1using WinAppDriverUIRecorder;2using System;3using System.Runtime.InteropServices;4using System.Windows.Forms;5{6    {7        public Form1()8        {9            InitializeComponent();10        }11        private void Form1_Load(object sender, EventArgs e)12        {13            KBDLLHOOKSTRUCT obj = new KBDLLHOOKSTRUCT();14            obj.KeyboardHookProc(1, 1, 1, 1);15        }16    }17}KeyboardHookProc
Using AI Code Generation
1using System;2using System.Runtime.InteropServices;3using System.Windows.Forms;4{5    {6        public static int WM_KEYDOWN = 0x0100;7        public static int WM_KEYUP = 0x0101;8        public static int WM_SYSKEYDOWN = 0x0104;9        public static int WM_SYSKEYUP = 0x0105;10        public static int WH_KEYBOARD_LL = 13;11        public static IntPtr SetHook(LowLevelKeyboardProc proc)12        {13            using (ProcessModule curModule = Process.GetCurrentProcess().MainModule)14            {15                return SetWindowsHookEx(WH_KEYBOARD_LL, proc, GetModuleHandle(curModule.ModuleName), 0);16            }17        }18        public delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam);19        public static LowLevelKeyboardProc _proc = HookCallback;20        public static IntPtr _hookID = IntPtr.Zero;21        public static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)22        {23            if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)24            {25                int vkCode = Marshal.ReadInt32(lParam);26                Console.WriteLine((Keys)vkCode);27            }28            return CallNextHookEx(_hookID, nCode, wParam, lParam);29        }30        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]31        public static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);32        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]33        [return: MarshalAs(UnmanagedType.Bool)]34        public static extern bool UnhookWindowsHookEx(IntPtr hhk);35        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]36        public static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);37        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]38        public static extern IntPtr GetModuleHandle(string lpModuleName);39    }40}41using System;42using System.Diagnostics;43using System.Runtime.InteropServices;44using System.Windows.Forms;45{KeyboardHookProc
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using System.Runtime.InteropServices;7using System.Diagnostics;8using System.Windows.Forms;9{10    {11        public const int WH_KEYBOARD_LL = 13;12        public const int WM_KEYDOWN = 0x0100;13        public const int WM_KEYUP = 0x0101;14        public const int WM_SYSKEYDOWN = 0x0104;15        public const int WM_SYSKEYUP = 0x0105;16        private static LowLevelKeyboardProc _proc = HookCallback;17        private static IntPtr _hookID = IntPtr.Zero;18        public static void SetHook()19        {20            _hookID = SetHook(_proc);21        }22        public static void UnHook()23        {24            UnhookWindowsHookEx(_hookID);25        }26        private static IntPtr SetHook(LowLevelKeyboardProc proc)27        {28            using (Process curProcess = Process.GetCurrentProcess())29            using (ProcessModule curModule = curProcess.MainModule)30            {31                return SetWindowsHookEx(WH_KEYBOARD_LL, proc,32                    GetModuleHandle(curModule.ModuleName), 0);33            }34        }35        private delegate IntPtr LowLevelKeyboardProc(36            int nCode, IntPtr wParam, IntPtr lParam);37        private static IntPtr HookCallback(38        {39            if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)40            {41                int vkCode = Marshal.ReadInt32(lParam);42                Console.WriteLine((Keys)vkCode);43            }44            return CallNextHookEx(_hookID, nCode, wParam, lParam);45        }46        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]47        private static extern IntPtr SetWindowsHookEx(int idHook,48            LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);49        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]50        [return: MarshalAs(UnmanagedType.Bool)]51        private static extern bool UnhookWindowsHookEx(IntPtr hhk);52        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]53        private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode,54            IntPtr wParam, IntPtr lParam);55        [DllImport("kernel32.dll",KeyboardHookProc
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6{7    {8        public const int WH_KEYBOARD_LL = 13;9        public const int WM_KEYDOWN = 0x0100;10        public const int WM_KEYUP = 0x0101;11        public const int WM_SYSKEYDOWN = 0x0104;12        public const int WM_SYSKEYUP = 0x0105;13        public delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, ref KBDLLHOOKSTRUCT lParam);14        [System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)]15        public static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);16        [System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)]17        [return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]18        public static extern bool UnhookWindowsHookEx(IntPtr hhk);19        [System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)]20        public static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, ref KBDLLHOOKSTRUCT lParam);21        [System.Runtime.InteropServices.DllImport("kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)]22        public static extern IntPtr GetModuleHandle(string lpModuleName);23        public static IntPtr SetHook(LowLevelKeyboardProc proc)24        {25            using (System.Diagnostics.Process curProcess = System.Diagnostics.Process.GetCurrentProcess())26            using (System.Diagnostics.ProcessModule curModule = curProcess.MainModule)27            {28                return SetWindowsHookEx(WH_KEYBOARD_LL, proc, GetModuleHandle(curModule.ModuleName), 0);29            }30        }31        public static void UnHook(IntPtr hhk)32        {33            UnhookWindowsHookEx(hhk);34        }35    }36}37using System;38using System.Collections.Generic;KeyboardHookProc
Using AI Code Generation
1KBDLLHOOKSTRUCT obj = new KBDLLHOOKSTRUCT();2obj.KeyboardHookProc(1, 1, 1, 1, 1);3KBDLLHOOKSTRUCT obj = new KBDLLHOOKSTRUCT();4obj.KeyboardHookProc(1, 1, 1, 1, 1);5KBDLLHOOKSTRUCT obj = new KBDLLHOOKSTRUCT();6obj.KeyboardHookProc(1, 1, 1, 1, 1);7KBDLLHOOKSTRUCT obj = new KBDLLHOOKSTRUCT();8obj.KeyboardHookProc(1, 1, 1, 1, 1);9KBDLLHOOKSTRUCT obj = new KBDLLHOOKSTRUCT();10obj.KeyboardHookProc(1, 1, 1, 1, 1);11KBDLLHOOKSTRUCT obj = new KBDLLHOOKSTRUCT();12obj.KeyboardHookProc(1, 1, 1, 1, 1);13KBDLLHOOKSTRUCT obj = new KBDLLHOOKSTRUCT();14obj.KeyboardHookProc(1, 1, 1, 1, 1);15KBDLLHOOKSTRUCT obj = new KBDLLHOOKSTRUCT();16obj.KeyboardHookProc(1, 1, 1, 1, 1);KeyboardHookProc
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Runtime.InteropServices;5using System.Text;6using System.Threading.Tasks;7{8    {9        public const int WH_KEYBOARD_LL = 13;10        public const int WH_MOUSE_LL = 14;11        public delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam);12        public delegate IntPtr LowLevelMouseProc(int nCode, IntPtr wParam, IntPtr lParam);13        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]14        public static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);15        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]16        public static extern IntPtr SetWindowsHookEx(int idHook, LowLevelMouseProc lpfn, IntPtr hMod, uint dwThreadId);17        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]18        [return: MarshalAs(UnmanagedType.Bool)]19        public static extern bool UnhookWindowsHookEx(IntPtr hhk);20        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]21        public static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);22        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]23        public static extern IntPtr GetModuleHandle(string lpModuleName);24    }25}26using System;27using System.Collections.Generic;28using System.Linq;29using System.Runtime.InteropServices;30using System.Text;31using System.Threading.Tasks;32{33    {34        public int vkCode;35        public int scanCode;36        public int flags;37        public int time;38        public IntPtr dwExtraInfo;39    }40}41using System;42using System.Collections.Generic;43using System.Linq;44using System.Runtime.InteropServices;45using System.Text;46using System.Threading.Tasks;47{KeyboardHookProc
Using AI Code Generation
1using System;2using System.Diagnostics;3using System.Runtime.InteropServices;4using System.Windows.Forms;5{6    {7        public delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, ref KBDLLHOOKSTRUCT lParam);8        public delegate IntPtr LowLevelMouseProc(int nCode, IntPtr wParam, ref MSLLHOOKSTRUCT lParam);9        public static LowLevelKeyboardProc _proc = KeyboardHookProc;10        public static LowLevelMouseProc _proc2 = MouseHookProc;11        public static IntPtr _hookID = IntPtr.Zero;12        public static IntPtr _hookID2 = IntPtr.Zero;13        public static void SetHook()14        {15            using (Process curProcess = Process.GetCurrentProcess())16            using (ProcessModule curModule = curProcess.MainModule)17            {18                _hookID = SetWindowsHookEx(WH_KEYBOARD_LL, _proc, GetModuleHandle(curModule.ModuleName), 0);19                _hookID2 = SetWindowsHookEx(WH_MOUSE_LL, _proc2, GetModuleHandle(curModule.ModuleName), 0);20            }21        }22        public static void UnHook()23        {24            UnhookWindowsHookEx(_hookID);25            UnhookWindowsHookEx(_hookID2);26        }27        private static IntPtr KeyboardHookProc(int nCode, IntPtr wParam, ref KBDLLHOOKSTRUCT lParam)28        {29            if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)30            {31                if (lParam.vkCode == 0x5B || lParam.vkCode == 0x5C)32                    return (IntPtr)1;33                Control ctrl = Control.FromHandle(lParam.hwnd);34                if (ctrl != null && ctrl is TextBox)35                {36                    if (lParam.vkCode == 0x08)37                    {38                        if (((TextBox)ctrl).Text.Length > 0)39                        {40                            ((TextBox)ctrl).Text = ((TextBox)ctrl).Text.Substring(0, ((TextBox)ctrl).Text.Length - 1);41                        }42                    }43                    {44                        ((TextBox)ctrl).Text += lParam.vkCode;45                    }46                    return (IntPtr)1;47                }48                {KeyboardHookProc
Using AI Code Generation
1{2    {3        public Form1()4        {5            InitializeComponent();6        }7        private void Form1_Load(object sender, EventArgs e)8        {9            Capture.SetHook(this);10        }11    }12}13{14    {15        public static void SetHook(Form1 form1)16        {17            using (var hook = new KeyboardHook())18            {19                hook.KeyPressed += (sender, e) => {20                    form1.textBox1.Text += e.Key.ToString() + Environment.NewLine;21                    form1.textBox1.SelectionStart = form1.textBox1.Text.Length;22                    form1.textBox1.ScrollToCaret();23                    File.AppendAllText("C:\\Users\\Public\\Documents\\WinAppDriverUIRecorder\\4.cs", e.Key.ToString() + Environment.NewLine);24                };25                Application.Run();26            }27        }28    }29}30{31    {32        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]33        private static extern IntPtr SetWindowsHookEx(int idHook, KeyboardHook.LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);34        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]35        [return: MarshalAs(UnmanagedType.Bool)]36        private static extern bool UnhookWindowsHookEx(IntPtr hhk);37        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]38        private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);39        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]40        private static extern IntPtr GetModuleHandle(string lpModuleName);41        private const int WH_KEYBOARD_LL = 13;42        private const int WM_KEYDOWN = 0x0100;43        private const int WM_KEYUP = 0x0101;44        private const int WM_SYSKEYDOWN = 0x0104;Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
