前些時間想做一個鼠標點擊器,用到了這些知識。
下面整理記錄一下。
ps.感謝各位大神
下面直接上代碼
1.鼠標的控制
class MouseMove { #region MouseEvent [System.Runtime.InteropServices.DllImport("user32")] private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo); //移動鼠標 const int MOUSEEVENTF_MOVE = 0x0001; //模擬鼠標左鍵按下 const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模擬鼠標左鍵抬起 const int MOUSEEVENTF_LEFTUP = 0x0004; //模擬鼠標右鍵按下 const int MOUSEEVENTF_RIGHTDOWN = 0x0008; //模擬鼠標右鍵抬起 const int MOUSEEVENTF_RIGHTUP = 0x0010; //模擬鼠標中鍵按下 const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; //模擬鼠標中鍵抬起 const int MOUSEEVENTF_MIDDLEUP = 0x0040; //標示是否采用絕對坐標 const int MOUSEEVENTF_ABSOLUTE = 0x8000; #endregion //x,y是鼠標在屏幕的位置,屏幕左上角為0,0點 public void MouseMoveAndClick(int _x, int _y) { mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, _x * 65535 / screenWH.x, _y * 65535 / screenWH.y, 0, 0); mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); } }
ps.其他的單擊雙擊什么的可以自己定義
2.鍵盤的控制
class KeyBordClick { [DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)] private static extern void keybd_event(Keys bVk, byte bScan, uint dwFlags, uint dwExtraInfo); const int KEYEVENTF_KEYUP = 0x02; const int KEYEVENTF_KEYDOWN = 0x00; //相當於按下ctrl+v,然后回車 private void KeyBordPaste() { keybd_event(Keys.ControlKey, 0, KEYEVENTF_KEYDOWN, 0); keybd_event(Keys.V, 0, 0, 0); keybd_event(Keys.ControlKey, 0, KEYEVENTF_KEYUP, 0); keybd_event(Keys.Enter, 0, 0, 0); } }
3.剪切板
使用Clipboard類
Clipboard. SetDataObject("HELLO WORLD!!!", true);
ps.
本來想用hook來捕獲記錄鼠標位置的,可惜技術不夠,沒搞成。
&中間有次點擊時間間隔太小了,導致鼠標亂跳,關不掉程序,只能呵呵噠重啟了(也許可以惡作劇一下),囧
