Jump to content

Ispressed_Udf


SimpsoN_Bart
 Share

Recommended Posts

[b][font="Tahoma"]Send komutundan daha fazla komutlar içeren bu kütüphane özellikler laptoplardaki fn tuşu için işinize yarayabilir.

Autoit.com
[/font][/b][b][font="Tahoma"]Bazı tuşları klavye veya fare üzerinde kullanıcı tarafından basılmazsa-Bu udf [/font][/b][b][font="Tahoma"]algılayabilir.[/font][/b]
[font="Verdana"][size="3"]Kaynak ve örnekler için.[/size][/font]
[b][font="Tahoma"]http://www.autoitscript.com/forum/topic/86296-ispressed-udf-v22-get-it-now/[/font][/b]
[b][font="Tahoma"]
IsPressed_UDF[/font][/b]()
[codebox]#comments-start -----------------------------------------------------------------------------------
Title: IsPressed Library UDF
Filename: IsPressed UDF.au3
Description: Multiple _IsPressed functions based on original _IsPressed function
Author: FireFox
Version: 02.02.00
Last Update: 26.02.10
Requirements: AutoIt v3.2 +, Developed/Tested on WindowsXP Familly Service Pack 3;Windows 7
Notes: All _IsPressed functions works without have to specify the dll User32

Special thanks ezzetabi (original _IsPressed function)
Valuater for __KeyPressCheck ; __GetKeyType functions
MrCreator for _IsWheelKeyScroll function
#comments-end -------------------------------------------------------------------------------------

#include-once
Global $IsWheelKeyScroll = False ;Declare WheelScroll false
OnAutoItExitRegister("OnAutoItExit")
; #FUNCTION# ===================================================================
; Name : $user32
; Description: Open 'user32.dll'
;===============================================================================
$user32 = DllOpen('user32.dll')


; #FUNCTION# ===================================================================
; Name : _IsAnyKeyPressed
; Description: Returns 1 if anykey is pressed
; Parameter(s): $vDLL = 'user32.dll'
; Requirement(s): __KeyPressCheck
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
; Author(s): FireFox
; Note(s): Thanks to Manadar for parameters
;===============================================================================
Func _IsAnyKeyPressed($vDLL = 'user32.dll')
If __KeyPressCheck(1, 221, -1, $vDLL) Then Return 1
Return 0
EndFunc ;==>_IsAnyKeyPressed


; #FUNCTION# ===================================================================
; Name : _IsOrKeyPressed
; Description: Returns 1 if anykey specified is pressed
; Parameter(s): $HexKey = Hexadecimal key(s) (keys are separated by '|')
; $vDLL = 'user32.dll'
; Requirement(s): __KeyPressCheck
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
; Author(s): FireFox
; Note(s): None
;===============================================================================
Func _IsOrKeyPressed($HexKey, $vDLL = 'user32.dll')
Local $nb, $sHexKey = StringSplit($HexKey, '|', 1)

For $nb = 1 To UBound($sHexKey) - 1
If __KeyPressCheck(1, 1, $sHexKey[$nb], $vDLL) Then Return 1
Next
Return 0
EndFunc ;==>_IsOrKeyPressed


; #FUNCTION# ===================================================================
; Name : _IsAndKeyPressed
; Description: Returns 1 if all keys specified are pressed
; Parameter(s): $HexKey = Hexadecimal key(s) (keys are separated by '|')
; $vDLL = 'user32.dll'
; Requirement(s): __KeyPressCheck
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
; Author(s): FireFox
; Note(s): None
;===============================================================================
Func _IsAndKeyPressed($HexKey, $vDLL = 'user32.dll')
Local $sHexKey = StringSplit($HexKey, '|', 1)

For $nb = 1 To UBound($sHexKey) - 1
If Not __KeyPressCheck(1, 1, $sHexKey[$nb], $vDLL) Then Return 0
Next
Return 1
EndFunc ;==>_IsAndKeyPressed


; #FUNCTION# ===================================================================
; Name : _IsAlphaKeyPressed
; Description: Returns 1 if anyalpha keys are pressed
; Parameter(s): $vDLL = 'user32.dll'
; Requirement(s): __KeyPressCheck
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
; Author(s): FireFox
; Note(s): None
;===============================================================================
Func _IsAlphaKeyPressed($vDLL = 'user32.dll')
If __KeyPressCheck(48, 90, -1, $vDLL) Then Return 1
Return 0
EndFunc ;==>_IsAlphaKeyPressed


; #FUNCTION# ===================================================================
; Name : _IsNumKeyPressed
; Description: Returns 1 if anynumeric keys are pressed
; Parameter(s): $vDLL = 'user32.dll'
; Requirement(s): __KeyPressCheck
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
; Author(s): FireFox
; Note(s): None
;===============================================================================
Func _IsNumKeyPressed($vDLL = 'user32.dll')
If __KeyPressCheck(96, 105, -1, $vDLL) Then Return 1
Return 0
EndFunc ;==>_IsNumKeyPressed


; #FUNCTION# ===================================================================
; Name : _IsAlphaNumKeyPressed
; Description: Returns 1 if anynumeric or anyalpha keys are pressed
; Parameter(s): $vDLL = 'user32.dll'
; Requirement(s): __KeyPressCheck
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
; Author(s): FireFox
; Note(s): None
;===============================================================================
Func _IsAlphaNumKeyPressed($vDLL = 'user32.dll')
If __KeyPressCheck(65, 105, -1, $vDLL) Then Return 1
Return 0
EndFunc ;==>_IsAlphaNumKeyPressed


; #FUNCTION# ===================================================================
; Name : _IsFuncKeyPressed
; Description: Returns 1 if anyfunction keys are pressed
; Parameter(s): $vDLL = 'user32.dll'
; $Extended = 1 then Include F13 to F24 keys
; Requirement(s): __KeyPressCheck
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
; Author(s): FireFox
; Note(s): None
;===============================================================================
Func _IsFuncKeyPressed($vDLL = 'user32.dll', $Extended = 1)
If __KeyPressCheck(112, 123, -1, $vDLL) Then Return 1
If $Extended = 1 Then
If __KeyPressCheck(124, 135, -1, $vDLL) Then Return 1
EndIf
Return 0
EndFunc ;==>_IsFuncKeyPressed


; #FUNCTION# ===================================================================
; Name : _IsArrowKeyPressed
; Description: Returns 1 if anyarrow keys are pressed
; Parameter(s): $vDLL = 'user32.dll'
; Requirement(s): __KeyPressCheck
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
; Author(s): FireFox
; Note(s): None
;===============================================================================
Func _IsArrowKeyPressed($vDLL = 'user32.dll')
If __KeyPressCheck(37, 40, -1, $vDLL) Then Return 1
Return 0
EndFunc ;==>_IsArrowKeyPressed


; #FUNCTION# ===================================================================
; Name : _IsMouseKeyPressed
; Description: Returns 1 if anymouse keys are pressed
; Parameter(s): $vDLL = 'user32.dll'
; Requirement(s): __KeyPressCheck
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
; Author(s): FireFox
; Note(s): None
;===============================================================================
Func _IsMouseKeyPressed($vDLL = 'user32.dll')
If __KeyPressCheck(1, 6, -1, $vDLL) Then Return 1
Return 0
EndFunc ;==>_IsMouseKeyPressed


; #FUNCTION# ===================================================================
; Name : _IsWheelKeyScroll
; Description: Returns wheel mouse key scrolled up or down
; Parameter(s): None
; Requirement(s): __WheelKeyScroll
; $IsWheelKeyScroll = False
; $aKey_Hooks[3]
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
; Author(s): MrCreator, FireFox
; Note(s): Thanks to MrCreator
;===============================================================================
Func _IsWheelKeyScroll()
Local Const $WH_MOUSE_LL = 14

Local $hCallback_KeyHook = DllCallbackRegister('__WheelKeyScroll_Callback', 'int', 'int;ptr')
Local $hM_Module = DllCall('kernel32.dll', 'hwnd', 'GetModuleHandle', 'ptr', 0)

Local $hM_Hook = DllCall('user32.dll', 'hwnd', 'SetWindowsHookEx', 'int', $WH_MOUSE_LL, _
'ptr', DllCallbackGetPtr($hCallback_KeyHook), 'hwnd', $hM_Module[0], 'dword', 0)

Sleep(100) ;Wait some moments until the variable is set by callback function

If IsPtr($hCallback_KeyHook) Then
DllCallbackFree($hCallback_KeyHook)
$hCallback_KeyHook = 0
EndIf

If IsArray($hM_Hook) And $hM_Hook[0] > 0 Then
DllCall('user32.dll', 'int', 'UnhookWindowsHookEx', 'hwnd', $hM_Hook[0])
$hM_Hook[0] = 0
EndIf

If $IsWheelKeyScroll = True Then
$IsWheelKeyScroll = False
Return 1
EndIf
EndFunc ;==>_IsWheelKeyScroll

Func __WheelKeyScroll_Callback($nCode, $wParam)
Local Const $MOUSE_WheelSCROLL_EVENT = 522
Local $iEvent = BitAND($wParam, 0xFFFF)

$IsWheelKeyScroll = ($iEvent = $MOUSE_WheelSCROLL_EVENT)

Return 0
EndFunc ;==>__WheelKeyScroll_Callback


; #FUNCTION# ===================================================================
; Name : _IsTimeKeyPressed
; Description: Returns pressed time of specified key
; Parameter(s): $sHexKey= Hexadecimal key
; $format = format of return time 'ms' or 'sec'
; Requirement(s): __KeyPressCheck
; Return Value(s): On Success - Returns time
; On Failure - Returns -1
; Author(s): FireFox
; Note(s): All other keys than other functions
;===============================================================================
Func _IsTimeKeyPressed($sHexKey, $format = 'ms', $vDLL = 'user32.dll')
If _IsPressed($sHexKey) Then
$Init = TimerInit()
While _IsPressed($sHexKey)
$DiffKey = TimerDiff($Init)
WEnd
If $format = 'ms' Then Return $DiffKey
If $format = 'sec' Then Return ($DiffKey / 1000)
EndIf
Return -1
EndFunc ;==>_IsTimeKeyPressed


; #FUNCTION# ===================================================================
; Name : _IsSpecialKeyPressed
; Description: Returns 1 if anyspecial keys are pressed
; Parameter(s): $vDLL = 'user32.dll'
; Requirement(s): __KeyPressCheck
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
; Author(s): FireFox
; Note(s): All other keys than other functions
;===============================================================================
Func _IsSpecialKeyPressed($vDLL = 'user32.dll')
If __KeyPressCheck(8, 36, -1, $vDLL) Then Return 1
If __KeyPressCheck(41, 46, -1, $vDLL) Then Return 1
If __KeyPressCheck(91, 92, -1, $vDLL) Then Return 1
If __KeyPressCheck(106, 111, -1, $vDLL) Then Return 1
If __KeyPressCheck(136, 221, -1, $vDLL) Then Return 1
Return 0
EndFunc ;==>_IsSpecialKeyPressed


; #FUNCTION# ===================================================================
; Name : _IsPressed
; Description: Check if key has been pressed
; Parameter(s): $sHexKey = Hexadecimal key
; $vDLL = 'user32.dll'
; Requirement(s): None
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
; Author(s): ezzetabi and Jon
; Note(s): If calling this function repeatidly, should open 'user32.dll' and pass in handle.
;===============================================================================
Func _IsPressed($sHexKey, $vDLL = 'user32.dll')
Local $a_R = DllCall($vDLL, 'int', 'GetAsyncKeyState', 'int', '0x' & $sHexKey)
If Not @error And BitAND($a_R[0], 0x8000) = 0x8000 Then Return 1
Return 0
EndFunc ;==>_IsPressed


; #FUNCTION# ===================================================================
; Name : _GetKeyByHex
; Description: Returns Alpha key for specified Hexadecimal key
; Parameter(s): $sHexKey = Hexadecimal key
; Requirement(s): __GetKeyType
; Return Value(s): On Success - Returns Aplha Key
; On Failure - Returns -1
; Author(s): FireFox
; Note(s): None
;===============================================================================
Func _GetKeyByHex($sHexKey)
Return __GetKeyType($sHexKey)
EndFunc ;==>_GetKeyByHex


; #FUNCTION# ===================================================================
; Name : _GetKeyByAlpha
; Description: Returns Hexadecimal key for specified Alpha key
; Parameter(s): $sAlphaKey = Alphabetic key
; Requirement(s): __GetKeyType
; Return Value(s): On Success - Returns Hexadecimal Key
; On Failure - Returns -1
; Author(s): FireFox
; Note(s): Thanks to AlmarM for idea
;===============================================================================
Func _GetKeyByAlpha($sAlphaKey)
Return __GetKeyType($sAlphaKey, 1)
EndFunc ;==>_GetKeyByAlpha


#Region Internal
; #FUNCTION# ===================================================================
; Name : OnAutoItExit
; Description: Close 'user32.dll'
;===============================================================================
Func OnAutoItExit()
DllClose($user32)
EndFunc ;==>OnAutoItExit


; #FUNCTION# ===================================================================
; Name : __KeyPressCheck
; Description: Check if specified keys are pressed
; Parameter(s): sHexKey - Key to check for
; Requirement(s): None
; Return Value(s): On Success - Returns 1
; On Failure - Returns 0
; Author(s): Valuater
; Note(s): Thanks Valuater... 8)
;===============================================================================
Func __KeyPressCheck($iStart, $iFinish, $iHexKey = -1, $vDLL = 'user32.dll')
Local $ikey, $ia_R
For $ikey = $iStart To $iFinish
If $iHexKey == -1 Then $ia_R = DllCall($vDLL, 'int', 'GetAsyncKeyState', 'int', '0x' & Hex($ikey, 2))
If $iHexKey <> -1 Then $ia_R = DllCall($vDLL, 'int', 'GetAsyncKeyState', 'int', '0x' & $iHexKey)
If Not @error And BitAND($ia_R[0], 0x8000) = 0x8000 Then Return 1
Next
Return 0
EndFunc ;==>__KeyPressCheck


; #FUNCTION# ===================================================================
; Name : __GetKeyType
; Description: Returns Hexadecimal or Aplha key for specified key
; Parameter(s): $Type = 0 Return Alpha
; 1 Return Hexadecimal
; Requirement(s): None
; Return Value(s): On Success - Returns Key
; On Failure - Returns 0
; Author(s): Valuater, FireFox
; Note(s): Thanks Valuater... 8)
;===============================================================================
Func __GetKeyType($iKeyIn, $Type = 0)
If $iKeyIn = '' Then Return -1

Local $s_String = '01LeftMouse|02RightMouse|04MiddleMouse|05X1Mouse|06X2Mouse|08BACKSPACE|09TAB|0CCLEAR|' & _
'0DENTER|10SHIFT|11CTRL|12ALT|13PAUSE|14CAPS LOCK|1BESC|20SPACEBAR|21PAGE UP|22PAGE DOWN|' & _
'23END|24HOME|25LEFT|26UP|27RIGHT|28DOWN|29SELECT|2APRINT|2BEXECUTE|2CPRINT SCREEN|2DINS|2EDEL|' & _
'300|311|322|333|344|355|366|377|388|399|41A|42B|43C|44D|45E|46F|47G|48H|49I|4AJ|4BK|4CL|4DM|4EN|' & _
'4FO|50P|51Q|52R|53S|54T|55U|56V|57W|58X|59Y|5AZ|5BLeft Windows|5CRight Windows|60Num 0|61Num 1|' & _
'62Num 2|63Num 3|64Num 4|65Num 5|66Num 6|67Num 7|68Num 8|69Num 9|6AMultiply|6BAdd|' & _
'6CSeparator|6DSubtract|6EDecimal|6FDivide|70F1|71F2|72F3|73F4|74F5|75F6|76F7|77F8|78F9|' & _
'79F10|7AF11|7BF12|7CF13|7DF14|7EF15|7FF16|80HF17|81HF18|82HF19|83HF20|84HF21|85HF22|' & _
'86HF23|87HF24|90NUM LOCK|91SCROLL LOCK|A0Left SHIFT|A1Right SHIFT|A2Left CTRL|A3Right CTRL|' & _
'A4Left MENU|A5Right Menu|BA;|BB=|BC,|BD-|BE.|BF/|C0`|DB[|DC\|DD]'

If $Type == 0 Then
$iKeyIn = StringTrimLeft($s_String, (StringInStr($s_String, $iKeyIn) + StringLen($iKeyIn) - 1))
$s_String = StringLeft($iKeyIn, (StringInStr($iKeyIn, '|') - 1))
ElseIf $Type == 1 Then
$iKeyIn = StringLeft($s_String, StringInStr($s_String, $iKeyIn) - 1)
$s_String = StringTrimLeft($iKeyIn, StringInStr($iKeyIn, '|', 2, -1))
EndIf
If $s_String <> '' Then
Return $s_String
EndIf
Return -1
EndFunc ;==>__GetKeyType
#EndRegion Internal
[/codebox]

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...