Belini Posted March 5, 2012 Posted March 5, 2012 (edited) I made a UDF to return the code for each button to dispense with the table of key codes._keycodes.au3expandcollapse popup; #FUNCTION# ===================================================================================== ; Name...........: _keycodes ; Language ......: English ; Description ...: Return the key code ; Syntax.........: $variable = _KeyCodes($sInputKey) ; Parameters ....: key ; Return values..: Success - Virtual Key Code ; Failure - @ Error returns "0" if the code is not listed ; Author ........: Belini ; Country.........:Brazil ; Modified.......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: Yes ; ================================================================================================ #CS ;#EXAMPLE# ======================================================================================= #include <WinAPI.au3> ;#include <_keycodes.au3> Const $MASCARA = 0x8000 Const $tecla = _keycodes("a") MsgBox('', '', "The key code is " & '"' & $tecla & '"') While 1 $estado = _WinAPI_GetAsyncKeyState($tecla) If BitAND($estado, $MASCARA) Then MsgBox('', '', "The key was pressed.") WEnd ; ================================================================================================ #CE Func _KeyCodes($sInputKey) Local $iRetCode = 0 If Not IsString($sInputKey) Then Return SetError(1, 0, $iRetCode) Switch $sInputKey Case "a" $iRetCode = 0x41 ; ==> A Case "b" $iRetCode = 0x42 ; ==> B Case "c" $iRetCode = 0x43 ; ==> C Case "d" $iRetCode = 0x44 ; ==> D Case "e" $iRetCode = 0x45 ; ==> E Case "f" $iRetCode = 0x46 ; ==> F Case "g" $iRetCode = 0x47 ; ==> G Case "h" $iRetCode = 0x48 ; ==> H Case "i" $iRetCode = 0x49 ; ==> I Case "j" $iRetCode = 0x4A ; ==> J Case "k" $iRetCode = 0x4B ; ==> K Case "l" $iRetCode = 0x4C ; ==> L Case "m" $iRetCode = 0x4D ; ==> M Case "n" $iRetCode = 0x4E ; ==> N Case "o" $iRetCode = 0x4F ; ==> O Case "p" $iRetCode = 0x50 ; ==> P Case "q" $iRetCode = 0x51 ; ==> Q Case "r" $iRetCode = 0x52 ; ==> R Case "s" $iRetCode = 0x53 ; ==> S Case "t" $iRetCode = 0x54 ; ==> T Case "u" $iRetCode = 0x55 ; ==> U Case "v" $iRetCode = 0x56 ; ==> V Case "w" $iRetCode = 0x57 ; ==> W Case "x" $iRetCode = 0x58 ; ==> X Case "y" $iRetCode = 0x59 ; ==> Y Case "z" $iRetCode = 0x5A ; ==> Z Case "0" $iRetCode = 0x30 ; ==> 0 Case "1" $iRetCode = 0x31 ; ==> 1 Case "2" $iRetCode = 0x32 ; ==> 2 Case "3" $iRetCode = 0x33 ; ==> 3 Case "4" $iRetCode = 0x34 ; ==> 4 Case "5" $iRetCode = 0x35 ; ==> 5 Case "6" $iRetCode = 0x36 ; ==> 6 Case "7" $iRetCode = 0x37 ; ==> 7 Case "8" $iRetCode = 0x38 ; ==> 8 Case "9" $iRetCode = 0x39 ; ==> 9 Case "Num *" $iRetCode = 0x6A ; ==> Num * Case "Num 0" $iRetCode = 0x60 ; ==> Num 0 Case "Num 1" $iRetCode = 0x61 ; ==> Num 1 Case "Num 2" $iRetCode = 0x62 ; ==> Num 2 Case "Num 3" $iRetCode = 0x63 ; ==> Num 3 Case "Num 4" $iRetCode = 0x64 ; ==> Num 4 Case "Num 5" $iRetCode = 0x65 ; ==> Num 5 Case "Num 6" $iRetCode = 0x66 ; ==> Num 6 Case "Num 7" $iRetCode = 0x67 ; ==> Num 7 Case "Num 8" $iRetCode = 0x68 ; ==> Num 8 Case "Num 9" $iRetCode = 0x69 ; ==> Num 9 Case "Num ." $iRetCode = 0x6E ; ==> Num . Case "Num /" $iRetCode = 0x6F ; ==> Num / Case "Num +" $iRetCode = 0x6B ; ==> Num + Case "Num -" $iRetCode = 0x6D ; ==> Num - Case "F1" $iRetCode = 0x70 ; ==> F1 Case "F2" $iRetCode = 0x71 ; ==> F2 Case "F3" $iRetCode = 0x72 ; ==> F3 Case "F4" $iRetCode = 0x73 ; ==> F4 Case "F5" $iRetCode = 0x74 ; ==> F5 Case "F6" $iRetCode = 0x75 ; ==> F6 Case "F7" $iRetCode = 0x76 ; ==> F7 Case "F8" $iRetCode = 0x77 ; ==> F8 Case "F9" $iRetCode = 0x78 ; ==> F9 Case "F10" $iRetCode = 0x79 ; ==> F10 Case "F11" $iRetCode = 0x7A ; ==> F11 Case "F12" $iRetCode = 0x7B ; ==> F12 Case "Middle mouse" $iRetCode = 0x04 ; ==> Middle mouse Case "Right mouse" $iRetCode = 0x02 ; ==> Right mouse Case "Left mouse" $iRetCode = 0x01 ; ==> Left mouse Case "Mail" $iRetCode = 0xB4 ; ==> Mail Case "Pause" $iRetCode = 0x13 ; ==> Pause Case "Media" $iRetCode = 0xB5 ; ==> Media Case "Next Track" $iRetCode = 0xB0 ; ==> Next Track Case "Previous Track" $iRetCode = 0xB1 ; ==> Previous Track Case "Right Ctrl" $iRetCode = 0xA3 ; ==> Right Ctrl Case "Right Alt" $iRetCode = 0xA5 ; ==> Right Alt Case "Scrol Lock" $iRetCode = 0x91 ; ==> Scrol Lock Case "Print Screen" $iRetCode = 0x2C ; ==> Print Screen Case "Right Shift" $iRetCode = 0xA1 ; ==> Right Shift Case "Left Win" $iRetCode = 0x5B ; ==> Left Win Case "Right Win" $iRetCode = 0x5C ; ==> Right Win Case "Sleep" $iRetCode = 0x5F ; ==> Sleep Case "Context Menu" $iRetCode = 0x5D ; ==> Context Menu Case "ctrl alt Break" $iRetCode = 0x03 ; ==> ctrl alt Break Case "Browser Favorites" $iRetCode = 0xAB ; ==> Browser Favorites Case "Browser Home" $iRetCode = 0xAC ; ==> Browser Home Case "Browser Refresh" $iRetCode = 0xA8 ; ==> Browser Refresh Case "Browser Stop" $iRetCode = 0xA9 ; ==> Browser Stop Case "Browser Forward" $iRetCode = 0xA7 ; ==> Browser Forward Case "Browser Back" $iRetCode = 0xA6 ; ==> Browser Back Case "Browser Search" $iRetCode = 0xAA ; ==> Browser Search Case "Play" $iRetCode = 0xB3 ; ==> Play Case "Stop" $iRetCode = 0xB2 ; ==> Stop Case "Volume Up" $iRetCode = 0xAF ; ==> Volume Up Case "Volume Down" $iRetCode = 0xAE ; ==> Volume Down Case "Mute" $iRetCode = 0xAD ; ==> Mute Case "Page Up" $iRetCode = 0x21 ; ==> Page Up Case "Page Down" $iRetCode = 0x22 ; ==> Page Down Case "Num Lock" $iRetCode = 0x90 ; ==> Num Lock Case "Caps Lock" $iRetCode = 0x14 ; ==> Caps Lock Case "Left Ctrl" $iRetCode = 0xA2 ; ==> Left Ctrl Case "Left Alt" $iRetCode = 0xA4 ; ==> Left Alt Case "Left Shift" $iRetCode = 0xA0 ; ==> Left Shift Case "Space" $iRetCode = 0x20 ; ==> Space Case "Backspace" $iRetCode = 0x08 ; ==> Backspace Case "Delete" $iRetCode = 0x2E ; ==> Delete Case "Insert" $iRetCode = 0x2D ; ==> Insert Case "Up" $iRetCode = 0x26 ; ==> Up Case "Down" $iRetCode = 0x28 ; ==> Down Case "Left" $iRetCode = 0x25 ; ==> Left Case "Right" $iRetCode = 0x27 ; ==> Right Case "Tab" $iRetCode = 0x09 ; ==> Tab Case "Esc" $iRetCode = 0x1B ; ==> Esc Case "End" $iRetCode = 0x23 ; ==> End Case "Home" $iRetCode = 0x24 ; ==> Home Case "Enter" $iRetCode = 0x0D ; ==> Enter Case "[" $iRetCode = 0xDD ; ==> [ Case "]" $iRetCode = 0xDC ; ==> ] Case "" $iRetCode = 0xE2 ; ==> Case ";" $iRetCode = 0xBF ; ==> ; Case "=" $iRetCode = 0xBB ; ==> = Case "~" $iRetCode = 0xDE ; ==> ~ Case "´" $iRetCode = 0xDB ; ==> ´ Case "'" $iRetCode = 0xC0 ; ==> ' Case Else Return SetError(1, 0, $iRetCode) EndSwitch If $iRetCode = 0 Then Return SetError(1, 0, $iRetCode) Return $iRetCode EndFunc ;==>_KeyCodesExample:#include <WinAPI.au3> #include "_KeyCodes.au3" Global Const $MASCARA = 0x8000 Global $sTecla = "a", _ ; Set the key... $iEstado, _ $sCode = _KeyCodes($sTecla) MsgBox(4096, "_KeyCode", 'The key code "' & $sTecla & '" is: ' & $sCode & @CRLF & _ "The program will be waiting for her down." & @CRLF & @CRLF & "Click [OK] to continue...") While 1 $iEstado = _WinAPI_GetAsyncKeyState($sCode) If BitAND($iEstado, $MASCARA) Then MsgBox(4096, "_KeyCode", 'The key "' & $sTecla & '" was pressed.') sleep(20) WEnd Edited March 6, 2012 by Belini qsek 1 My Codes: Virtual Key Code UDF: http://www.autoitscript.com/forum/topic/138246-virtual-key-code-udf/ GuiSplashTextOn.au3: http://www.autoitscript.com/forum/topic/143542-guisplashtexton-udf/ Menu versions of Autoit: http://www.autoitscript.com/forum/topic/137435-menu-versions-of-autoit/#entry962011 Selects first folder of letters: ]http://www.autoitscript.com/forum/topic/144780-select-folders-by-letter/#entry1021708/spoiler] List files and folders with long addresses.: http://www.autoitscript.com/forum/topic/144910-list-files-and-folders-with-long-addresses/#entry102 2926 Program JUKEBOX made in Autoit:some functions:http://www.youtube.com/watch?v=WJ2tC2fD5Qs Navigation to search:http://www.youtube.com/watch?v=lblwOFIbgtQ
Skitty Posted March 6, 2012 Posted March 6, 2012 (edited) Just for the heck of it, you should add a sleep in the while loop so it won't use up an entire CPU in the example. While 1 sleep(10) $iEstado = _WinAPI_GetAsyncKeyState($sCode) If BitAND($iEstado, $MASCARA) Then MsgBox(4096, "_KeyCode", 'The key "' & $sTecla & '" was pressed.') WEnd Also, the same things with less code is in the example, you just need to tweak it a little. <snip> Edited March 6, 2012 by Melba23 Code removed
Moderators Melba23 Posted March 6, 2012 Moderators Posted March 6, 2012 THAT1ANONYMOUSEDUDE, Your code is too close to a real keylogger - so it has vanished. We all know it works, but please do not post it again - Jon does not approve. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Skitty Posted March 6, 2012 Posted March 6, 2012 THAT1ANONYMOUSEDUDE, Your code is too close to a real keylogger - so it has vanished. We all know it works, but please do not post it again - Jon does not approve. M23 Oh god, I had a suspicion this was a probability. Sorry about that, I would have thought detecting only one character would have not skimmed close enough to the posted rules.
Moderators Melba23 Posted March 6, 2012 Moderators Posted March 6, 2012 THAT1ANONYMOUSEDUDE, Suspicion confirmed! M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Belini Posted March 6, 2012 Author Posted March 6, 2012 Just for the heck of it, you should add a sleep in the while loop so it won't use up an entire CPU in the example.It was distracting me, thanks for reminding me My Codes: Virtual Key Code UDF: http://www.autoitscript.com/forum/topic/138246-virtual-key-code-udf/ GuiSplashTextOn.au3: http://www.autoitscript.com/forum/topic/143542-guisplashtexton-udf/ Menu versions of Autoit: http://www.autoitscript.com/forum/topic/137435-menu-versions-of-autoit/#entry962011 Selects first folder of letters: ]http://www.autoitscript.com/forum/topic/144780-select-folders-by-letter/#entry1021708/spoiler] List files and folders with long addresses.: http://www.autoitscript.com/forum/topic/144910-list-files-and-folders-with-long-addresses/#entry102 2926 Program JUKEBOX made in Autoit:some functions:http://www.youtube.com/watch?v=WJ2tC2fD5Qs Navigation to search:http://www.youtube.com/watch?v=lblwOFIbgtQ
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now