//Hook Procedure private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { //Kiem tra xem co thuc hien hay goi tiep ham CallNextHookEx if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN || wParam == (IntPtr)WM_SYSKEYDOWN) { int vkCode = Marshal.ReadInt32(lParam); //Kiem tra xem shift co duoc an hay k if (vkCode == 0xA0) { Shifts.SetShiftInt(1); } waitingchar.Add(vkCode); waitingword.Add(vkCode); chuyenChuCoDau(); themDau(); //Kiểm tra khi ấn dấu cách if (vkCode == 0x20) { waitingword.Clear(); stack_word.Clear(); pos_nguyenam = -1; delete_char = 0; flagedit_word = 0; } //Kiem tra việc sửa nguyên âm if (flag == 1) { //Hien thi chu o^ ra man hinh vkCode = waitingchar[0]; waitingchar.RemoveAt(0); delete_char = 1; flag = 0; flagedit = 1; //Xoa ki tu hien thi tren man hinh 1 ki tu } //Kiểm tra sửa dấu cho từ if (OnKeyPressed != null && vkCode != 0xA0) { OnKeyPressed(this, new KeyPressedArgs(vkCode)); } } return(CallNextHookEx(_hookID, nCode, wParam, lParam)); }
public KeyPressedArgs(int x) { if (Shifts.ShiftInt == 0) { if (x == 32) { KeyPressed = (char)x; } else { KeyPressed = (char)(x + 32); } } else { KeyPressed = (char)x; } Shifts.SetShiftInt(0); }