Doppelklick als Event abfragen

  • Hi,


    ich habe nach einer Lösung gesucht auch für Controls, die keine Msg bei Doppelklick abgeben (wie z.B. Inputs) dieses Ereignis direkt auswertbar zu machen.
    Natürlich sollte es allgemeingültig sein und nicht mit anderen Messages kollidieren. Entstanden ist diese UDF: "DoubleClick_Event.au3"


    Nach dem Erstellen eines Controls wird mit der Funktion _GUI_DoubleClick_Register($_hGui, $_cCtrl) dieses Control für den Doppelklick registriert und ein Dummy-Control zurückgegeben, das bei Doppelklick auf das registrierte Control aus der UDF heraus "befeuert" wird und per GuiGetMsg() oder GUICtrlSetOnEvent() abgefragt werden kann.
    Es können Controls auf verschiedenen GUI registriert werden.



  • ich weiß nicht ob es an deinem skript oder meinem pc liegt aber komischerweise hängt sich die gui wenn ich sie mit der maus auf der gui schließe immer für 2-3 sekunden auf. entferne ich die double clck register funktioniert das schließen ohne verzögerung.


    ich benutze winxp 32bit sp3

  • ich habe mal ein timer in die exit funktion eingebaut da dauert es auch nur 26ms



    es ist auch so das ich die maus in den 2-3 sekunden beim schließen nicht bewegen kann. vieleicht liegts an winxp oder so.


    ps: ich mein 0.26ms

  • So, ich habe den "Zeitfresser" entdeckt. Es ist der Return-Hook in der Mouse-Procedure.
    Je nach System dauert dies unterschiedlich lang. Auf meinem Virtual-XP etwa 0,7 bis 0,8 s, auf Win7 nur 0,001 s.
    Bau mal den Timer, wie folgt ein um zu testen:



    ;=======================================================
    Global $TEST_Timer
    ;=======================================================


    Func _MouseProc($nCode, $wParam, $lParam)
    If ($nCode < 0) Or ($nCode <> $HC_ACTION) Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    If $wParam = $WM_LBUTTONUP Then __GUI_DoubleClick_MouseUp()
    ;=======================================================
    $TEST_Timer = TimerInit()
    ;=======================================================
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc


    Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_MouseProc)
    ;=======================================================
    ConsoleWrite(StringFormat("Time to close: %.3fs", TimerDiff($TEST_Timer)/1000) & @LF)
    ;=======================================================
    EndFunc

  • bei mir kommt Time to close: 0.000s raus.
    dauert leider immer noch 3 sekunden bis sich das fenster schließt und ich die maus wieder bewegen kann :(.
    vieleicht liegts an meinem system. trozdem danke