Wenn Mausklick dann...

  • Hallo alle zusammen,

    ich hab heute versucht ein einfaches script zu schreiben das sollte einem die Uhrzeit sagen wenn man die Mittlere Maustaste drückt.
    Aber ich schaffe es nur dass es jede sekunde die uhrzeit anzeigt ?(
    Das sieht bis jetzt so aus.

    [autoit]

    $x =1
    $clix = MouseClick("middle")
    While (1)
    If $clix = $x Then
    tool()
    EndIf
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func tool()
    ToolTip (@hour & ":" & @min & ":" & @sec)
    Sleep (1000)
    EndFunc

    [/autoit]


    Wie muss man das verändern das da am ende bei jedem klick mir dem Mausrad die Zeit angezeigt wir?
    geht das überhaup auf das Mausrad zu legen?

    Danke im vorraus

    mfg Fronther

  • linke Maustaste hat übrigens "01".
    Also, ich würde das so machen:

    [autoit]


    #include <Misc.au3>
    While 1
    If _ispressed(01) Then
    Do

    [/autoit][autoit][/autoit][autoit]

    Until Not _ispressed(01)
    funcx()
    EndIf
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func funcx()
    MsgBox(0, "hi", "Func nach dem Mausklick!")
    EndFunc

    [/autoit]
  • Das wöre eine bessere Variante der _IsPressed-Lösung:

    [autoit]

    Func _MiddleMousUp($fReset = 0)
    Local Static $down = False
    If $fReset Then $down = False
    If _IsPressed("04") Then
    $down = True
    ElseIf $down Then
    $down = False
    Return True
    EndIf
    Return False
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    #include <Misc.au3>
    While 1
    If _MiddleMousUp() Then funcx()
    Sleep(10)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func funcx()
    MsgBox(0, "hi", "Func nach dem Mausklick!")
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Edit:
    Diese Variante würde ich bevorzugen (ich mag Hooks ;))

    [autoit]

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    OnAutoItExitRegister('OnAutoItExit')
    HotKeySet('{ESC}', '_Exit')

    [/autoit][autoit][/autoit][autoit]

    Global Const $HC_ACTION = 0
    Global $hStub_MouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam")
    Global $hmod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), $hmod)

    [/autoit][autoit][/autoit][autoit]

    While True
    Sleep(50)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func _MouseProc($nCode, $wParam, $lParam)
    Local $event, $info, $iX, $iY, $mouseData = "", $wheelData = ""
    $info = DllStructCreate("int X;int Y;dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo", $lParam)
    $iX = DllStructGetData($info, 1)
    $iY = DllStructGetData($info, 2)
    $mouseData = DllStructGetData($info, 3)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    If $nCode = $HC_ACTION Then
    Switch $wParam
    Case $WM_MBUTTONDOWN
    _MButton(1)
    Case $WM_MBUTTONUP
    _MButton(0)
    EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _MButton($iDown)
    If $iDown Then
    ToolTip(@HOUR & ':' & @MIN & ':' & @SEC) ; Anzeige Tooltip solange Middle gedrückt
    Else
    ToolTip('')
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _Exit()
    Exit
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_MouseProc)
    EndFunc ;==>OnAutoItExit

    [/autoit]