66using System . Threading . Tasks ;
77using System . Windows . Forms ;
88
9- namespace Stx
9+ namespace LiveWPM
1010{
1111 static class Program
1212 {
13- private static FormWPM formWPM ;
14-
1513 /// <summary>
1614 /// The main entry point for the application.
1715 /// </summary>
@@ -20,52 +18,10 @@ static void Main()
2018 {
2119 Application . EnableVisualStyles ( ) ;
2220 Application . SetCompatibleTextRenderingDefault ( false ) ;
23- formWPM = new FormWPM ( ) ;
24- _hookID = SetHook ( _proc ) ;
25- Application . Run ( formWPM ) ;
26- UnhookWindowsHookEx ( _hookID ) ;
21+ WindowsKeyboardHook . EnableHook ( ) ;
22+ Application . Run ( new FormWPM ( ) ) ;
23+ WindowsKeyboardHook . DisableHook ( ) ;
2724 }
2825
29- private const int WH_KEYBOARD_LL = 13 ;
30- private const int WM_KEYDOWN = 0x0100 ;
31- private static LowLevelKeyboardProc _proc = HookCallback ;
32- private static IntPtr _hookID = IntPtr . Zero ;
33-
34- private static IntPtr SetHook ( LowLevelKeyboardProc proc )
35- {
36- using ( Process curProcess = Process . GetCurrentProcess ( ) )
37- using ( ProcessModule curModule = curProcess . MainModule )
38- {
39- return SetWindowsHookEx ( WH_KEYBOARD_LL , proc ,
40- GetModuleHandle ( curModule . ModuleName ) , 0 ) ;
41- }
42- }
43-
44- private delegate IntPtr LowLevelKeyboardProc ( int nCode , IntPtr wParam , IntPtr lParam ) ;
45-
46- private static IntPtr HookCallback ( int nCode , IntPtr wParam , IntPtr lParam )
47- {
48- if ( nCode >= 0 && wParam == ( IntPtr ) WM_KEYDOWN )
49- {
50- //int vkCode = Marshal.ReadInt32(lParam);
51- //Keys k = (Keys)vkCode;
52- formWPM . currentKeyPresses ++ ;
53- }
54-
55- return CallNextHookEx ( _hookID , nCode , wParam , lParam ) ;
56- }
57-
58- [ DllImport ( "user32.dll" , CharSet = CharSet . Auto , SetLastError = true ) ]
59- private static extern IntPtr SetWindowsHookEx ( int idHook , LowLevelKeyboardProc lpfn , IntPtr hMod , uint dwThreadId ) ;
60-
61- [ DllImport ( "user32.dll" , CharSet = CharSet . Auto , SetLastError = true ) ]
62- [ return : MarshalAs ( UnmanagedType . Bool ) ]
63- private static extern bool UnhookWindowsHookEx ( IntPtr hhk ) ;
64-
65- [ DllImport ( "user32.dll" , CharSet = CharSet . Auto , SetLastError = true ) ]
66- private static extern IntPtr CallNextHookEx ( IntPtr hhk , int nCode , IntPtr wParam , IntPtr lParam ) ;
67-
68- [ DllImport ( "kernel32.dll" , CharSet = CharSet . Auto , SetLastError = true ) ]
69- private static extern IntPtr GetModuleHandle ( string lpModuleName ) ;
7026 }
7127}
0 commit comments