Maus verfolgender Tooltip/do-until

  • Hallo!
    Es soll während der Zeit des Downloads ein Tooltip den Cursor verfolgen, der nach dem Download natürlich wieder verschwinden soll.
    Meine Versuche wurden nur bei den Funktionen von dem Mtvdownload angewandt.

    [autoit]

    #include <GUIConstants.au3>
    #include<Guilistview.au3>
    #include<array.au3>
    #include<Inet.au3>
    #include<string.au3>
    #include<guibutton.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    $inireader= iniread(@Scriptdir & "\data.ini", "default", "Ausgabeort", @DocumentsCommonDir)

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

    $Multidownloader_1 = GUICreate("Multidownloader", 670, 530, 208, 107)
    $ListView1 = GUICtrlCreateListView("Link|Portal|Ausgabeort|Ausgabename|Format", 5, 50, 655, 313)
    GUICtrlSendMsg(-1, 0x101E, 0, 250)
    GUICtrlSendMsg(-1, 0x101E, 1, 50)
    GUICtrlSendMsg(-1, 0x101E, 2, 150)
    GUICtrlSendMsg(-1, 0x101E, 3, 150)
    GUICtrlSendMsg(-1, 0x101E, 4, 50)
    $Download = GUICtrlCreateGroup("Download hinzufügen", 5, 369, 652, 122)
    $LINK = GUICtrlCreateInput("MTV.video / Youtube-Link hier eingeben", 18, 392, 421, 21)
    $Input1 = GUICtrlCreateInput("Ausgabetitel hier eingeben", 449, 392, 200, 21)
    $Ausgabeort = GUICtrlCreateButton("Ausgabeort ändern", 339, 420, 98, 29, $WS_GROUP)

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

    $Button1 = GUICtrlCreateButton("Download hinzufügen", 8, 458, 641, 28, $WS_GROUP)
    $Radio1 = GUICtrlCreateRadio("Mp3", 466, 428, 75, 20)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $Radio2 = GUICtrlCreateRadio("Mp4", 550, 428, 86, 20)

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

    $Ausgabe = GUICtrlCreateInput("", 18, 424, 313, 21)
    If $inireader= "" then
    guictrlsetdata($ausgabe, @DocumentsCommonDir)
    Else
    guictrlsetdata($ausgabe, $inireader)
    endif
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button2 = GUICtrlCreateButton("Liste downloaden", 10, 496, 638, 25, $WS_GROUP)
    $Pic1 = GUICtrlCreatePic(@Scriptdir & "\multidownloader.jpg", 0, 0, 669, 100)
    $Label2 = GUICtrlCreateLabel("Multidownloader by PM", 3, 3, 326, 36)

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

    GUICtrlSetFont(-1, 20, 400, 0, "Lucida Fax")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    guisetstate(@SW_SHOW)

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

    guictrlsetstate($button2, $gui_disable)
    global $portal= ""
    global $sformat= true
    While 1
    $nMsg = GUIGetMsg()

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

    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $link
    $linkread= guictrlread($link)
    If $linkread= "" Then
    Msgbox(16, "Fehler", "Bitte gib einen Link ein")
    endif
    If StringRegExp($linkread, "^(?:http:\/\/)*www\.mtv\.de\/videos") Then
    $bla=True
    $portal= "mtv"
    EndIf
    If Stringregexp($linkread, "(?i)(?:http\:\/\/)?www\.youtube\.\w+\/watch\?v=[\d\w-_]+(?:\s*$|&feature=\w+\s*$)") then
    $portal= "youtube"
    EndIf

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

    Case $ausgabeort
    $OUtPUTFILE=Fileselectfolder("Ausgabeort", "Eigene Dateien", 1, "" )
    If $outputfile= "" then
    msgbox(16, "Fehler", "Bitte gib einen Speicherort an")
    else
    iniwrite(@Scriptdir & "\data.ini", "default", "Ausgabeort", $outputfile)
    $inireadb= iniread(@Scriptdir & "\data.ini", "default", "Ausgabeort", @DocumentsCommonDir)
    guictrlsetdata($ausgabe, $inireadb)
    endif
    If $outputfile= "arbeitsplatz" Then
    Msgbox(16, "Fehler", "Du kannst keine Datei auf dem Arbeitsplatz speichern")
    guictrlsetdata($ausgabe, @DocumentsCommonDir)
    else
    guictrlsetstate($button1, $gui_enable)
    endif
    case $button1
    $ausgaberead= guictrlread($input1)
    If guictrlread($radio1)= $GUI_checked then
    $formatauswahl= "MP3"
    else
    $formatauswahl= "MP4"
    endif
    If $portal="" then
    Msgbox(0, "Fehler", "Gib einen gültigen Link/ein gültiges Format an!")
    else
    guictrlcreatelistviewitem($linkread & "|" &$portal & "|" & guictrlread($ausgabe) & "|" & $ausgaberead & "|" & $formatauswahl, $listview1)
    guictrlsetstate($button2, $gui_enable)
    GUICtrlSetData($link, "MTV.video / Youtube-Link hier eingeben")
    Guictrlsetdata($input1, "Ausgabetitel hier eingeben")
    guictrlsetstate($button1, $gui_disable)
    endif
    case $button2
    linkchecker()
    EndSwitch
    WEnd
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Funktionen;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Func mtvdownload()
    guisetstate(@SW_hide)
    global $bla=0
    do
    Tooltip("bla")
    mtvdownloadb()
    If $bla=1 then
    Tooltip("")
    Msgbox(0, "Tadaaaaa", "Der Download war erfolgreich")
    guisetstate(@SW_Show, $multidownloader_1)
    guictrlsetstate($button2, $gui_disable)
    guictrlsetstate($button1, $gui_disable)
    EndIf
    until $bla=1

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

    EndFunc

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

    func mtvdownloadb()
    $url1 = "http://de.esperanto.mtvi.com/www/xml/flv/flvgen.jhtml?vid="
    $url2 = "&hiLoPref=hi"
    $aItem = _GUICtrlListView_GetItemTextArray($ListView1, 0)
    $Quelltext = _INetGetSource($aItem[1])
    $sStart = 'var so = new SWFObject("http://media.mtvnservices.com/mgid:uma:video:mtv.de:'
    $sEnde = '",'
    $string = _StringBetween($Quelltext, $sStart, $sEnde)
    If IsArray($string) Then
    $adresse = $url1 & $string[0] & $url2
    $Quelltext2 = _INetGetSource($adresse)
    $string2 = _StringBetween($Quelltext2, '<src>', '</src>')
    $ausgabetitel = $aItem[4]
    $mp3zieladresse = $aItem[3]
    $tempadresse = @ScriptDir & "\video.flv"
    $zieladresse = $mp3zieladresse & "\" & $ausgabetitel & ".mp3"
    $mp4zieladresse= $mp3zieladresse & "\" & $ausgabetitel & ".mp4"
    InetGet($string2[0], $tempadresse, "", 0)
    $ffmpeg = @ScriptDir&"\ffmpeg.exe"
    $sformat= $aitem[5]
    If $sformat= "MP3" then
    RunWait('ffmpeg.exe -i "' & $tempadresse & '"' & ' -ab 320k "' & $zieladresse & '"', "", @SW_HIDE)
    else
    runwait('ffmpeg.exe -i "' & $tempadresse & '"' & ' -ab 320k "' & $mp4zieladresse & '"', "", @SW_hide)
    endif
    GUICtrlSetState($Button2, $gui_disable)
    guictrlsetstate($button1, $gui_disable)
    EndIf
    _GUICtrlListView_DeleteItem($ListView1, 0)
    If _Guictrllistview_getitemcount($listview1)=0 then

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

    $bla=1
    else
    Filedelete($tempadresse)
    linkchecker()
    endif
    endfunc

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

    func linkchecker()
    $bItem= _GUICtrlListView_GetItemTextArray($ListView1, 0)
    If $bitem[2]= "mtv" then
    guisetstate(@SW_disABLE, $Multidownloader_1)
    mtvdownload()
    EndIf
    If $bItem[2]= "youtube" Then
    guisetstate(@SW_disABLE, $Multidownloader_1)
    youtubedownload()
    endif
    endfunc
    func youtubedownload()
    $aItem = _GUICtrlListView_GetItemTextArray($ListView1, 0)
    $ssource= _Inetgetsource($aItem[1])
    Local $a_token = _StringBetween($sSource, '&t=', '&r')
    Local $s_vID = StringTrimLeft($aitem[1], StringInStr($aitem[1], '='))
    If IsArray($a_token) Then $a_token = $a_token[0]
    $sDownloadLink = "http://www.youtube.com/get_video?video_id=" & $s_vID & "&t=" & $a_token & "&asv=&fmt=18"
    $mp3zieladresse = $aItem[3]
    $ausgabetitel = $aItem[4]
    $yzieladresse=$aitem[3]&"\"&$aitem[4]&".mp3"
    $ymp4zieladresse=$aitem[3]&"\"&$aitem[4]&".mp4"
    $tempadresse =@ScriptDir&"\video.flv"
    Inetget($sdownloadlink , $tempadresse, "", 0)
    $ffmpeg = @ScriptDir & "\ffmpeg.exe"
    $sformat= $aitem[5]
    If $sformat= "MP3" then
    RunWait('ffmpeg.exe -i "' & $tempadresse & '"' & ' -ab 320k "' & $yzieladresse & '"', "", @SW_HIDE)
    else
    runwait('ffmpeg.exe -i "' & $tempadresse & '"' & ' -ab 320k "' & $ymp4zieladresse & '"', "", @SW_hide)
    endif
    _GUICtrlListView_DeleteItem($ListView1, 0)
    If _GUICtrlListView_GetItemCount($ListView1) = 0 Then
    msgbox(0, "Tadaaa", "Der Download war erfolgreich")
    guisetstate(@SW_Enable, $multidownloader_1)
    guictrlsetstate($button2, $gui_disable)
    guictrlsetstate($button1, $gui_disable)
    Else
    Filedelete($tempadresse)
    linkchecker()
    endif
    endfunc

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

    Das Problemo ist also in den Zeilen 108-113.
    Also wie muss man die Do-until-schleife ändern, dass die funktion mtvdownloadb ausgeführt wird und ein tooltip den cursor während des downloads verfolgt?

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

  • naja. Wie willst du die Änderung von $i dann vornehmen?
    Die Funktion muss ja erstmal durchgeführt werden. Und das dauert mindestens 1 Minute.
    -> Der Tooltip bewegt sich nicht

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

  • Hallo TwoDollarBillie,

    wenn du im Background downloadest kannst du mit InetGetInfo verschiedende Parameter zum Download auslesen. Hier einmal ein Beispielskript von mir:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <Date.au3>
    #include <array.au3>

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

    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7") ; User-Agent (Header) von AutoIt3 ändern, da beim Webhoster dieser gesperrt ist

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

    Global $tDiff, $iToDo, $iRTime, $sMSG, $nKBPerSec
    $sUrl = "http://translation.autoit.de/autoitinfo/hilfedateien/AutoIt-Hilfe-Deutsch-3.3.6.1-Stand-07_09_10.zip"
    ;url eventell gegen einen anderen größeren Download tauschen, dann aber bitte auch $sPath ändern
    $sPath = @ScriptDir & "\Deutsche Hilfe 3.3.6.1 "
    Global $iSize = InetGetSize($sUrl) ;siehe Hilfe zu InetgetSize
    Global $tStart = TimerInit()
    $hDownLoad = InetGet($sUrl, $sPath, 1, 1) ; <========= die 2. 1 steht für Background
    Dim $aData[3]

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

    Do
    Sleep(250)
    If $aData[0] > 0 Then
    _CalcPerformance($aData[0], $aData[2])
    TrayTip("downloading", $sMSG, 10, 16)
    EndIf
    $aData = InetGetInfo($hDownLoad, -1)
    Until $aData[2]
    $aData = InetGetInfo($hDownLoad, -1)
    _CalcPerformance($aData[0], $aData[2])

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

    InetClose($hDownLoad) ; Handle schließen um die Resourcen freizugeben.
    MsgBox(0, "", "Bytes gelesen: " & $aData[0] & @CRLF & _
    "Größe: " & $aData[1] & @CRLF & _
    "beendet?: " & $aData[2] & @CRLF & _
    "Erfolgreich?: " & $aData[3] & @CRLF & _
    "@error: " & $aData[4] & @CRLF & _
    "@extended: " & $aData[5] & @CRLF & @CRLF & _
    "KiloBytes/sec:" & $nKBPerSec)
    ConsoleWrite("Bytes gelesen: " & $aData[0] & @CRLF & _
    "Größe: " & $aData[1] & @CRLF & _
    "beendet?: " & $aData[2] & @CRLF & _
    "Erfolgreich?: " & $aData[3] & @CRLF & _
    "@error: " & $aData[4] & @CRLF & _
    "@extended: " & $aData[5] & @CRLF & @CRLF & _
    "KiloBytes/sec:" & $nKBPerSec)

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

    Func _CalcPerformance($iRead, $bDone)

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

    $tDiff = TimerDiff($tStart)
    $iToDo = Round(($iSize - $iRead) / 1024, 2)
    $nKBPerSec = Round($iRead / $tDiff * 1000 / 1024, 2)
    $iPercent = Round($iRead / $iSize * 100, 2)
    if ($iSize = 0) And Not $bDone Then
    $iRTime = "unbekannt"
    Else
    $iRTime = Round($iToDo / $nKBPerSec, 0)
    EndIf
    $sMSG = Round($iRead / 1024) & "/" & Round($iSize / 1024, 0) & " KB " & " = " & $iPercent & "%" & @CRLF
    $sMSG &= "durchschnittlich KB/s = " & $nKBPerSec & @CRLF ;& "aktuell: KB/s " & $nKBAct & @CRLF
    If Not $bDone Then
    $sMSG = $sMSG & "vermutlich zu Ende:" & StringLeft(StringRight(_DateAdd('s', $iRTime, _NowCalc()), 8), 5)
    ;ConsoleWrite($sMSG & @CRLF)
    Else
    $sMSG = $sMSG & "benötigte Zeit = " & Round($tDiff / 1000, 0)
    EndIf
    ;if $iSize > 0 Then $sMSG = $sMSG & " sec"
    EndFunc ;==>_CalcPerformance

    [/autoit]

    Das Skript lädt die Deutsche Hilfe herunter, vielleicht blätterst du ja auch mal darin,

    mfg autoBert

  • Wenn man schon nen perfekten Downloader macht, sollte man auch das Dateiformat beachten ;)

    [autoit]

    $sPath = @ScriptDir & "\Deutsche Hilfe 3.3.6.1 "

    [/autoit]

    Hinten beim Pfad fehlt ein .zip. Ansonsten ist es eine 1-Datei^^
    Also bei mir is es mal so^^

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble