Hallo
Ich wollte euch einmal mein letztes Script zeigen. Es handelt sich dabei um einen Punkt, der ständig der Maus folgt, in Zeitabständen, die man selbst festlegen kann, sowie die farbe und die größe des Punktes
Er soll helfen, die position der Maus auf manchen, z.b.weißen oberlächen besser zu erkennen.
Bitte kommentiert das script und gebt mir tipps, z.b. wie ich den code kürzen kann, er erscheint mir um einiges zu lang für ein so simples programm. (ich bin ein anfänger mit autoit^^)
changelog:
v1.01 : - der punkt kann jetzt die gegenteilige Farbe seines Untergrunds haben.
v1.02: - die farbe vom punkt wird die ganze zeit aktualisiert, auch wenn die aktualisierungsrate höher als 0 ist.
- das einstellungsfenster geht sofort auf,auch wenn die aktualisierungsrate höher als 0 ist.
- (alle?) bugs gefixt
v1.03: - Es ist jetzt möglich einzustellen, dass der Punkt rund ist.
v1.04: - Als Aktualisierungsrate kann nur noch eine runde Zahl angegeben werden. Ich hoffe damit einige Fehler zu beheben.
v1.05: - Transparenz des Punktes kann jetzt via Silder verändert werden
- Flackern der inputs und des punktes bei farbgegenteilaktivierung entfernt
- Refreshzeiten auf Hunderstelsekunden genau
Quellcode:
Mauspunkt.au3
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <EditConstants.au3>
#include <WinAPI.au3>
#include <Misc.au3>
Opt("TrayMenuMode", 1)
Global $appname = "Mauspunkt "
Global $version = "v1.05"
Global $author = "srules"
$about=TrayCreateItem($appname&$version)
TrayCreateItem("")
TrayCreateItem('"F11" zum Ein- Ausblenden des Punktes drücken')
$einstellungen = TrayCreateItem("Einstellungen...")
TrayCreateItem("")
$exit = TrayCreateItem("Beenden")
TraySetToolTip($appname&$version)
#region
Global $groesse = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Groesse")
If @error then
$groesse = 5
endif
Global $fstring = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Farbe")
If @error then
$farbe = "0xFF0000"
$fstring = "FF0000"
Else
$farbe = "0x"&$fstring
endif
Global $refresh = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Aktualisierung")
If @error then
$refresh = 0
endif
Global $autostart = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Autostart")
If @error then
$autostart = 0
endif
Global $opp = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Farbgegenteil")
If @error then
$opp = 0
endif
Global $rund = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Rund")
If @error then
$rund = 0
endif
Global $transparenz = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Transparenz")
If @error then
$transparenz = 51
endif
Dim $Left, $Top, $Punkt, $label, $status
$prozent1 = "0"
$prozent2 = "0"
$farbtxt1 = "0"
$farbtxt2 = "0"
$farbvar1 = "0"
$farbvar2 = "0"
#EndRegion
main()
[/autoit] [autoit][/autoit] [autoit]Func main()
$timer = TimerInit()
Global $status = 1
lese()
Global $Left = MouseGetPos (0) - $groesse / 2
Global $Top = MouseGetPos (1) - $groesse / 2
Global $Punkt = GUICreate ("", $groesse, $groesse, $Left, $Top, $WS_POPUP, _
BitOR ($WS_EX_TRANSPARENT, $WS_EX_LAYERED, $WS_EX_TOPMOST),$WS_EX_TOOLWINDOW)
Global $label = GUICtrlCreateLabel("", 0, 0, $groesse, $groesse)
WinSetTrans ($Punkt, "", (254 - $transparenz))
GUISetBkColor($farbe, $Punkt)
GUISetState(@SW_SHOW,$Punkt)
If $rund = 1 Then
$pos = WinGetPos ($Punkt)
Global $width = $pos[2]
Global $height = $pos[3]
$rgn = _WinAPI_CreateRoundRectRgn(0, 0, $width, $height, $width +10, $height+10 )
_WinAPI_SetWindowRgn($Punkt, $rgn)
endif
$amount = 0
While 1
$amount += 1
If $opp = 1 Then
opp()
If Mod($amount,2) = 0 Then
$farbvar1 = $fstring
If $farbvar1 <> $farbvar2 Then
GUICtrlSetBkColor($label, "0x"&$fstring)
EndIf
ElseIf Mod($amount,2) = 1 Then
$farbvar2 = $fstring
If $farbvar2 <> $farbvar1 Then
GUICtrlSetBkColor($label, "0x"&$fstring)
EndIf
EndIf
Endif
trayloop()
HotKeySet("{F11}","ausblenden")
$WinPos = WinGetPos ($Punkt)
If $refresh <> 0 Then
$difference = Int(TimerDiff($timer))
If Mod($difference,$refresh) < 10 Then
WinMove ($Punkt, "", MouseGetPos (0) - $groesse/2+0.75, MouseGetPos (1) - $groesse/2+0.75,Default,Default)
EndIf
Else
WinMove ($Punkt, "", MouseGetPos (0) - $groesse/2+0.75, MouseGetPos (1) - $groesse/2+0.75,Default,Default)
endif
WEnd
Endfunc
Func einstellungen()
If WinExists($appname&$version&" - Einstellungen") Then
WinActivate($appname&$version&" - Einstellungen")
Else
GUIDelete($Punkt)
$gui = GuiCreate($appname&$version&" - Einstellungen",300,300)
GUICtrlCreateGroup("Höhe/Breite des Punktes in Pixeln",10,10, 180,50)
GUICtrlCreateGroup("Transparenz des Punktes",10,187,285,57)
$igroesse = GUICtrlCreateInput($groesse,25,30, 21,21,$ES_NUMBER)
GUICtrlCreateGroup("Farbe des Punktes",10, 75, 180, 110)
$rot = Guictrlcreatebutton("",25, 90, 30, 30)
GUICtrlSetBkColor(-1,0xFF0000)
$gruen = GUICtrlCreateButton("",60,90,30,30)
GUICtrlSetBkColor(-1,0x00FF00)
$blau = Guictrlcreatebutton("",95,90,30,30)
GUICtrlSetBkColor(-1,0x0000FF)
$gelb = GUICtrlCreateButton("",130,90,30,30)
GUICtrlSetBkColor(-1,0xFFF000)
$lbl = Guictrlcreatelabel("HEX:",25,128)
$ifarbe = Guictrlcreateinput($fstring, 52,125, 50, 21)
$mehr = GUICtrlCreateButton("Mehr Farben...",107, 123)
$slider = GUICtrlCreateSlider(20, 200 , 267, 30)
GUICtrlSetLimit ( -1, 100 , 0 )
$prozentlabel = Guictrlcreatelabel("",139,231,34,10)
Guictrlsetfont(-1, 7.5 )
$hotkeybutton = GUICtrlCreateButton('F11',10,245,Default,21)
GUICtrlSetFont (-1,7.5,600)
GUICtrlCreateLabel('zum Ein- Ausblenden des Punktes drücken',38,247,290)
GUICtrlSetFont (-1,8.5,600)
$speichern = GUICtrlCreateButton("Speichern", 73,265, 75, 21)
$loeschen = GUICtrlCreateButton("Zurücksetzen", 152,265,75,21)
GUICtrlCreateGroup("",195, 75,100,110)
$auto = GUICtrlCreateCheckbox("",200,82,40,21)
Guictrlcreatelabel("Autostart beim",200,100)
GUICtrlCreateLabel("Start von Windows",200,113,80,35)
GUICtrlCreateGroup("Aktualisierungsrate",195, 10,100, 50)
$irefresh = GUICtrlCreateinput($refresh,200,30,67,21,$ES_NUMBER)
Guictrlcreatelabel("ms",270,33)
$copp = GUICtrlCreateCheckbox("Der Punkt soll die gegenteilige",25,149,Default,15)
GUICtrlCreateLabel("Farbe seines Untergrundes haben",25,163,163)
$reckig=Guictrlcreateradio("Eckig",60,30)
$rrund =GUICtrlCreateRadio("Rund",110,30)
GUICtrlSetState($speichern,$GUI_FOCUS)
If $opp = 1 Then
GUICtrlSetState($mehr,$GUI_DISABLE)
GUICtrlSetState($rot,$GUI_DISABLE)
GUICtrlSetState($gelb,$GUI_DISABLE)
GUICtrlSetState($gruen,$GUI_DISABLE)
GUICtrlSetState($blau,$GUI_DISABLE)
GUICtrlSetState($ifarbe,$GUI_DISABLE)
GUICtrlSetData($ifarbe,"")
GUICtrlSetBkColor($ifarbe,0xECE9D8)
GUICtrlSetColor($lbl,0xACA889)
Else
GUICtrlSetState($mehr,$GUI_ENABLE)
GUICtrlSetState($rot,$GUI_ENABLE)
GUICtrlSetState($gelb,$GUI_ENABLE)
GUICtrlSetState($gruen,$GUI_ENABLE)
GUICtrlSetState($blau,$GUI_ENABLE)
GUICtrlSetState($ifarbe,$GUI_ENABLE)
GUICtrlSetData($ifarbe,$fstring)
GUICtrlSetBkColor($ifarbe,"0x"&$fstring)
GUICtrlSetColor($lbl,0x000000)
EndIf
GUICtrlSetData($slider, $transparenz * 100 / 254)
GUICtrlSetData($prozentlabel, $transparenz * 100 / 254 &"%")
GUISetState(@SW_SHOW,$gui)
If $autostart = 1 Then
GUICtrlSetState($auto,$GUI_CHECKED)
EndIf
If $opp = 1 Then
GUICtrlSetState($copp,$GUI_CHECKED)
EndIf
If $rund = 1 Then
GUICtrlSetState($rrund,$GUI_CHECKED)
Else
GUICtrlSetState($reckig,$GUI_CHECKED)
EndIf
$zahl = 0
while 1
$zahl += 1
If Mod($zahl,2) = 0 Then
$prozent1 = Guictrlread($slider)
If $prozent1 <> $prozent2 Then
Guictrlsetdata($prozentlabel,$prozent1&"%")
Endif
If (Guictrlread($copp)) <> 1 Then
$farbtxt1 = GUICtrlRead($ifarbe)
If $farbtxt1 <> $farbtxt2 Then
GUICtrlSetBkColor($ifarbe,"0x"&$farbtxt1)
Endif
Endif
elseif Mod($zahl,2) = 1 Then
$prozent2 = Guictrlread($slider)
If $prozent2 <> $prozent1 Then
Guictrlsetdata($prozentlabel,$prozent2&"%")
EndIf
If (Guictrlread($copp)) <> 1 Then
$farbtxt2 = GUICtrlRead($ifarbe)
If $farbtxt2 <> $farbtxt1 Then
GUICtrlSetBkColor($ifarbe,"0x"&$farbtxt2)
endif
endif
endif
If (Guictrlread($irefresh)) > 10000 Then
GUICtrlSetData($irefresh,"10000")
EndIf
$msg = Guigetmsg()
trayloop()
Switch $msg
Case $rot
GUICtrlSetData($ifarbe,"FF0000")
Case $gruen
GUICtrlSetData($ifarbe,"00FF00")
Case $blau
GUICtrlSetData($ifarbe,"0000FF")
Case $gelb
GUICtrlSetData($ifarbe,"FFFF00")
Case $mehr
ShellExecute("http://www.iceman.armagetron.co.uk/text-colors.gif")
Case $speichern
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Farbe","REG_SZ",GUICtrlRead($ifarbe))
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Groesse","REG_SZ",GUICtrlRead($igroesse))
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Aktualisierung","REG_SZ",GUICtrlRead($irefresh))
$transparenz = ((Guictrlread($slider)) / 100 * 254)
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Transparenz","REG_SZ",$transparenz)
If (Guictrlread($copp)) = 1 Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Farbgegenteil","REG_SZ","1")
Else
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Farbgegenteil","REG_SZ","0")
EndIf
If (Guictrlread($rrund)) = 1 Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Rund","REG_SZ","1")
Else
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Rund","REG_SZ","0")
EndIf
If (Guictrlread($auto)) = 1 Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Autostart","REG_SZ","1")
Else
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Autostart","REG_SZ","0")
EndIf
If $autostart = 1 Then
FileCreateShortcut(@ScriptFullPath,@Startupdir&"\Mauspunkt.lnk")
Else
FileDelete(@StartupDir&"\Mauspunkt.lnk")
EndIf
GUIDelete($gui)
Winkill($appname&$version&" - Einstellungen")
ExitLoop
Case $loeschen
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Farbe")
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Groesse")
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Aktualisierung")
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname,"Autostart")
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Farbgegenteil")
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Rund")
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Transparenz")
GUICtrlSetData($igroesse,"5")
Guictrlsetdata($irefresh,"0")
Guictrlsetdata($slider,"20")
GUICtrlSetState($auto,$GUI_UNCHECKED)
GUICtrlSetState($copp,$GUI_UNCHECKED)
GUICtrlSetState($rrund,$GUI_UNCHECKED)
GUICtrlSetState($reckig,$GUI_CHECKED)
GUICtrlSetState($mehr,$GUI_ENABLE)
GUICtrlSetState($rot,$GUI_ENABLE)
GUICtrlSetState($gelb,$GUI_ENABLE)
GUICtrlSetState($gruen,$GUI_ENABLE)
GUICtrlSetState($blau,$GUI_ENABLE)
GUICtrlSetState($ifarbe,$GUI_ENABLE)
GUICtrlSetData($ifarbe,$fstring)
GUICtrlSetBkColor($ifarbe,"0x"&$fstring)
GUICtrlSetColor($lbl,0x000000)
GUICtrlSetData($ifarbe,"FF0000")
GUICtrlSetBkColor($ifarbe,"0x"&(GUICtrlRead($ifarbe)))
$farbtxt1 = "FF0000"
$farbtxt2 = "FF0000"
Case $copp
If (Guictrlread($copp)) = 1 Then
GUICtrlSetState($mehr,$GUI_DISABLE)
GUICtrlSetState($rot,$GUI_DISABLE)
GUICtrlSetState($gelb,$GUI_DISABLE)
GUICtrlSetState($gruen,$GUI_DISABLE)
GUICtrlSetState($blau,$GUI_DISABLE)
GUICtrlSetState($ifarbe,$GUI_DISABLE)
GUICtrlSetData($ifarbe,"")
GUICtrlSetBkColor($ifarbe,0xECE9D8)
GUICtrlSetColor($lbl,0xACA889)
Else
GUICtrlSetState($mehr,$GUI_ENABLE)
GUICtrlSetState($rot,$GUI_ENABLE)
GUICtrlSetState($gelb,$GUI_ENABLE)
GUICtrlSetState($gruen,$GUI_ENABLE)
GUICtrlSetState($blau,$GUI_ENABLE)
GUICtrlSetState($ifarbe,$GUI_ENABLE)
GUICtrlSetData($ifarbe,$fstring)
GUICtrlSetBkColor($ifarbe,"0x"&$fstring)
GUICtrlSetColor($lbl,0x000000)
EndIf
Case $GUI_EVENT_CLOSE
GUIDelete($gui)
Winkill($appname&$version&" - Einstellungen")
ExitLoop
EndSwitch
wend
If $status = 1 Then
main()
Elseif $status = 2 Then
ausblenden()
EndIf
EndIf
EndFunc
Func ausblenden()
lese()
Global $status = 2
GuiDelete($Punkt)
while 1
trayloop()
HotKeySet("{F11}","main")
WEnd
EndFunc
Func trayloop()
$MSGTRAY = TrayGetMsg()
Select
Case $MSGTRAY = $einstellungen
einstellungen()
Case $MSGTRAY = $about
Msgbox(64,"Über...",$appname&$version&" © by "&$author&" 2009")
Case $MSGTRAY = $exit
Exit
EndSelect
EndFunc
Func lese()
Global $groesse = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Groesse")
If @error then
$groesse = 5
endif
Global $refresh = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Aktualisierung")
If @error then
$refresh = 0
endif
Global $opp = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Farbgegenteil")
If @error then
$opp = 0
endif
Global $rund = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Rund")
If @error then
$rund = 0
endif
Global $autostart = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Autostart")
If @error then
$autostart = 0
endif
Global $fstring = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Farbe")
If @error then
$farbe = "0xFF0000"
$fstring = "FF0000"
einstellungen()
Else
$farbe = "0x"&$fstring
endif
Global $transparenz = Regread("HKEY_LOCAL_MACHINE\SOFTWARE\"&$appname, "Transparenz")
If @error then
$transparenz = 51
endif
Endfunc
Func opp()
$dec = PixelGetColor(Mousegetpos(0),MouseGetPos(1))
$hex = Hex($dec)
$hex = stringmid($hex,3)
Dim $hex2[7]
For $i = 1 to 6
$hex2[$i] = StringMid($hex,$i,1)
Switch $hex2[$i]
Case "0"
$hex2[$i] = "F"
Case "1"
$hex2[$i] = "E"
Case "2"
$hex2[$i] = "D"
Case "3"
$hex2[$i] = "C"
Case "4"
$hex2[$i] = "B"
Case "5"
$hex2[$i] = "A"
Case "6"
$hex2[$i] = "9"
Case "7"
$hex2[$i] = "8"
Case "8"
$hex2[$i] = "7"
Case "9"
$hex2[$i] = "6"
Case "A"
$hex2[$i] = "5"
Case "B"
$hex2[$i] = "4"
Case "C"
$hex2[$i] ="3"
Case "D"
$hex2[$i] ="2"
Case "E"
$hex2[$i] ="1"
Case "F"
$hex2[$i] ="0"
EndSwitch
next
Global $fstring = $hex2[1]&$hex2[2]&$hex2[3]&$hex2[4]&$hex2[5]&$hex2[6]
EndFunc
Func OnAutoItExit()
If $autostart = 1 Then
FileCreateShortcut(@ScriptFullPath,@StartupDir&"\Mauspunkt.lnk")
Else
FileDelete(@Startupdir&"\Mauspunkt.lnk")
EndIf
EndFunc