#include <winable.h>
class mk
{
public:
?mk(){}
?////按一個鍵,mSeconds表按鍵后到下一次操作延遲的時間:ms
?static void Key(??BYTE k,?int mSeconds=0);
?static void Key2(??BYTE k1,BYTE k2,??int mSeconds=0);//按2個鍵
?static void Key3(??BYTE k1,BYTE k2,BYTE k3,int mSeconds=0);//按3個鍵
?static void Click(??int x,?int y,?int mSeconds=0);//單擊
?static void RClick(??int x,?int y,?int mSeconds=0);//右擊
?static void DClick(??int x,?int y,?int mSeconds=0);//雙擊
?static void CtrlClick(?int x,?int y,?int mSeconds=0);//Ctrl+單擊
?static void Drag(int x1,int y1,?int x2,?int y2,?int mSeconds=0);//鼠標拖動
?virtual ~mk(){}
};
#endif
/*
VK_LBUTTON 01 鼠標左鍵
VK_RBUTTON 02 鼠標右鍵
VK_CANCEL 03 Control-break 過程
VK_MBUTTON 04 鼠標中鍵
VK_BACK 08 BACKSPACE 鍵
VK_TAB 09 TAB 鍵
VK_CLEAR 0C CLEAR 鍵
VK_RETURN 0D ENTER 鍵
VK_SHIFT 10 SHIFT 鍵
VK_CONTROL 11 CTRL 鍵
VK_MENU 12 ALT 鍵
VK_PAUSE 13 PAUSE 鍵
VK_CAPITAL 14 CAPS LOCK 鍵
VK_ESCAPE 1B ESC 鍵
VK_SPACE 20 SPACEBAR
VK_PRIOR 21 PAGE UP 鍵
VK_NEXT 22 PAGE DOWN 鍵
VK_END 23 END 鍵
VK_HOME 24 HOME 鍵
VK_LEFT 25 LEFT ARROW 鍵
VK_UP 26 UP ARROW 鍵
VK_RIGHT 27 RIGHT ARROW 鍵
VK_DOWN 28 DOWN ARROW 鍵
VK_SELECT 29 SELECT 鍵
VK_EXECUTE 2B EXECUTE 鍵
VK_SNAPSHOT 2C PRINT SCREEN鍵(用于Windows 3.0及以后版本)
VK_INSERT 2D INS 鍵
VK_DELETE 2E DEL 鍵
VK_HELP 2F HELP 鍵
? VK_LWIN 5B Left Windows 鍵 (Microsoft自然鍵盤)
? VK_RWIN 5C Right Windows 鍵 (Microsoft自然鍵盤)
? VK_APPS 5D Applications 鍵 (Microsoft自然鍵盤)
? VK_NUMPAD0 60 數(shù)字小鍵盤上的 0 鍵
? VK_NUMPAD1 61 數(shù)字小鍵盤上的 1 鍵
? VK_NUMPAD2 62 數(shù)字小鍵盤上的 2 鍵
? VK_NUMPAD3 63 數(shù)字小鍵盤上的 3 鍵
? VK_NUMPAD4 64 數(shù)字小鍵盤上的 4 鍵
? VK_NUMPAD5 65 數(shù)字小鍵盤上的 5 鍵
? VK_NUMPAD6 66 數(shù)字小鍵盤上的 6 鍵
? VK_NUMPAD7 67 數(shù)字小鍵盤上的 7 鍵
? VK_NUMPAD8 68 數(shù)字小鍵盤上的 8 鍵
? VK_NUMPAD9 69 數(shù)字小鍵盤上的 9 鍵
? VK_MULTIPLY 6A Multiply 鍵
? VK_ADD 6B Add 鍵
? VK_SEPARATOR 6C Separator 鍵
? VK_SUBTRACT 6D Subtract 鍵
? VK_DECIMAL 6E Decimal 鍵
? VK_DIVIDE 6F Divide 鍵
? VK_F1 70 F1 鍵
? VK_F2 71 F2 鍵
? VK_F3 72 F3 鍵
? VK_F4 73 F4 鍵
? VK_F5 74 F5 鍵
? VK_F6 75 F6 鍵
? VK_F7 76 F7 鍵
? VK_F8 77 F8 鍵
? VK_F9 78 F9 鍵
? VK_F10 79 F10 鍵
? VK_F11 7A F11 鍵
? VK_F12 7B F12 鍵
? VK_F13 7C F13 鍵
? VK_F14 7D F14 鍵
? VK_F15 7E F15 鍵
? VK_F16 7F F16 鍵
? VK_F17 80H F17 鍵
? VK_F18 81H F18 鍵
? VK_F19 82H F19 鍵
? VK_F20 83H F20 鍵
? VK_F21 84H F21 鍵
? VK_F22 85H F22 鍵
? VK_F23 86H F23 鍵
? VK_F24 87H F24 鍵
? VK_NUMLOCK 90 NUM LOCK 鍵
? VK_SCROLL 91 SCROLL LOCK 鍵
? VK_ATTN F6 Attn 鍵
? VK_CRSEL F7 CrSel 鍵
? VK_EXSEL F8 ExSel 鍵
? VK_EREOF F9 Erase EOF 鍵
? VK_PLAY FA Play 鍵
? VK_ZOOM FB Zoom 鍵
? VK_OEM_CLEAR FE Clear 鍵
*/
void mk::Click(int x, int y, int mSeconds)
{
?SetCursorPos(x,y);
?mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
?mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
?Sleep(mSeconds);
}
void mk::DClick(int x, int y, int mSeconds)
{
?SetCursorPos(x,y);
?mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
?mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
?mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
?mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
?Sleep(mSeconds);
}
void mk::Drag(int x1, int y1, int x2, int y2, int mSeconds)
{
?SetCursorPos(x1,y1);
?mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
?SetCursorPos(x2,y2);
?mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
?Sleep(mSeconds);
}
void mk::RClick(int x, int y, int mSeconds)
{
?SetCursorPos(x,y);
?mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
?mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
?Sleep(mSeconds);
}
void mk::Key(BYTE k, int mSeconds)
{
?keybd_event(k,0,0,0);
?keybd_event(k,0,KEYEVENTF_KEYUP,0);
?Sleep(mSeconds);
}
void mk::Key2(BYTE k1, BYTE k2, int mSeconds)
{
?INPUT input[4];
??? memset(input,0,sizeof(input));
??? input[0].type=input[1].type=input[2].type=input[3].type=INPUT_KEYBOARD;
??? input[0].ki.wVk=input[3].ki.wVk=k1;
??? input[1].ki.wVk=input[2].ki.wVk=k2;
??? input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;
?
??? SendInput(4, input, sizeof(INPUT));
?
?Sleep(mSeconds);
}
void mk::CtrlClick(int x, int y, int mSeconds)
{
?SetCursorPos(x,y);
?keybd_event(VK_CONTROL ,0,0,0);
?mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
?mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
?keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
?Sleep(mSeconds);
}
void mk::Key3(BYTE k1, BYTE k2, BYTE k3, int mSeconds)
{
?if(k1==VK_CONTROL&&k2==VK_MENU&&k3==VK_DELETE)
??ShellExecute(NULL,NULL,"taskmgr.exe",NULL,NULL,SW_SHOW);
?else
?{
??INPUT input[6];
??memset(input,0,sizeof(input));
??input[0].type=input[1].type=input[2].type=input[3].type=input[4].type=input[5].type=INPUT_KEYBOARD;
??input[0].ki.wVk=input[5].ki.wVk=k1;
??input[1].ki.wVk=input[4].ki.wVk=k2;
??input[2].ki.wVk=input[3].ki.wVk=k3;
??input[3].ki.dwFlags=input[4].ki.dwFlags=input[5].ki.dwFlags=KEYEVENTF_KEYUP;
??SendInput(6, input, sizeof(INPUT));
?}
?Sleep(mSeconds);
}