- Offizieller Beitrag
Na gut, es scheint die Zeit für virtuelle Tastaturen zu sein.
Hab mir gedacht, dass das doch auch kürzer gehen muss. Hier also meine Version:
Screenshot:
autoit.de/wcf/attachment/6608/
Script:
Spoiler anzeigen
#include <Constants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
Opt('GUIOnEventMode', 1)
Opt('TrayMenuMode', 1)
Global $bShift = False, $bLock = False, $bOld = False, $ahKeys[57], $wHWND, $cHWND
Global $sTitle = 'Mouse-Keyboard v1.3 by Oscar (http://www.autoit.de)'
Global $aKeys[57][6] = [ _
['^', '°', 010, 060, 32, 32],['1', '!', 044, 060, 32, 32],['2', '"', 078, 060, 32, 32],['3', '§', 112, 060, 32, 32], _
['4', '$', 146, 060, 32, 32],['5', '%', 180, 060, 32, 32],['6', '&&', 214, 060, 32, 32],['7', '/', 248, 060, 32, 32], _
['8', '(', 282, 060, 32, 32],['9', ')', 316, 060, 32, 32],['0', '=', 350, 060, 32, 32],['ß', '?', 384, 060, 32, 32], _
['´', '`', 418, 060, 32, 32],['<-', '<-', 452, 060, 66, 32], _
['q', 'Q', 010, 100, 32, 32],['w', 'W', 044, 100, 32, 32],['e', 'E', 078, 100, 32, 32],['r', 'R', 112, 100, 32, 32], _
['t', 'T', 146, 100, 32, 32],['z', 'Z', 180, 100, 32, 32],['u', 'U', 214, 100, 32, 32],['i', 'I', 248, 100, 32, 32], _
['o', 'O', 282, 100, 32, 32],['p', 'P', 316, 100, 32, 32],['ü', 'Ü', 350, 100, 32, 32],['*', '+', 384, 100, 32, 32], _
['@', '|', 418, 100, 32, 32],['[', '\', 452, 100, 32, 32],[']', '~', 486, 100, 32, 32], _
['a', 'A', 010, 140, 32, 32],['s', 'S', 044, 140, 32, 32],['d', 'D', 078, 140, 32, 32],['f', 'F', 112, 140, 32, 32], _
['g', 'G', 146, 140, 32, 32],['h', 'H', 180, 140, 32, 32],['j', 'J', 214, 140, 32, 32],['k', 'K', 248, 140, 32, 32], _
['l', 'L', 282, 140, 32, 32],['ö', 'Ö', 316, 140, 32, 32],['ä', 'Ä', 350, 140, 32, 32],['#', "'", 384, 140, 32, 32], _
['LOCK', 'LOCK', 418, 140, 100, 32], _
['y', 'Y', 010, 180, 32, 32],['x', 'X', 044, 180, 32, 32],['c', 'C', 078, 180, 32, 32],['v', 'V', 112, 180, 32, 32], _
['b', 'B', 146, 180, 32, 32],['n', 'N', 180, 180, 32, 32],['m', 'M', 214, 180, 32, 32],[',', ';', 248, 180, 32, 32], _
['.', ':', 282, 180, 32, 32],['-', '_', 316, 180, 32, 32],['<', '>', 350, 180, 32, 32],['€', 'µ', 384, 180, 32, 32], _
['SHIFT', 'SHIFT', 418, 180, 100, 32], _
['SPACE', 'SPACE', 10, 220, 406, 32],['ENTER', 'ENTER', 418, 220, 100, 32] _
]
$hGui = GUICreate($sTitle, 530, 280)
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
GUISetIcon('shell32.dll', -174, $hGui)
GUISetBkColor(0xCCCCCC)
GUICtrlCreateLabel('Send input to (Window-Title):', 10, 10, 500, 16)
$hSendWindow = GUICtrlCreateLabel('', 10, 30, 508, 18, $SS_SUNKEN)
GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
For $i = 0 To UBound($aKeys) - 1
$ahKeys[$i] = GUICtrlCreateButton($aKeys[$i][0], $aKeys[$i][2], $aKeys[$i][3], $aKeys[$i][4], $aKeys[$i][5])
GUICtrlSetFont(-1, 14, 400, 0, 'Courier New')
GUICtrlSetOnEvent(-1, '_Key')
Next
$hStatus = GUICtrlCreateLabel(' Status: NORMAL', -2, 264, 534, 16, Default, $WS_EX_STATICEDGE)
GUICtrlSetBkColor(-1, 0xBBBBBB)
TraySetIcon('shell32.dll', -174)
TraySetClick(16)
TrayCreateItem($sTitle)
TrayItemSetState(-1, $TRAY_DISABLE)
TrayCreateItem('')
TrayCreateItem('Exit')
TrayItemSetOnEvent(-1, '_End')
GUISetState()
WinSetOnTop($hGui, '', 1)
While True
If $wHWND <> WinGetHandle('') And WinGetHandle('') <> $hGui Then
$wHWND = WinGetHandle('')
$cHWND = ControlGetFocus($wHWND)
GUICtrlSetData($hSendWindow, WinGetTitle($wHWND))
Else
Sleep(100)
EndIf
WEnd
Func _End()
Exit
EndFunc ;==>_End
Func _Key()
Local $sKey = GUICtrlRead(@GUI_CtrlId)
Switch $sKey
Case '<-'
ControlSend($wHWND, '', $cHWND, '{BACKSPACE}')
Case 'LOCK'
$bShift = False
$bLock = True
GUICtrlSetData($hStatus, ' Status: CAPS LOCK')
_Shift()
Case 'SHIFT'
GUICtrlSetData($hStatus, ' Status: SHIFT')
_Shift()
$bLock = False
Case 'SPACE'
ControlSend($wHWND, '', $cHWND, '{SPACE}')
Case 'ENTER'
ControlSend($wHWND, '', $cHWND, '{ENTER}')
Case '&&'
ControlSend($wHWND, '', $cHWND, '{&}')
If $bShift And Not $bLock Then _Shift()
Case Else
ControlSend($wHWND, '', $cHWND, $sKey)
If $bShift And Not $bLock Then _Shift()
EndSwitch
EndFunc ;==>_Key
Func _Shift()
$bShift = Not $bShift
If Not $bShift Then GUICtrlSetData($hStatus, ' Status: NORMAL')
If $bShift = $bOld Then Return
$bOld = $bShift
For $i = 0 To UBound($aKeys) - 1
GUICtrlSetData($ahKeys[$i], $aKeys[$i][$bShift])
Next
EndFunc ;==>_Shift
Edit: Version 1.3
Jetzt neue/geänderte Tasten:
[Del] löscht das Eingabefeld, [<-] löscht das letzte Zeichen, [SHIFT] aktiviert Großschreibung für die nächste Taste und mit [LOCK] wird die Großschreibung dauerhaft aktiviert.