ToolTip soll für 3 Sekunden angezeigt werden...

  • Hallo Leute,
    Ich hoffe es ist alles klar bei euch so weit...

    Ich hab ein Problem und zwar:

    Ist es möglich ein ToolTip für 3 Sekunden anzuzeigen ohne dass das Script pausiert wird?

    Spoiler anzeigen
    [autoit]

    ToolTip("Dies ist eine Anzeige",@DesktopWidth-150,@DesktopHeight-45)
    ; Warte für 3 Sekunden
    ToolTip("")

    [/autoit]

    Weil ich habs mit Sleep probiert und es ist nicht nach meinen vorstellungen abgelaufen....
    Danke im Vorraus.

    MfG
    Fabi

    2 Mal editiert, zuletzt von Fabi (31. Juli 2011 um 13:17)

  • Zum Beispiel so:

    [autoit]


    ToolTip("Dies ist eine Anzeige",@DesktopWidth-150,@DesktopHeight-45)
    $timestamp = TimerInit()
    while 1
    consolewrite(TimerDiff($timestamp) & @CRLF)
    if TimerDiff($timestamp) > 20000 Then ToolTip("")
    Sleep(100)
    WEnd

    [/autoit]


    Der Position deines Tooltips zu Folge suchst du aber glaube ich eher diese Funktion

    [autoit]

    Traytip(...)

    [/autoit]

    Vorteil beim Traytip ist im übrigen auch, dass du eine Anzeigezeit definieren kannst. allerdings wohl nur zwischen 10 und 30 Sekunden.

  • Ne sorry funktioniert leider nicht bei meinem Script...
    Und TrayTip suche ich leider auch nicht..

  • Vllt klappt das ?
    Das benutze ich des öfteren...

    [autoit]

    Func Tip($a, $b = 1500)
    ToolTip($a)
    AdlibRegister('EndTip', $b)
    EndFunc ;==>Tip

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

    Func EndTip()
    ToolTip('')
    AdlibUnRegister('EndTip')
    EndFunc ;==>EndTip

    [/autoit]


    Um den Tooltip zu setzen einfach Tip('Ich bin ein Tooltip', 3000) schreiben.
    Dann müsste er nach ca. 3sek gelöscht werden.

    Edit: :D schneller als name :P

    lg
    Mars(i)

  • Entweder so:

    Spoiler anzeigen
    [autoit]

    #include <Timers.au3>

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

    ToolTip("Test")

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

    $hWnd_AutoIt = WinGetHandle(AutoItWinGetTitle())
    $iTimer_ToolTip = _Timer_SetTimer($hWnd_AutoIt, 3000, "_Kill_ToolTip")

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

    While Sleep(100)
    WEnd

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

    Func _Kill_ToolTip($hWnd, $Msg, $iIDTimer, $dwTime)
    #forceref $hWnd, $Msg, $iIDTimer, $dwTime
    ToolTip("")
    _Timer_KillTimer($hWnd_AutoIt, $iTimer_ToolTip)
    EndFunc

    [/autoit]


    Oder so:

    Spoiler anzeigen
    [autoit]

    ToolTip("Test")

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

    AdlibRegister("_Kill_ToolTip", 3000)

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

    While Sleep(100)
    WEnd

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

    Func _Kill_ToolTip()
    ToolTip("")
    AdlibUnRegister("_Kill_ToolTip")
    EndFunc

    [/autoit]
  • Hier auch von mir noch eine Adlib Variante, die die Positionsangabe berücksichtigt und mit einer Funktion auskommt:

    Spoiler anzeigen
    [autoit]


    Global $timestamp = TimerInit()
    Global $globalTimeout
    Global $myText = -1 ; scheinbar gibts sonst Probleme beim adlib aufruf, obwohl der Standardwert ja eigentlich gesetzt werden müsste...
    Global $myTimeout = 0 ; scheinbar gibts sonst Probleme beim adlib aufruf, obwohl der Standardwert ja eigentlich gesetzt werden müsste...

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

    showtooltip("Dies ist eine Anzeige",5000,@DesktopWidth-150,@DesktopHeight-45)

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

    while 1
    ; hauptschleife
    WEnd

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

    Func showtooltip($myText=-1,$myTimeout=0,$myXcoord=0,$myYcoord=0)
    Local $text = $myText
    Local $timeout = $myTimeout

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

    ConsoleWrite("showtooltip wurde aufgerufen: " & TimerDiff($timestamp) & @CRLF)
    if $text <> -1 then ToolTip($text,$myXcoord,$myYcoord) ; tooltip einblenden
    if $timeout > 0 Then ; wird nur beachtet, wenn die Funktion von hand aufgerufen wird
    $globalTimeout = $timeout
    $timestamp = TimerInit()
    AdlibRegister("showtooltip",100) ; ruft die Funktion zukünftig alle 100ms auf
    EndIf
    if TimerDiff($timestamp) > $globalTimeout-100 Then
    AdlibUnRegister("showtooltip") ; sorgt dafür, dass die Funktion nicht mehr regelmässig aufgerufen wird
    ToolTip("") ; tooltip ausblenden
    EndIf
    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von misterspeed (31. Juli 2011 um 12:20)


  • Ein bisschen umständlich ist das schon oder?
    Hier meine Lösung:

    Spoiler anzeigen
    [autoit]

    $bToolTipSet = False

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

    SetTooltip("lol", 3500)

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

    While Sleep(50)
    WEnd

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

    Func SetTooltip($v_Text = "", $v_Time = 0, $v_X = -1, $v_Y = -1, $v_Title = "", $v_Icon = 0, $v_Options = 0)

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

    If $bToolTipSet = False Then ;set tooltip
    If $v_X = -1 Then $v_X = MouseGetPos(0)
    If $v_Y = -1 Then $v_Y = MouseGetPos(1)

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

    ToolTip($v_Text, $v_X, $v_Y, $v_Title, $v_Icon, $v_Options)
    If $v_Time <> 0 Then
    AdlibRegister("SetTooltip", $v_Time)
    $bToolTipSet = True
    EndIf
    Else ;unset
    ToolTip("")
    AdlibUnRegister("SetTooltip")
    $bToolTipSet = False
    EndIf

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

    EndFunc

    [/autoit]


    Bei $v_Time = 0 bleibt der halt endlos. Bei $v_X = 1-1 und $v_Y = -1 wird der an der Mausposition angezeigt.