Dieses kleine Prog misst die zurückgelegte Strecke des Cursors in Pixel und cm.
DPI wird automatisch ermittelt, bei DPI einfach das stehen lassen was da schon steht.
Hier der Source code:
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <Mouse-Meter.au3>
#include <WinAPI.au3>
Opt("TrayMenuMode", 1)
Global $start = False
HotKeySet("^{HOME}", "Reset")
HotKeySet("^{END}", "Ende")
;------------------------DPI_Ermitteln----------------
Global Const $LOGPIXELSX = 88
$ScreenDC = _WinAPI_GetDC(0)
$logX = _WinAPI_GetDeviceCaps($ScreenDC, $LOGPIXELSX)
_WinAPI_ReleaseDC(0, $ScreenDC)
;------------------------DPI_Ermitteln----------------
$GUI = GUICreate("Mouse-Meter", 108, 130, 193, 125, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
$CheckboxPixel = GUICtrlCreateCheckbox("Pixel", 16, 8, 73, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$CheckboxCm = GUICtrlCreateCheckbox("Cm", 16, 24, 73, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$CheckboxPPM = GUICtrlCreateCheckbox("PPM", 16, 40, 73, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$CheckboxCmm = GUICtrlCreateCheckbox("cm/min", 16, 56, 73, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$guiDPI = GUICtrlCreateInput("DPI (" & $logX & ")", 16, 73, 73, 21)
$KKTHX = GUICtrlCreateButton("OK", 16, 96, 75, 25, 0)
GUISetState(@SW_SHOW)
$wiederherstellen = TrayCreateItem("Wiederherstellen")
$Reset = TrayCreateItem("Reset")
$Pause = TrayCreateItem("Pause")
TrayItemSetState(-1, $TRAY_DISABLE)
$Schliessen = TrayCreateItem("Exit")
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $KKTHX
$DPI = GUICtrlRead($guiDPI)
If $DPI = "DPI (" & $logX & ")" Then $DPI = $logX
If Not StringIsInt($DPI) Then
$start = False
MsgBox(0, "Mouse-Meter", "Eine Zahl als DPI angeben!")
ElseIf $DPI <= 0 Then
$start = False
MsgBox(0, "Mouse-Meter", "Eine Zahl >0 bei DPI eintragen!")
Else
$start = True
GUISetState(@SW_HIDE)
TrayItemSetState($Pause, $TRAY_ENABLE)
EndIf
EndSwitch
Switch TrayGetMsg()
Case $wiederherstellen
GUISetState(@SW_SHOW)
Case $Reset
Reset()
Case $Pause
$start = Not $start
Case $Schliessen
Exit
EndSwitch
If $start Then
ToolTip(MouseMeter($DPI, GUICtrlRead($CheckboxPixel), GUICtrlRead($CheckboxPPM), GUICtrlRead($CheckboxCm), GUICtrlRead($CheckboxCmm)), 0, 0)
EndIf
WEnd
Func Reset()
$mmcPixel = 0
$MouseposOld = MouseGetPos()
$MouseposNew = MouseGetPos()
$Timer = TimerInit()
EndFunc ;==>Reset
Func Ende()
Exit
EndFunc ;==>Ende
hier noch die UDF dazu:
Spoiler anzeigen
#include-once
#include <GUIConstantsEx.au3>
Global $mmcPixel = 0, $MouseposOld = MouseGetPos(), $MouseposNew = MouseGetPos(), $mmTimer = TimerInit(), $mmdoonce = True
Func MouseMeter($mmDPI, $mmPixel = $GUI_UNCHECKED, $mmPPM = $GUI_UNCHECKED, $mmCm = $GUI_UNCHECKED, $mmCmm = $GUI_UNCHECKED)
Local $mmString = "", $mmCRLF = ""
if $mmdoonce Then
$MouseposOld = MouseGetPos()
$MouseposNew = MouseGetPos()
$mmTimer = TimerInit()
$mmcPixel = 0
$mmdoonce = False
EndIf
$MouseposNew = MouseGetPos()
If $MouseposOld[0] <> $MouseposNew[0] Or $MouseposOld[1] <> $MouseposNew[1] Then
$mmcPixel += dif($MouseposOld[0], $MouseposNew[0]) + dif($MouseposOld[1], $MouseposNew[1])
$MouseposOld = MouseGetPos()
EndIf
$intCM = Round($mmcPixel * 2.54 / $mmDPI, 2)
If $intCM > 935060606060606060.60606060606061 Then
$intCMt = Round($intCM / 935060606060606060.60606060606061) & " lichtjahre"
ElseIf $intCM > 100000 Then
$intCMt = Round($intCM / 100000, 2) & " km"
ElseIf $intCM > 100 Then
$intCMt = Round($intCM / 100, 2) & " m"
Else
$intCMt = $intCM & " cm"
EndIf
If $mmPixel = $GUI_CHECKED or $mmPixel = 1 Then
$mmString &= $mmcPixel & ' Pixel'
$mmCRLF = @CRLF
EndIf
If $mmPPM = $GUI_CHECKED or $mmPPM = 1 Then
$mmString &= $mmCRLF & Round($mmcPixel / (TimerDiff($mmTimer) / 60000)) & " PPM"
$mmCRLF = @CRLF
EndIf
If $mmCm = $GUI_CHECKED or $mmCm = 1 Then
$mmString &= $mmCRLF & $intCMt
$mmCRLF = @CRLF
EndIf
If $mmCmm = $GUI_CHECKED or $mmCmm = 1 Then
$mmString &= $mmCRLF & Round($intCM / (TimerDiff($mmTimer) / 60000)) & " cm/min"
EndIf
Sleep(1)
Return $mmString
EndFunc ;==>MouseMeter
Func dif($Dif1, $Dif2)
Local $Result
If $Dif1 > $Dif2 Then
$Result = $Dif1 - $Dif2
ElseIf $Dif1 < $Dif2 Then
$Result = $Dif2 - $Dif1
ElseIf $Dif1 = $Dif2 Then
$Result = 0
EndIf
Return $Result
EndFunc ;==>dif