对系统模拟按键方面的知识和按键映射代码做了一下梳理,在这里分享出来,适用于开发自动操作工具和游戏外挂。

主代码:

  1. public const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key click flag
  2. public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag
  3. [DllImport("user32.dll")]
  4. private static extern void keybd_event(byte bVk, byte bSCan, int dwFlags, int dwExtraInfo);
  5. [DllImport("user32.dll")]
  6. private static extern byte MapVirtualKey(byte wCode, int wMap);
  7.  
  8. public static void 模拟按下按键(VirtualKeyCode 虚拟按键代码)
  9. {
  10. var code = (byte)虚拟按键代码;
  11. keybd_event(code, , , );
  12. }
  13.  
  14. public static void 模拟弹起按键(VirtualKeyCode 虚拟按键代码)
  15. {
  16. var code = (byte) 虚拟按键代码;
  17. keybd_event(code, , KEYEVENTF_KEYUP, );
  18. }
  19.  
  20. public static void 模拟单击按键(VirtualKeyCode 虚拟按键代码)
  21. {
  22. var code = (byte)虚拟按键代码;
  23. keybd_event(code, , KEYEVENTF_EXTENDEDKEY, );
  24. }

网上关于keybd_event的dwFlags参数功能说法很混乱,经我测试貌似是KEYEVENTF_EXTENDEDKEY表示一次单击,0表示按下,KEYEVENTF_KEYUP表示弹起,不一定完全正确,希望高人指点一下。

另外MapVirtualKey的作用实在不懂,所以就没用上,看到有人这么调用不知有什么区别:

  1. var code = (byte)虚拟按键代码;
  2. keybd_event(code, MapVirtualKey(code,), , );

我试过好像也没什么变化~到底MapVirtualKey是干什么用的呢??

VirtualKeyCode枚举:

  1. /// <summary>
  2. /// 虚拟按键代码
  3. /// 参考于 http://msdn.microsoft.com/zh-cn/library/dd375731(v=vs.85).aspx
  4. /// </summary>
  5. public enum VirtualKeyCode
  6. {
  7. /// <summary>
  8. /// Left mouse button
  9. /// </summary>
  10. Left_mouse_button = 0x01,
  11. /// <summary>
  12. /// Right mouse button
  13. /// </summary>
  14. Right_mouse_button = 0x02,
  15. /// <summary>
  16. /// Control-break processing
  17. /// </summary>
  18. Control_break_processing = 0x03,
  19. /// <summary>
  20. /// Middle mouse button (three-button mouse)
  21. /// </summary>
  22. Middle_mouse_button = 0x04,
  23. /// <summary>
  24. /// X1 mouse button
  25. /// </summary>
  26. X1_mouse_button = 0x05,
  27. /// <summary>
  28. /// X2 mouse button
  29. /// </summary>
  30. X2_mouse_button = 0x06,
  31. /// <summary>
  32. /// Undefined
  33. /// </summary>
  34. Undefined1 = 0x07,
  35. /// <summary>
  36. /// BACKSPACE key
  37. /// </summary>
  38. BACKSPACE_key = 0x08,
  39. /// <summary>
  40. /// TAB key
  41. /// </summary>
  42. TAB_key = 0x09,
  43. /// <summary>
  44. /// CLEAR key
  45. /// </summary>
  46. CLEAR_key = 0x0C,
  47. /// <summary>
  48. /// ENTER key
  49. /// </summary>
  50. ENTER_key = 0x0D,
  51. /// <summary>
  52. /// SHIFT key
  53. /// </summary>
  54. SHIFT_key = 0x10,
  55. /// <summary>
  56. /// CTRL key
  57. /// </summary>
  58. CTRL_key = 0x11,
  59. /// <summary>
  60. /// ALT key
  61. /// </summary>
  62. ALT_key = 0x12,
  63. /// <summary>
  64. /// PAUSE key
  65. /// </summary>
  66. PAUSE_key = 0x13,
  67. /// <summary>
  68. /// CAPS LOCK key
  69. /// </summary>
  70. CAPS_LOCK_key = 0x14,
  71. /// <summary>
  72. /// IME Kana mode
  73. /// </summary>
  74. IME_Kana_mode = 0x15,
  75. /// <summary>
  76. /// IME Hanguel mode (maintained for compatibility; use VK_HANGUL)
  77. /// </summary>
  78. IME_Hanguel_mode = 0x15,
  79. /// <summary>
  80. /// IME Hangul mode
  81. /// </summary>
  82. IME_Hangul_mode = 0x15,
  83. /// <summary>
  84. /// Undefined
  85. /// </summary>
  86. Undefined2 = 0x16,
  87. /// <summary>
  88. /// IME Junja mode
  89. /// </summary>
  90. IME_Junja_mode = 0x17,
  91. /// <summary>
  92. /// IME final mode
  93. /// </summary>
  94. IME_final_mode = 0x18,
  95. /// <summary>
  96. /// IME Hanja mode
  97. /// </summary>
  98. IME_Hanja_mode = 0x19,
  99. /// <summary>
  100. /// IME Kanji mode
  101. /// </summary>
  102. IME_Kanji_mode = 0x19,
  103. /// <summary>
  104. /// Undefined
  105. /// </summary>
  106. Undefined = 0x1A,
  107. /// <summary>
  108. /// ESC key
  109. /// </summary>
  110. ESC_key = 0x1B,
  111. /// <summary>
  112. /// IME convert
  113. /// </summary>
  114. IME_convert = 0x1C,
  115. /// <summary>
  116. /// IME nonconvert
  117. /// </summary>
  118. IME_nonconvert = 0x1D,
  119. /// <summary>
  120. /// IME accept
  121. /// </summary>
  122. IME_accept = 0x1E,
  123. /// <summary>
  124. /// IME mode change request
  125. /// </summary>
  126. IME_mode_change_request = 0x1F,
  127. /// <summary>
  128. /// SPACEBAR
  129. /// </summary>
  130. SPACEBAR = 0x20,
  131. /// <summary>
  132. /// PAGE UP key
  133. /// </summary>
  134. PAGE_UP_key = 0x21,
  135. /// <summary>
  136. /// PAGE DOWN key
  137. /// </summary>
  138. PAGE_DOWN_key = 0x22,
  139. /// <summary>
  140. /// END key
  141. /// </summary>
  142. END_key = 0x23,
  143. /// <summary>
  144. /// HOME key
  145. /// </summary>
  146. HOME_key = 0x24,
  147. /// <summary>
  148. /// LEFT ARROW key
  149. /// </summary>
  150. LEFT_ARROW_key = 0x25,
  151. /// <summary>
  152. /// UP ARROW key
  153. /// </summary>
  154. UP_ARROW_key = 0x26,
  155. /// <summary>
  156. /// RIGHT ARROW key
  157. /// </summary>
  158. RIGHT_ARROW_key = 0x27,
  159. /// <summary>
  160. /// DOWN ARROW key
  161. /// </summary>
  162. DOWN_ARROW_key = 0x28,
  163. /// <summary>
  164. /// SELECT key
  165. /// </summary>
  166. SELECT_key = 0x29,
  167. /// <summary>
  168. /// PRINT key
  169. /// </summary>
  170. PRINT_key = 0x2A,
  171. /// <summary>
  172. /// EXECUTE key
  173. /// </summary>
  174. EXECUTE_key = 0x2B,
  175. /// <summary>
  176. /// PRINT SCREEN key
  177. /// </summary>
  178. PRINT_SCREEN_key = 0x2C,
  179. /// <summary>
  180. /// INS key
  181. /// </summary>
  182. INS_key = 0x2D,
  183. /// <summary>
  184. /// DEL key
  185. /// </summary>
  186. DEL_key = 0x2E,
  187. /// <summary>
  188. /// HELP key
  189. /// </summary>
  190. HELP_key = 0x2F,
  191. /// <summary>
  192. /// 0 key
  193. /// </summary>
  194. _0_key = 0x30,
  195. /// <summary>
  196. /// 1 key
  197. /// </summary>
  198. _1_key = 0x31,
  199. /// <summary>
  200. /// 2 key
  201. /// </summary>
  202. _2_key = 0x32,
  203. /// <summary>
  204. /// 3 key
  205. /// </summary>
  206. _3_key = 0x33,
  207. /// <summary>
  208. /// 4 key
  209. /// </summary>
  210. _4_key = 0x34,
  211. /// <summary>
  212. /// 5 key
  213. /// </summary>
  214. _5_key = 0x35,
  215. /// <summary>
  216. /// 6 key
  217. /// </summary>
  218. _6_key = 0x36,
  219. /// <summary>
  220. /// 7 key
  221. /// </summary>
  222. _7_key = 0x37,
  223. /// <summary>
  224. /// 8 key
  225. /// </summary>
  226. _8_key = 0x38,
  227. /// <summary>
  228. /// 9 key
  229. /// </summary>
  230. _9_key = 0x39,
  231. /// <summary>
  232. /// A key
  233. /// </summary>
  234. A_key = 0x41,
  235. /// <summary>
  236. /// B key
  237. /// </summary>
  238. B_key = 0x42,
  239. /// <summary>
  240. /// C key
  241. /// </summary>
  242. C_key = 0x43,
  243. /// <summary>
  244. /// D key
  245. /// </summary>
  246. D_key = 0x44,
  247. /// <summary>
  248. /// E key
  249. /// </summary>
  250. E_key = 0x45,
  251. /// <summary>
  252. /// F key
  253. /// </summary>
  254. F_key = 0x46,
  255. /// <summary>
  256. /// G key
  257. /// </summary>
  258. G_key = 0x47,
  259. /// <summary>
  260. /// H key
  261. /// </summary>
  262. H_key = 0x48,
  263. /// <summary>
  264. /// I key
  265. /// </summary>
  266. I_key = 0x49,
  267. /// <summary>
  268. /// J key
  269. /// </summary>
  270. J_key = 0x4A,
  271. /// <summary>
  272. /// K key
  273. /// </summary>
  274. K_key = 0x4B,
  275. /// <summary>
  276. /// L key
  277. /// </summary>
  278. L_key = 0x4C,
  279. /// <summary>
  280. /// M key
  281. /// </summary>
  282. M_key = 0x4D,
  283. /// <summary>
  284. /// N key
  285. /// </summary>
  286. N_key = 0x4E,
  287. /// <summary>
  288. /// O key
  289. /// </summary>
  290. O_key = 0x4F,
  291. /// <summary>
  292. /// P key
  293. /// </summary>
  294. P_key = 0x50,
  295. /// <summary>
  296. /// Q key
  297. /// </summary>
  298. Q_key = 0x51,
  299. /// <summary>
  300. /// R key
  301. /// </summary>
  302. R_key = 0x52,
  303. /// <summary>
  304. /// S key
  305. /// </summary>
  306. S_key = 0x53,
  307. /// <summary>
  308. /// T key
  309. /// </summary>
  310. T_key = 0x54,
  311. /// <summary>
  312. /// U key
  313. /// </summary>
  314. U_key = 0x55,
  315. /// <summary>
  316. /// V key
  317. /// </summary>
  318. V_key = 0x56,
  319. /// <summary>
  320. /// W key
  321. /// </summary>
  322. W_key = 0x57,
  323. /// <summary>
  324. /// X key
  325. /// </summary>
  326. X_key = 0x58,
  327. /// <summary>
  328. /// Y key
  329. /// </summary>
  330. Y_key = 0x59,
  331. /// <summary>
  332. /// Z key
  333. /// </summary>
  334. Z_key = 0x5A,
  335. /// <summary>
  336. /// Left Windows key (Natural keyboard)
  337. /// </summary>
  338. Left_Windows_key = 0x5B,
  339. /// <summary>
  340. /// Right Windows key (Natural keyboard)
  341. /// </summary>
  342. Right_Windows_key = 0x5C,
  343. /// <summary>
  344. /// Applications key (Natural keyboard)
  345. /// </summary>
  346. Applications_key = 0x5D,
  347. /// <summary>
  348. /// Reserved
  349. /// </summary>
  350. Reserved1 = 0x5E,
  351. /// <summary>
  352. /// Computer Sleep key
  353. /// </summary>
  354. Computer_Sleep_key = 0x5F,
  355. /// <summary>
  356. /// Numeric keypad 0 key
  357. /// </summary>
  358. Numeric_keypad_0_key = 0x60,
  359. /// <summary>
  360. /// Numeric keypad 1 key
  361. /// </summary>
  362. Numeric_keypad_1_key = 0x61,
  363. /// <summary>
  364. /// Numeric keypad 2 key
  365. /// </summary>
  366. Numeric_keypad_2_key = 0x62,
  367. /// <summary>
  368. /// Numeric keypad 3 key
  369. /// </summary>
  370. Numeric_keypad_3_key = 0x63,
  371. /// <summary>
  372. /// Numeric keypad 4 key
  373. /// </summary>
  374. Numeric_keypad_4_key = 0x64,
  375. /// <summary>
  376. /// Numeric keypad 5 key
  377. /// </summary>
  378. Numeric_keypad_5_key = 0x65,
  379. /// <summary>
  380. /// Numeric keypad 6 key
  381. /// </summary>
  382. Numeric_keypad_6_key = 0x66,
  383. /// <summary>
  384. /// Numeric keypad 7 key
  385. /// </summary>
  386. Numeric_keypad_7_key = 0x67,
  387. /// <summary>
  388. /// Numeric keypad 8 key
  389. /// </summary>
  390. Numeric_keypad_8_key = 0x68,
  391. /// <summary>
  392. /// Numeric keypad 9 key
  393. /// </summary>
  394. Numeric_keypad_9_key = 0x69,
  395. /// <summary>
  396. /// Multiply key
  397. /// </summary>
  398. Multiply_key = 0x6A,
  399. /// <summary>
  400. /// Add key
  401. /// </summary>
  402. Add_key = 0x6B,
  403. /// <summary>
  404. /// Separator key
  405. /// </summary>
  406. Separator_key = 0x6C,
  407. /// <summary>
  408. /// Subtract key
  409. /// </summary>
  410. Subtract_key = 0x6D,
  411. /// <summary>
  412. /// Decimal key
  413. /// </summary>
  414. Decimal_key = 0x6E,
  415. /// <summary>
  416. /// Divide key
  417. /// </summary>
  418. Divide_key = 0x6F,
  419. /// <summary>
  420. /// F1 key
  421. /// </summary>
  422. F1_key = 0x70,
  423. /// <summary>
  424. /// F2 key
  425. /// </summary>
  426. F2_key = 0x71,
  427. /// <summary>
  428. /// F3 key
  429. /// </summary>
  430. F3_key = 0x72,
  431. /// <summary>
  432. /// F4 key
  433. /// </summary>
  434. F4_key = 0x73,
  435. /// <summary>
  436. /// F5 key
  437. /// </summary>
  438. F5_key = 0x74,
  439. /// <summary>
  440. /// F6 key
  441. /// </summary>
  442. F6_key = 0x75,
  443. /// <summary>
  444. /// F7 key
  445. /// </summary>
  446. F7_key = 0x76,
  447. /// <summary>
  448. /// F8 key
  449. /// </summary>
  450. F8_key = 0x77,
  451. /// <summary>
  452. /// F9 key
  453. /// </summary>
  454. F9_key = 0x78,
  455. /// <summary>
  456. /// F10 key
  457. /// </summary>
  458. F10_key = 0x79,
  459. /// <summary>
  460. /// F11 key
  461. /// </summary>
  462. F11_key = 0x7A,
  463. /// <summary>
  464. /// F12 key
  465. /// </summary>
  466. F12_key = 0x7B,
  467. /// <summary>
  468. /// F13 key
  469. /// </summary>
  470. F13_key = 0x7C,
  471. /// <summary>
  472. /// F14 key
  473. /// </summary>
  474. F14_key = 0x7D,
  475. /// <summary>
  476. /// F15 key
  477. /// </summary>
  478. F15_key = 0x7E,
  479. /// <summary>
  480. /// F16 key
  481. /// </summary>
  482. F16_key = 0x7F,
  483. /// <summary>
  484. /// F17 key
  485. /// </summary>
  486. F17_key = 0x80,
  487. /// <summary>
  488. /// F18 key
  489. /// </summary>
  490. F18_key = 0x81,
  491. /// <summary>
  492. /// F19 key
  493. /// </summary>
  494. F19_key = 0x82,
  495. /// <summary>
  496. /// F20 key
  497. /// </summary>
  498. F20_key = 0x83,
  499. /// <summary>
  500. /// F21 key
  501. /// </summary>
  502. F21_key = 0x84,
  503. /// <summary>
  504. /// F22 key
  505. /// </summary>
  506. F22_key = 0x85,
  507. /// <summary>
  508. /// F23 key
  509. /// </summary>
  510. F23_key = 0x86,
  511. /// <summary>
  512. /// F24 key
  513. /// </summary>
  514. F24_key = 0x87,
  515. /// <summary>
  516. /// NUM LOCK key
  517. /// </summary>
  518. NUM_LOCK_key = 0x90,
  519. /// <summary>
  520. /// SCROLL LOCK key
  521. /// </summary>
  522. SCROLL_LOCK_key = 0x91,
  523. /// <summary>
  524. /// Left SHIFT key
  525. /// </summary>
  526. Left_SHIFT_key = 0xA0,
  527. /// <summary>
  528. /// Right SHIFT key
  529. /// </summary>
  530. Right_SHIFT_key = 0xA1,
  531. /// <summary>
  532. /// Left CONTROL key
  533. /// </summary>
  534. Left_CONTROL_key = 0xA2,
  535. /// <summary>
  536. /// Right CONTROL key
  537. /// </summary>
  538. Right_CONTROL_key = 0xA3,
  539. /// <summary>
  540. /// Left MENU key
  541. /// </summary>
  542. Left_MENU_key = 0xA4,
  543. /// <summary>
  544. /// Right MENU key
  545. /// </summary>
  546. Right_MENU_key = 0xA5,
  547. /// <summary>
  548. /// Browser Back key
  549. /// </summary>
  550. Browser_Back_key = 0xA6,
  551. /// <summary>
  552. /// Browser Forward key
  553. /// </summary>
  554. Browser_Forward_key = 0xA7,
  555. /// <summary>
  556. /// Browser Refresh key
  557. /// </summary>
  558. Browser_Refresh_key = 0xA8,
  559. /// <summary>
  560. /// Browser Stop key
  561. /// </summary>
  562. Browser_Stop_key = 0xA9,
  563. /// <summary>
  564. /// Browser Search key
  565. /// </summary>
  566. Browser_Search_key = 0xAA,
  567. /// <summary>
  568. /// Browser Favorites key
  569. /// </summary>
  570. Browser_Favorites_key = 0xAB,
  571. /// <summary>
  572. /// Browser Start and Home key
  573. /// </summary>
  574. Browser_Start_and_Home_key = 0xAC,
  575. /// <summary>
  576. /// Volume Mute key
  577. /// </summary>
  578. Volume_Mute_key = 0xAD,
  579. /// <summary>
  580. /// Volume Down key
  581. /// </summary>
  582. Volume_Down_key = 0xAE,
  583. /// <summary>
  584. /// Volume Up key
  585. /// </summary>
  586. Volume_Up_key = 0xAF,
  587. /// <summary>
  588. /// Next Track key
  589. /// </summary>
  590. Next_Track_key = 0xB0,
  591. /// <summary>
  592. /// Previous Track key
  593. /// </summary>
  594. Previous_Track_key = 0xB1,
  595. /// <summary>
  596. /// Stop Media key
  597. /// </summary>
  598. Stop_Media_key = 0xB2,
  599. /// <summary>
  600. /// Play/Pause Media key
  601. /// </summary>
  602. Play_Or_Pause_Media_key = 0xB3,
  603. /// <summary>
  604. /// Start Mail key
  605. /// </summary>
  606. Start_Mail_key = 0xB4,
  607. /// <summary>
  608. /// Select Media key
  609. /// </summary>
  610. Select_Media_key = 0xB5,
  611. /// <summary>
  612. /// Start Application 1 key
  613. /// </summary>
  614. Start_Application_1_key = 0xB6,
  615. /// <summary>
  616. /// Start Application 2 key
  617. /// </summary>
  618. Start_Application_2_key = 0xB7,
  619. /// <summary>
  620. /// Used for miscellaneous characters; it can vary by keyboard.
  621. /// </summary>
  622. Used_for_miscellaneous_characters1 = 0xBA,
  623. /// <summary>
  624. /// Used for miscellaneous characters; it can vary by keyboard.
  625. /// </summary>
  626. Used_for_miscellaneous_characters2 = 0xBF,
  627. /// <summary>
  628. /// Used for miscellaneous characters; it can vary by keyboard.
  629. /// </summary>
  630. Used_for_miscellaneous_characters3 = 0xC0,
  631. /// <summary>
  632. /// Used for miscellaneous characters; it can vary by keyboard.
  633. /// </summary>
  634. Used_for_miscellaneous_characters4 = 0xDB,
  635. /// <summary>
  636. /// Used for miscellaneous characters; it can vary by keyboard.
  637. /// </summary>
  638. Used_for_miscellaneous_characters5 = 0xDC,
  639. /// <summary>
  640. /// Used for miscellaneous characters; it can vary by keyboard.
  641. /// </summary>
  642. Used_for_miscellaneous_characters6 = 0xDD,
  643. /// <summary>
  644. /// Used for miscellaneous characters; it can vary by keyboard.
  645. /// </summary>
  646. Used_for_miscellaneous_characters7 = 0xDE,
  647. /// <summary>
  648. /// Used for miscellaneous characters; it can vary by keyboard.
  649. /// </summary>
  650. Used_for_miscellaneous_characters8 = 0xDF,
  651. /// <summary>
  652. /// Reserved
  653. /// </summary>
  654. Reserved2 = 0xE0,
  655. /// <summary>
  656. /// OEM specific
  657. /// </summary>
  658. OEM_specific1 = 0xE1,
  659. /// <summary>
  660. /// Either the angle bracket key or the backslash key on the RT 102-key keyboard
  661. /// </summary>
  662. Either_the_angle_bracket_key_or_the_backslash_key_on_the_RT_102_key_keyboard = 0xE2,
  663. /// <summary>
  664. /// IME PROCESS key
  665. /// </summary>
  666. IME_PROCESS_key = 0xE5,
  667. /// <summary>
  668. /// OEM specific
  669. /// </summary>
  670. OEM_specific2 = 0xE6,
  671. /// <summary>
  672. /// Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP
  673. /// </summary>
  674. Used_to_pass_Unicode_characters_as_if_they_were_keystrokes = 0xE7,
  675. /// <summary>
  676. /// Unassigned
  677. /// </summary>
  678. Unassigned = 0xE8,
  679. /// <summary>
  680. /// Attn key
  681. /// </summary>
  682. Attn_key = 0xF6,
  683. /// <summary>
  684. /// CrSel key
  685. /// </summary>
  686. CrSel_key = 0xF7,
  687. /// <summary>
  688. /// ExSel key
  689. /// </summary>
  690. ExSel_key = 0xF8,
  691. /// <summary>
  692. /// Erase EOF key
  693. /// </summary>
  694. Erase_EOF_key = 0xF9,
  695. /// <summary>
  696. /// Play key
  697. /// </summary>
  698. Play_key = 0xFA,
  699. /// <summary>
  700. /// Zoom key
  701. /// </summary>
  702. Zoom_key = 0xFB,
  703. /// <summary>
  704. /// Reserved
  705. /// </summary>
  706. Reserved = 0xFC,
  707. /// <summary>
  708. /// PA1 key
  709. /// </summary>
  710. PA1_key = 0xFD,
  711. /// <summary>
  712. /// Clear key
  713. /// </summary>
  714. Clear_key = 0xFE
  715. }

调用演示:

  1. //模拟实现Ctrl+O操作
  2. 模拟按下按键(VirtualKeyCode.CTRL_key)
  3. 模拟单击按键(VirtualKeyCode.O_key)
  4. 模拟弹起按键(VirtualKeyCode.CTRL_key)

整理分享C#通过user32.dll模拟物理按键操作的代码的更多相关文章

  1. UI自动化测试(四)AutoIT工具使用和robot对象模拟键盘按键操作

    AutoIT简介 AutoIt 目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/ ...

  2. python+appium模拟手机物理按键操作

    一句代码:driver.keyevent()        括号里填入的是手机物理按键的数字代号 driver.press_keycode()        括号里填入的是键盘按键的数字代号 手机物理 ...

  3. C# 模拟键盘按键操作

    [DllImport("user32.dll")] public static extern IntPtr keybd_event(byte bVk, byte bScan, in ...

  4. selenium学习-模拟键盘按键操作

    导入  from selenium.webdriver.common.keys import Keys  格式:Keys.XXX 一般这么用:send_keys(Keys.XXX) # coding= ...

  5. emacs里面模拟vim按键操作的插件evil

    emacsConfig/evil-setting.el (setq evil-mode t) (setq evil-shift-width ) ;; some modes aren't meant f ...

  6. Android随笔之——用shell脚本模拟用户按键、触摸操作

    之前写过两篇关于Android中模拟用户操作的博客(其实用一篇是转载的),现在就来讲讲用shell脚本来模拟用户按键操作.本次的目标是用shell脚本打开微信并在其搜索框中搜索相关内容. 本文的模拟功 ...

  7. 【整理】c# 调用windows API(user32.dll)

    User32.dll提供了很多可供调用的接口,大致如下(转自http://blog.csdn.net/zhang399401/article/details/6978803) using System ...

  8. Win32 API中的user32.dll中的ShowWindow方法参数整理

    在使用ShowWindow方法来设置窗体的状态时,由于不知道参数值,用起来非常容易混乱,所以整理了以下其参数的枚举值,方便以后的的使用.   public class User32API { #reg ...

  9. C#中可直接调用WIN32的API函数--USER32.DLL

    Win32的API函数可以直接在C#中直接调用,在做WinForm时还是很有帮助的.有时候直接调用Win32的API,可以很高效的实现想要的效果. using System; using System ...

随机推荐

  1. ASP.NET MVC 中将FormCollection与实体间转换方法

    将Action动作中传递的FormCollection转变成对应的实体,可以使用Controller的TryUpdateModel()方法. public ActionResult Create(Fo ...

  2. session 丢失和解决方案

    在ASP.NET的开发中,总遇到Session丢失.最常见的情况是当用户登录后将用户信息保存在Session中例如Session["user"]=user;在其后的页面中检查Ses ...

  3. python 数据处理中各种存储方式里数据类型的转换

    自己记录,仅供参考 在数据处理时经常会遇到数据类型不匹配的事情,为了方便查看各种存储方式中数据类型的改变.我把一些自己常用的整理方式记录下来,希望可以为以后数据类型的处理工作提供便利. 数据常用的基本 ...

  4. 从入门到精通C++需要学的10本书

    学习C++从入门到精通的的十本最经典书籍  文章来源中国IT实验室收集整理作者佚名更新时间2009-5-16 12:27:05 保存本文保存本文推荐给好友推荐给好友收藏本页收藏本页 欢迎进入C/C++ ...

  5. Linux解压和打包jar

    linux 中解压jarunzip XXX.jar -d app 打jar 进入到解压目录里面(app)jar cvfm0 MR-XDR-JMR-NEW.jar META-INF/MANIFEST.M ...

  6. Loadrunner开发测试脚本

    Loadrunner开发测试脚本 开发测试脚本可以通过录制,也可以手动开发,建议能录制的尽量录制,省时省力,不能录制的只能费力自己开发了,具体看项目情况来决定. 使用Loadrunner开发脚本过程中 ...

  7. MySQL连接线程kill利器之pt-kill

    如何每10秒检查一次,杀死指定用户超过100秒的查询? pt-kill \ --no-version-check \ --host 127.0.0.1 --port 3306 --user 'xxxx ...

  8. python模块学习心得

    初始模块 1.什么是模块 模块是用来实现某项功能的一大堆代码,为什么会有模块呢?过程式编程的时候为了减少程序员编程代码的重复性,就利用函数的调用减少了代码的重复性,但是某些时候程序会过于的庞大,我们会 ...

  9. linux 学习6 软件包安装

    一.软件包管理简介 二.RPM包管理-rpm命令管理 三.RPM包管理-yum在线管理 四.源码包管理 五.脚本安装包与软件包选择 .软件包分类 源码包 脚本安装包 二进制包(RPM包.系统默认 ...

  10. Perl爬取铁路违章旅客信息

    #! /usr/bin/perl use strict; use Encode qw(encode decode); binmode(STDIN,":encoding(utf8)" ...