MyMouseNamespace.cpp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550
  1. /*
  2. 本源码由TC简单软件科技有限公司开源,功能可以自由修改、发布、
  3. 长沙简单软件科技有限公司对于源码不做后期维护,,请大家在使用过程中遵循开源协议
  4. */
  5. #include "stdafx.h"
  6. #include "MyMouseNamespace.h"
  7. /*===================================================================
  8. //构造函数
  9. ====================================================================*/
  10. MyMouseNamespace::MyMouseNamespace()
  11. {
  12. delaytimes = 30;
  13. }
  14. /*===================================================================
  15. //析构函数
  16. ====================================================================*/
  17. MyMouseNamespace::~MyMouseNamespace()
  18. {
  19. }
  20. //鼠标移动到相对坐标
  21. /*===================================================================
  22. 函数名称 : mouseMvrelative
  23. 功能描述 : 鼠标移动的相对位置
  24. ====================================================================*/
  25. bool MyMouseNamespace::mouseMvrelative(DWORD x_pos, DWORD y_pos)
  26. {
  27. //移动鼠标的坐标
  28. POINT pt;
  29. ::GetCursorPos(&pt);
  30. ::SetCursorPos(pt.x + x_pos, pt.y + y_pos);
  31. return true;
  32. }
  33. //鼠标移动到绝对坐标
  34. /*===================================================================
  35. 函数名称 : mouseMove
  36. 功能描述 : 鼠标移动的绝对位置
  37. ====================================================================*/
  38. //鼠标移动到绝对位置
  39. bool MyMouseNamespace::mouseMove(DWORD x_pos, DWORD y_pos)
  40. {
  41. //移动鼠标的坐标
  42. ::SetCursorPos(x_pos, y_pos);
  43. return true;
  44. }
  45. //// 鼠标操作
  46. //// LEFTCLICK =0 //左键单击
  47. ////,RIGHTCLICK //右键单击
  48. ////,MIDDLECLICK //中键单击
  49. ////,LEFTDOWN //左键按下
  50. ////,LEFTUP //左键弹起
  51. ////,RIGHTDOWN //右键按下
  52. ////,RIGHTUP //右键弹起
  53. ////,MIDDLEDOWN //中键按下
  54. ////,MIDDLEUP //中键弹起
  55. ////,LEFTDOUBLECLICK //左键双击
  56. ////,RIGHTDOUBLECLICK //右键双击
  57. //鼠标移动到绝对坐标
  58. /*===================================================================
  59. 函数名称 : mouseAction
  60. 功能描述 : 鼠标单击或双击模式以及具体的执行次数
  61. 返回值: void类型
  62. 参数:
  63. 名称 类型 描述
  64. --------- -------------------------------------------
  65. mousemode MouseMode * 传进来鼠标单击或双击模式
  66. nEcute int 执行单击或者双击几次
  67. 修改历史 :
  68. 修改者 日期 描述
  69. 邓媛元 2010-07-17
  70. 邓媛元 2010-07-20 修改注释
  71. ====================================================================*/
  72. void MyMouseNamespace::mouseAction(MouseMode mousemode, int nEcute)
  73. {
  74. //Sleep(1000);
  75. //鼠标状态选取
  76. switch (mousemode)
  77. {
  78. //鼠标左键单击
  79. case LEFTCLICK:
  80. for (int i = 0; i < nEcute; i++)
  81. { //鼠标按下
  82. //mouse_event(MOUSEEVENTF_LEFTDOWN , 0, 0, 0, 0);
  83. //::Sleep(100);
  84. //mouse_event(MOUSEEVENTF_LEFTUP , 0, 0, 0, 0);
  85. INPUT MyMouseClick[1];
  86. ////第一个动作:模拟鼠标左键按下
  87. MyMouseClick[0].type = INPUT_MOUSE;
  88. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
  89. MyMouseClick[0].mi.mouseData = NULL;
  90. MyMouseClick[0].mi.dwExtraInfo = NULL;
  91. MyMouseClick[0].mi.time = NULL;
  92. SendInput(1, MyMouseClick, sizeof(INPUT));
  93. Sleep(delaytimes);
  94. ////第二个动作:模拟鼠标左键释放
  95. MyMouseClick[0].type = INPUT_MOUSE;
  96. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_LEFTUP;
  97. MyMouseClick[0].mi.mouseData = NULL;
  98. MyMouseClick[0].mi.dwExtraInfo = NULL;
  99. MyMouseClick[0].mi.time = NULL; ;
  100. ////发送鼠标动作到消息序列。
  101. SendInput(1, MyMouseClick, sizeof(INPUT));
  102. }
  103. break;
  104. //鼠标右键单击
  105. case RIGHTCLICK:
  106. for (int i = 0; i < nEcute; i++)
  107. { //鼠标按下
  108. //mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
  109. //::Sleep(100);
  110. //mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
  111. INPUT MyMouseClick[1];
  112. ////第一个动作:模拟鼠标左键按下
  113. MyMouseClick[0].type = INPUT_MOUSE;
  114. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;
  115. MyMouseClick[0].mi.mouseData = NULL;
  116. MyMouseClick[0].mi.dwExtraInfo = NULL;
  117. MyMouseClick[0].mi.time = NULL;
  118. SendInput(1, MyMouseClick, sizeof(INPUT));
  119. Sleep(delaytimes);
  120. ////第二个动作:模拟鼠标左键释放
  121. MyMouseClick[0].type = INPUT_MOUSE;
  122. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_RIGHTUP;
  123. MyMouseClick[0].mi.mouseData = NULL;
  124. MyMouseClick[0].mi.dwExtraInfo = NULL;
  125. MyMouseClick[0].mi.time = NULL; ;
  126. ////发送鼠标动作到消息序列。
  127. SendInput(1, MyMouseClick, sizeof(INPUT));
  128. }
  129. break;
  130. //鼠标中键单击
  131. case MIDDLECLICK:
  132. for (int i = 0; i < nEcute; i++)
  133. { //鼠标按下
  134. //mouse_event(MOUSEEVENTF_MIDDLEDOWN|MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0);
  135. INPUT MyMouseClick[1];
  136. ////第一个动作:模拟鼠标左键按下
  137. MyMouseClick[0].type = INPUT_MOUSE;
  138. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_MIDDLEDOWN;
  139. MyMouseClick[0].mi.mouseData = NULL;
  140. MyMouseClick[0].mi.dwExtraInfo = NULL;
  141. MyMouseClick[0].mi.time = NULL;
  142. SendInput(1, MyMouseClick, sizeof(INPUT));
  143. Sleep(delaytimes);
  144. ////第二个动作:模拟鼠标左键释放
  145. MyMouseClick[0].type = INPUT_MOUSE;
  146. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_MIDDLEUP;
  147. MyMouseClick[0].mi.mouseData = NULL;
  148. MyMouseClick[0].mi.dwExtraInfo = NULL;
  149. MyMouseClick[0].mi.time = NULL; ;
  150. ////发送鼠标动作到消息序列。
  151. SendInput(1, MyMouseClick, sizeof(INPUT));
  152. }
  153. break;
  154. //鼠标左键按下
  155. case LEFTDOWN:
  156. {
  157. //左键按下一次
  158. //mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  159. INPUT MyMouseClick[1];
  160. ////第一个动作:模拟鼠标左键按下
  161. MyMouseClick[0].type = INPUT_MOUSE;
  162. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
  163. MyMouseClick[0].mi.mouseData = NULL;
  164. MyMouseClick[0].mi.dwExtraInfo = NULL;
  165. MyMouseClick[0].mi.time = NULL;
  166. SendInput(1, MyMouseClick, sizeof(INPUT));
  167. }
  168. break;
  169. //鼠标左键弹起
  170. case LEFTUP:
  171. {
  172. //mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
  173. INPUT MyMouseClick[1];
  174. ////第二个动作:模拟鼠标左键释放
  175. MyMouseClick[0].type = INPUT_MOUSE;
  176. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_LEFTUP;
  177. MyMouseClick[0].mi.mouseData = NULL;
  178. MyMouseClick[0].mi.dwExtraInfo = NULL;
  179. MyMouseClick[0].mi.time = NULL; ;
  180. ////发送鼠标动作到消息序列。
  181. SendInput(1, MyMouseClick, sizeof(INPUT));
  182. }
  183. break;
  184. //鼠标右键按下
  185. case RIGHTDOWN:
  186. {
  187. //mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0,0);
  188. INPUT MyMouseClick[1];
  189. ////第一个动作:模拟鼠标左键按下
  190. MyMouseClick[0].type = INPUT_MOUSE;
  191. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;
  192. MyMouseClick[0].mi.mouseData = NULL;
  193. MyMouseClick[0].mi.dwExtraInfo = NULL;
  194. MyMouseClick[0].mi.time = NULL;
  195. SendInput(1, MyMouseClick, sizeof(INPUT));
  196. }
  197. break;
  198. //鼠标右键盘弹起
  199. case RIGHTUP:
  200. {
  201. //mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0,0);
  202. INPUT MyMouseClick[1];
  203. MyMouseClick[0].type = INPUT_MOUSE;
  204. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_RIGHTUP;
  205. MyMouseClick[0].mi.mouseData = NULL;
  206. MyMouseClick[0].mi.dwExtraInfo = NULL;
  207. MyMouseClick[0].mi.time = NULL; ;
  208. ////发送鼠标动作到消息序列。
  209. SendInput(1, MyMouseClick, sizeof(INPUT));
  210. }
  211. break;
  212. //鼠标中键按下
  213. case MIDDLEDOWN:
  214. {
  215. //mouse_event(MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0,0);
  216. INPUT MyMouseClick[1];
  217. ////第一个动作:模拟鼠标左键按下
  218. MyMouseClick[0].type = INPUT_MOUSE;
  219. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_MIDDLEDOWN;
  220. MyMouseClick[0].mi.mouseData = NULL;
  221. MyMouseClick[0].mi.dwExtraInfo = NULL;
  222. MyMouseClick[0].mi.time = NULL;
  223. SendInput(1, MyMouseClick, sizeof(INPUT));
  224. }
  225. break;
  226. //鼠标中键盘弹起
  227. case MIDDLEUP:
  228. {
  229. //mouse_event(MOUSEEVENTF_MIDDLEUP, 0, 0, 0,0);
  230. INPUT MyMouseClick[1];
  231. MyMouseClick[0].type = INPUT_MOUSE;
  232. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_MIDDLEUP;
  233. MyMouseClick[0].mi.mouseData = NULL;
  234. MyMouseClick[0].mi.dwExtraInfo = NULL;
  235. MyMouseClick[0].mi.time = NULL; ;
  236. ////发送鼠标动作到消息序列。
  237. SendInput(1, MyMouseClick, sizeof(INPUT));
  238. }
  239. break;
  240. //鼠标左键双击
  241. case LEFTDOUBLECLICK:
  242. for (int i = 0; i < nEcute; i++)
  243. {
  244. INPUT MyMouseClick[1];
  245. //第二个动作:模拟鼠标左键按下
  246. MyMouseClick[0].type = INPUT_MOUSE;
  247. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
  248. MyMouseClick[0].mi.mouseData = NULL;
  249. MyMouseClick[0].mi.dwExtraInfo = NULL;
  250. MyMouseClick[0].mi.time = NULL;
  251. Sleep(delaytimes);
  252. SendInput(1, MyMouseClick, sizeof(INPUT));
  253. //第三个动作:模拟鼠标左键释放
  254. MyMouseClick[0].type = INPUT_MOUSE;
  255. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_LEFTUP;
  256. MyMouseClick[0].mi.mouseData = NULL;
  257. MyMouseClick[0].mi.dwExtraInfo = NULL;
  258. MyMouseClick[0].mi.time = NULL;
  259. //发送鼠标动作到消息序列。
  260. SendInput(1, MyMouseClick, sizeof(INPUT));
  261. Sleep(delaytimes);
  262. //第二个动作:模拟鼠标左键按下
  263. MyMouseClick[0].type = INPUT_MOUSE;
  264. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
  265. MyMouseClick[0].mi.mouseData = NULL;
  266. MyMouseClick[0].mi.dwExtraInfo = NULL;
  267. MyMouseClick[0].mi.time = NULL;
  268. SendInput(1, MyMouseClick, sizeof(INPUT));
  269. Sleep(delaytimes);
  270. //第三个动作:模拟鼠标左键释放
  271. MyMouseClick[0].type = INPUT_MOUSE;
  272. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_LEFTUP;
  273. MyMouseClick[0].mi.mouseData = NULL;
  274. MyMouseClick[0].mi.dwExtraInfo = NULL;
  275. MyMouseClick[0].mi.time = NULL;
  276. //发送鼠标动作到消息序列。
  277. SendInput(1, MyMouseClick, sizeof(INPUT));
  278. }
  279. break;
  280. //鼠标右键双击
  281. case RIGHTDOUBLECLICK:
  282. for (int i = 0; i < nEcute; i++)
  283. {
  284. INPUT MyMouseClick[1];
  285. ////第一个动作:模拟鼠标左键按下
  286. MyMouseClick[0].type = INPUT_MOUSE;
  287. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;
  288. MyMouseClick[0].mi.mouseData = NULL;
  289. MyMouseClick[0].mi.dwExtraInfo = NULL;
  290. MyMouseClick[0].mi.time = NULL;
  291. SendInput(1, MyMouseClick, sizeof(INPUT));
  292. Sleep(delaytimes);
  293. ////第二个动作:模拟鼠标左键释放
  294. MyMouseClick[0].type = INPUT_MOUSE;
  295. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_RIGHTUP;
  296. MyMouseClick[0].mi.mouseData = NULL;
  297. MyMouseClick[0].mi.dwExtraInfo = NULL;
  298. MyMouseClick[0].mi.time = NULL; ;
  299. ////发送鼠标动作到消息序列。
  300. SendInput(1, MyMouseClick, sizeof(INPUT));
  301. Sleep(delaytimes);
  302. ////第一个动作:模拟鼠标左键按下
  303. MyMouseClick[0].type = INPUT_MOUSE;
  304. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;
  305. MyMouseClick[0].mi.mouseData = NULL;
  306. MyMouseClick[0].mi.dwExtraInfo = NULL;
  307. MyMouseClick[0].mi.time = NULL;
  308. SendInput(1, MyMouseClick, sizeof(INPUT));
  309. Sleep(delaytimes);
  310. ////第二个动作:模拟鼠标左键释放
  311. MyMouseClick[0].type = INPUT_MOUSE;
  312. MyMouseClick[0].mi.dwFlags = MOUSEEVENTF_RIGHTUP;
  313. MyMouseClick[0].mi.mouseData = NULL;
  314. MyMouseClick[0].mi.dwExtraInfo = NULL;
  315. MyMouseClick[0].mi.time = NULL; ;
  316. ////发送鼠标动作到消息序列。
  317. SendInput(1, MyMouseClick, sizeof(INPUT));
  318. }
  319. break;
  320. default:
  321. return;
  322. }
  323. }
  324. /*===================================================================
  325. 函数名称 : GetmousePoint
  326. 功能描述 : 获取当前鼠标的位置坐标
  327. ====================================================================*/
  328. bool MyMouseNamespace::GetmousePoint(DWORD& x_pos, DWORD& y_pos)
  329. {
  330. POINT pt;
  331. GetCursorPos(&pt);
  332. x_pos = pt.x;
  333. y_pos = pt.y;
  334. return true;
  335. }
  336. /*返回值: void类型
  337. 参数:
  338. 名称 类型 描述
  339. --------- -------------------------------------------
  340. direction MouseWheel 接收返回值传出去
  341. nMove int 控制滚轮移动多少
  342. ====================================================================*/
  343. void MyMouseNamespace::mouseMidleWheel(MouseWheel direction, int nMove)
  344. {
  345. if (direction == MouseWheel::WHEEL_DOWN) //滚轮向下
  346. {
  347. mouse_event(MOUSEEVENTF_WHEEL, 0, 0, -nMove, 0);
  348. }
  349. else if (direction == MouseWheel::WHEEL_UP) //滚轮向上
  350. {
  351. mouse_event(MOUSEEVENTF_WHEEL, 0, 0, nMove, 0);
  352. }
  353. }
  354. HBITMAP BitmapFromIcon(HICON hIcon)
  355. {
  356. HDC dDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL);
  357. HDC hDC = CreateCompatibleDC(dDC);
  358. HBITMAP hBitmap = CreateCompatibleBitmap(hDC, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON));
  359. HBITMAP hOldBitmap = (HBITMAP)SelectObject(hDC, hBitmap);
  360. DrawIcon(hDC, 0, 0, hIcon);
  361. hBitmap = (HBITMAP)SelectObject(hDC, hOldBitmap);
  362. DeleteDC(hDC);
  363. ::DeleteDC(dDC);
  364. return hBitmap;
  365. }
  366. ////////////////////////获取鼠标形状特征码 ///////////////
  367. bool MyMouseNamespace::getmouseshape(DWORD& dwshape)
  368. {
  369. dwshape = 0;
  370. CURSORINFO pci;
  371. pci.cbSize = sizeof(CURSORINFO);
  372. pci.flags = 0;
  373. pci.hCursor = 0;
  374. if (!::GetCursorInfo(&pci))
  375. return false;
  376. HDC dDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL);
  377. HDC hDC = CreateCompatibleDC(dDC);
  378. HBITMAP hBitmap = CreateCompatibleBitmap(dDC, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON));
  379. HBITMAP hOldBitmap = (HBITMAP)SelectObject(hDC, hBitmap);
  380. DrawIcon(hDC, 0, 0, pci.hCursor);
  381. hBitmap = (HBITMAP)SelectObject(hDC, hOldBitmap);
  382. DWORD dwPaletteSize = 0, dwBmBitsSize;
  383. BITMAP Bitmap;
  384. BITMAPINFOHEADER bi;
  385. //位图信息头结构
  386. LPBITMAPINFOHEADER lpbi;
  387. HANDLE hDib;
  388. HPALETTE hOldPal = NULL;
  389. //设置位图信息头结构
  390. GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&Bitmap);
  391. WORD wBitCount = Bitmap.bmBitsPixel;
  392. dwBmBitsSize = ((Bitmap.bmWidth * wBitCount + 31) & ~31) / 8 * Bitmap.bmHeight;
  393. BYTE* bmpDate = new BYTE[dwBmBitsSize];
  394. bi.biSize = sizeof(BITMAPINFOHEADER);
  395. bi.biWidth = Bitmap.bmWidth;
  396. bi.biHeight = Bitmap.bmHeight;
  397. bi.biPlanes = 1;
  398. bi.biBitCount = wBitCount;
  399. bi.biCompression = BI_RGB;
  400. bi.biSizeImage = dwBmBitsSize;
  401. bi.biXPelsPerMeter = 0;
  402. bi.biYPelsPerMeter = 0;
  403. bi.biClrUsed = 0;
  404. bi.biClrImportant = 0;
  405. hDib = GlobalAlloc(GHND, dwBmBitsSize + dwPaletteSize + sizeof(BITMAPINFOHEADER));
  406. lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
  407. *lpbi = bi;
  408. GetDIBits(hDC, hBitmap, 0, (UINT)Bitmap.bmHeight, bmpDate, (BITMAPINFO*)lpbi, DIB_RGB_COLORS);
  409. DWORD num = 0;
  410. int height = Bitmap.bmHeight;
  411. int width = Bitmap.bmWidth;
  412. BYTE b0 = bmpDate[0];
  413. BYTE g0 = bmpDate[1];
  414. BYTE r0 = bmpDate[2];
  415. // 32位图进行解析
  416. if (Bitmap.bmBitsPixel == 32)
  417. {
  418. for (int i = 0; i < height; i++)
  419. {
  420. for (int j = 0; j < width; j++)
  421. {
  422. UCHAR b = bmpDate[(i * width + j) * 4];
  423. UCHAR g = bmpDate[(i * width + j) * 4 + 1];
  424. UCHAR r = bmpDate[(i * width + j) * 4 + 2];
  425. if (b == b0 && g == g0 && r == r0)
  426. {
  427. continue;
  428. }
  429. else
  430. {
  431. num++;
  432. }
  433. }
  434. }
  435. }
  436. ////////////////////////////////////////////////////////////////////////
  437. DWORD helpnum = num * RGB(255, 255, 0);
  438. delete[] bmpDate;
  439. ::GlobalFree(hDib);
  440. ::DeleteDC(hDC);
  441. ::DeleteDC(dDC);
  442. ::DeleteObject(hBitmap);
  443. dwshape = helpnum;
  444. return true;
  445. }
  446. #define MOUSE_DOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
  447. #define MOUSE_UP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
  448. bool MyMouseNamespace::leftClick()
  449. {
  450. mouseAction(LEFTCLICK);
  451. return true;
  452. }
  453. bool MyMouseNamespace::leftDoubleClick()
  454. {
  455. mouseAction(LEFTDOUBLECLICK);
  456. return true;
  457. }
  458. bool MyMouseNamespace::leftDown()
  459. {
  460. mouseAction(LEFTDOWN);
  461. return true;
  462. }
  463. bool MyMouseNamespace::leftUp()
  464. {
  465. mouseAction(LEFTUP);
  466. return true;
  467. }
  468. bool MyMouseNamespace::rightClick()
  469. {
  470. mouseAction(RIGHTCLICK);
  471. return true;
  472. }
  473. bool MyMouseNamespace::rightDoubleClick()
  474. {
  475. mouseAction(RIGHTDOUBLECLICK);
  476. return true;
  477. }
  478. bool MyMouseNamespace::rightDown()
  479. {
  480. mouseAction(RIGHTDOWN);
  481. return true;
  482. }
  483. bool MyMouseNamespace::rightUp()
  484. {
  485. mouseAction(RIGHTUP);
  486. return true;
  487. }
  488. bool MyMouseNamespace::middleClick()
  489. {
  490. mouseAction(MIDDLECLICK);
  491. return true;
  492. }
  493. bool MyMouseNamespace::middleDown()
  494. {
  495. mouseAction(MIDDLEDOWN);
  496. return true;
  497. }
  498. bool MyMouseNamespace::middleUp()
  499. {
  500. mouseAction(MIDDLEUP);
  501. return true;
  502. }
  503. // 向下滚动
  504. bool MyMouseNamespace::mouseSheetDown()
  505. {
  506. mouseMidleWheel(WHEEL_DOWN);
  507. return true;
  508. }
  509. // 向上滚动
  510. bool MyMouseNamespace::mouseSheetUp()
  511. {
  512. mouseMidleWheel(WHEEL_UP);
  513. return true;
  514. }