Dieses Programm erstellt einen zweiten voll funktionsfähigen Cursor auf dem Bildschirm, zusätzlich zum normalen.
Beide Cursor können natürlich gleichzeitig benutzt werden.
Der Cursorklon lässt sich per Tastatur steuern:
;SPACE + RICHTUNGSTASTE = Bewegen
;SPACE + ENTER = Linker Mausklick
;SPACE + BACKSPACE = Rechter Mausklick
;ESC = Beenden
Das Skript:
Spoiler anzeigen
#include<GUIConstantsEx.au3>
#include<WindowsConstants.au3>
#include<Misc.au3>
;CloneMaus by campweb
;Eine zweite unabhängige Maus
;SPACE + RICHTUNGSTASTE = Bewegen
;SPACE + ENTER = Linker Mausklick
;SPACE + BACKSPACE = Rechter Mausklick
;ESC = Beenden
Opt('TrayAutoPause', 0)
TraySetClick(8)
$crosscolor = 0xFF0000
$maus = True
$mausX = 0
$mausY = 0
$mausSpeed = 5
#region - GUI Create
Global $gui = GUICreate('MouseCross',20,20,$mausX,$mausY,$WS_POPUP,$WS_EX_TOOLWINDOW+$WS_EX_LAYERED+$WS_EX_TRANSPARENT+$WS_EX_TOPMOST)
$transcol = 0xABCDEF
If $crosscolor = $transcol Then $transcol = 0xFBCDEF
GUISetBkColor($transcol)
GUICtrlCreateIcon("shell32.dll", -295, 0, 0, 20, 20)
GUISetState()
#endregion
_API_SetLayeredWindowAttributes($gui,$transcol)
WinMinimizeAll()
#region - GUI SelectLoop
While 1
WinMove($gui,"",$mausX,$mausY)
If $maus = True Then
If _IsPressed("20") and _IsPressed("25") and $mausX > 0 Then
$mausX = $mausX - $mausSpeed
WinMove($gui,"",$mausX,$mausY)
EndIf
If _IsPressed("20") and _IsPressed("27") and $mausX < @DesktopWidth - 20 Then
$mausX = $mausX + $mausSpeed
WinMove($gui,"",$mausX,$mausY)
EndIf
If _IsPressed("20") and _IsPressed("28") and $mausY < @DesktopHeight - 20 Then
$mausY = $mausY + $mausSpeed
WinMove($gui,"",$mausX,$mausY)
EndIf
If _IsPressed("20") and _IsPressed("26") and $mausY > 0 Then
$mausY = $mausY - $mausSpeed
WinMove($gui,"",$mausX,$mausY)
EndIf
If _IsPressed("20") And _IsPressed("0D") Then
$cMausX = MouseGetPos(0)
$cMausY = MouseGetPos(1)
MouseMove($mausX,$mausY, 1)
MouseClick("left")
MouseMove($cMausX,$cMausY, 1)
ConsoleWrite("Action: Virtual Left Mouse Click"&@CRLF)
EndIf
If _IsPressed("20") And _IsPressed("08") Then
$cMausX = MouseGetPos(0)
$cMausY = MouseGetPos(1)
MouseMove($mausX,$mausY, 1)
MouseClick("right")
MouseMove($cMausX,$cMausY, 1)
ConsoleWrite("Action: Virtual Right Mouse Click"&@CRLF)
EndIf
If _IsPressed("1B") Then
Exit
EndIf
Sleep(10)
Else
WinMove($gui,"",0,0)
EndIf
WinSetOnTop($gui,"",1)
WEnd
#endregion
Func _API_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $isColorRef = False)
Local Const $AC_SRC_ALPHA = 1
Local Const $ULW_ALPHA = 2
Local Const $LWA_ALPHA = 0x2
Local Const $LWA_COLORKEY = 0x1
If Not $isColorRef Then
$i_transcolor = Hex(String($i_transcolor), 6)
$i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
EndIf
Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $LWA_COLORKEY + $LWA_ALPHA)
Select
Case @error
Return SetError(@error,0,0)
Case $ret[0] = 0
Return SetError(4,0,0)
Case Else
Return 1
EndSelect
EndFunc ;==>_API_SetLayeredWindowAttributes
MfG, campweb