1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. xSunLighTx3

Beiträge von xSunLighTx3

  • Steuern eines Youtube Players

    • xSunLighTx3
    • 24. November 2019 um 22:26
    Zitat von alpines

    YouTube bietet eine API für den Player an, die der TE übrigens schon bei einem früheren Thread von mir erwähnt bekommen hatte.

    Sogar, die Features die er haben wollte: Bildschirmausschnitt als bmp zum Drücken

    Die API ist krass, hab mir das eben mal angeschaut. Das ganze könnte man eigentlich auch mit nem ie object im autoit gui automatisieren oder? :)

    IEembedded web browser (ie11) in ein Autoit gui und dann noch n schönes frontend html gui design. Das kann nur geil werden. 8)

  • Steuern eines Youtube Players

    • xSunLighTx3
    • 24. November 2019 um 17:42

    Klar lässt sich sowas mit AutoIt realisieren. :)

    Hab damals mal die Vision gehabt, so einen Player zu programmieren. War allerdings

    ein Vollnoob und hatte 0 Plan von Logik. :D

    Leider funktioniert der HTML Parser nicht mehr für das neue Youtube. Da müsste man noch etwas anpassen.

    C
    #RequireAdmin
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <INet.au3>
    #include <IE.au3>
    #include <GuiTab.au3>
    #include <GuiListView.au3>
    #include <ProgressConstants.au3>
    #include <String.au3>
    #include <ComboConstants.au3>
    
    #include <GuiTreeView.au3>
    
    $settingsINI = "Data\settings.ini"
    $save_settingsINI = 1
    ;~ $song_settingsINI = Default
    $url_settingsINI = Default
    $data_num = 1
    $IE_Embedded = _IECreateEmbedded()
    $main_gui_title = "Online Soundsystem - Manager 1.0"
    $start_timer = -1
    $time_passed = 0
    $song_delay = "-"
    $songlength_mode1_source = "-"
    $songtitle_mode1_label = "-"
    $song_stopped = False
    $time_update = 0
    $check_up = True
    
    #Region ### START Koda GUI section ### Form=
    $main_gui = GUICreate($main_gui_title, 606, 350, -1, -1)
    $title_label = GUICtrlCreateLabel("Online Soundsystem", 245, 16, 200, 17)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    
    $tabsheet_1 = GUICtrlCreateTab(5 , 40, 597, 307)
    ; - tabitem "Startseite" -
    $tabitem_1 = GUICtrlCreateTabitem("Startseite")
    _GUICtrlTab_SetBkColor($main_gui, $tabsheet_1, 0xE6E6E6)
    
    ; - tabitem "Song suchen" -
    $tabitem_2 = GUICtrlCreateTabitem("Song suchen")
    _GUICtrlTab_SetBkColor($main_gui, $tabsheet_1, 0xE6E6E6)
    $browser_background = GUICtrlCreateObj($IE_Embedded, 10, 90, 584, 250)
    GUICtrlSetState($browser_background, $GUI_HIDE)
    $browser_input = GUICtrlCreateInput("Geben Sie hier den Songnamen ein, den Sie suchen möchten.", 9, 66, 373, 20)
    $browser_search_button = GUICtrlCreateButton("Song suchen", 385, 66, 88, 20)
    $browser_save_button = GUICtrlCreateButton("Song speichern", 477, 66, 88, 20)
    $browser_stop_button = GUICtrlCreateButton("X", 569, 66, 25, 20)
    $browser_load_label = GUICtrlCreateLabel("wird geladen" , 10, 90, 100, 20)
    GUICtrlSetColor($browser_load_label, 0xFF0000)
    GUICtrlSetState($browser_load_label, $GUI_HIDE)
    ; - tabitem "Song speichern" -
    $tabitem_3 = GUICtrlCreateTabitem("Song speichern")
    _GUICtrlTab_SetBkColor($main_gui, $tabsheet_1, 0xE6E6E6)
    $songdata_group = GUICtrlCreateGroup("Song speichern", 165, 80, 300, 124)
    $songname_label = GUICtrlCreateLabel("URL - Link  :", 175, 106, 100, 17)
    $songurl_input = GUICtrlCreateInput("Youtube - Link des Songs", 240, 106, 210, 17, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
    $songname_label = GUICtrlCreateLabel("Songname  :", 175, 125, 100, 17)
    $songtitle_input = GUICtrlCreateInput("Songname", 240, 125, 210, 17, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
    $songtime_label = GUICtrlCreateLabel("Dauer         :", 175, 144, 100, 17)
    $songlength_input = GUICtrlCreateInput("Songlänge", 240, 144, 210, 17, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER, $ES_NUMBER))
    $songload_button = GUICtrlCreateButton("Song laden", 240, 169, 102, 25)
    $songsave_button = GUICtrlCreateButton(" Song speichern", 348, 169, 102, 25)
    GUICtrlSetState($songsave_button, $GUI_DISABLE)
    GUICtrlSetState($songtitle_input, $GUI_DISABLE)
    GUICtrlSetState($songlength_input, $GUI_DISABLE)
    $songdelete_button = GUICtrlCreateButton("makierten Song löschen", 10, 215, 125, 25)
    ; create data in song_list
    ;~ $songlist = GUICtrlCreateListView("Songname                           | URL                           ", 10, 240, 585, 102)
    $songlist = GUICtrlCreateListView("Songname                           ", 10, 240, 585, 102)
    While 1
        If IniRead($settingsINI, "save_" & $save_settingsINI, "active", "") = "true" Then
            $songlist_item = GUICtrlCreateListViewItem("", $songlist)
            $song_settingsINI = IniRead($settingsINI, "save_" & $save_settingsINI, "song", "")
    ;~         $url_settingsINI = IniRead($settingsINI, "save_" & $save_settingsINI, "url", "")
            GUICtrlSetData($songlist_item, $song_settingsINI) ; Song
    ;~         GUICtrlSetData($songlist_item, "|" & $url_settingsINI)  ; URL
            $save_settingsINI += 1
        ElseIf IniRead($settingsINI, "save_" & $save_settingsINI, "active", "") = "false" Then
            $save_settingsINI += 1
        Else
            ExitLoop
        EndIf
    WEnd
    
    ; - tabitem "Song abspielen" -
    $tabitem_4 = GUICtrlCreateTabitem("Song abspielen")
    _GUICtrlTab_SetBkColor($main_gui, $tabsheet_1, 0xE6E6E6)
    $select_mode_group = GUICtrlCreateGroup("Modus auswählen", 240, 70, 130, 110)
    $mode_combo = GUICtrlCreateCombo("- Abspielmodus -", 250, 95, 110, 17, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
    GUICtrlSetData($mode_combo, "Song per Link|Song aus Liste|Song aus Ordner")
    $mode_load_button = GUICtrlCreateButton("Modus laden", 250, 120, 110, 25)
    $mode_group = GUICtrlCreateGroup("Musik abspielen", 10, 180, 585, 160)
    
    ; Mode 1+2
    $songname_mode_label = GUICtrlCreateLabel("Songtitel: " & $songtitle_mode1_label, 100, 267, 393, 25)
    $song_mode_progress = GUICtrlCreateProgress(100, 282, 393, 25)
    $progress_mode_time_label = GUICtrlCreateLabel("verbl. Zeit: 0 Sek.", 250, 315, 125, 25)
    $progress_mode_endtime_label = GUICtrlCreateLabel("Dauer: 0 Sek.", 385, 315, 150, 25)
    $start_music_mode_button = GUICtrlCreateButton("Musik starten", 100, 310, 100, 25)
    GUICtrlSetState($songname_mode_label, $GUI_HIDE)
    GUICtrlSetState($song_mode_progress, $GUI_HIDE)
    GUICtrlSetState($progress_mode_time_label, $GUI_HIDE)
    GUICtrlSetState($progress_mode_endtime_label, $GUI_HIDE)
    GUICtrlSetState($start_music_mode_button, $GUI_HIDE)
    ; Mode_1
    $info_label = GUICtrlCreateLabel("Geben Sie die URL des Songs ein:", 220, 200, 200, 17)
    $songtitle_mode1_input = GUICtrlCreateInput("www.youtube-song.com", 100, 220, 393, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
    GUICtrlSetState($info_label, $GUI_HIDE)
    GUICtrlSetState($songtitle_mode1_input, $GUI_HIDE)
    ; Mode_2
    $songlist_mode2 = GUICtrlCreateListView("Songname                           ", 17, 200, 571, 65)
    GUICtrlSetState($songlist_mode2, $GUI_HIDE)
    $save_settings_mode2INI = 1
    While 1
        If IniRead($settingsINI, "save_" & $save_settings_mode2INI, "active", "") = "true" Then
            $songlist_item_mode2 = GUICtrlCreateListViewItem("", $songlist_mode2)
            $song_settingsINI = IniRead($settingsINI, "save_" & $save_settings_mode2INI, "song", "")
            GUICtrlSetData($songlist_item_mode2, $song_settingsINI) ; Song
            $save_settings_mode2INI += 1
        ElseIf IniRead($settingsINI, "save_" & $save_settings_mode2INI, "active", "") = "false" Then
            $save_settings_mode2INI += 1
        Else
            ExitLoop
        EndIf
    WEnd
    
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
            ; - sheet_2
            Case $songload_button
                If StringMid(GUICtrlRead($songurl_input), 1, 32) = "https://www.youtube.com/watch?v=" Then
                    $songurl_read_input = GUICtrlRead($songurl_input)
                    $songurl_source = _INetGetSource($songurl_read_input)
                    $songtitle_source = _stringbetween($songurl_source, '<title>', ' - YouTube')
                    $songlength_source = _stringbetween($songurl_source, '"length_seconds":"', '"')
                    If @error Then
                        MsgBox(16+4096, "Zugriff von Youtube verweigert", "Das Lied wird in deinem Land nicht zur Verfügung gestellt.")
                    Else
                        $songtitle_source = $songtitle_source[0]   ; Songname
                        $songlength_source = $songlength_source[0] ; Songlength
                        $songtitle_source = StringReplace($songtitle_source, "amp;", "") ; Sonderzeichen Filter
                        $songtitle_source = StringReplace($songtitle_source, "&", "+")   ; Sonderzeichen Filter
                        GUICtrlSetData($songtitle_input, $songtitle_source)
                        GUICtrlSetData($songlength_input, $songlength_source & " Sekunden")
                        GUICtrlSetState($songsave_button, $GUI_ENABLE)
                        GUICtrlSetState($songtitle_input, $GUI_ENABLE)
                        GUICtrlSetState($songlength_input, $GUI_ENABLE)
                    EndIf
                Else
                    MsgBox(16+4096, "ungültige URL", "Ihr Link stimmt nicht mit einem Song aus Youtube überein.")
                EndIf
            Case $songsave_button
                ; - check input -
                $songtitle_input_read = GUICtrlRead($songtitle_input)
                If StringRegExp($songtitle_input_read, "[|,&,',–]") Then ; Sonderzeichen Überprüfer
                    $check_up = False
                    MsgBox(16+4096, "ungültiger Wert", "Folgende Sonderzeichen sind nicht gestattet:" & @CRLF & "Sonderzeichen: |, &, ',–")
                Else
                ; - search for free slot -
                    $check_save_settingsINI = 1
                    While 1
                        If Not IniRead($settingsINI, "save_" & $check_save_settingsINI, "active", "") = "true" Or Not IniRead($settingsINI, "save_" & $check_save_settingsINI, "active", "") = "false" Then
                            $read_songname = IniRead($settingsINI, "save_" & $check_save_settingsINI-1, "song", "")
                            ExitLoop
                        ElseIf IniRead($settingsINI, "save_" & $check_save_settingsINI, "active", "") = "false" Then
                            $read_songname = IniRead($settingsINI, "save_" & $check_save_settingsINI-1, "song", "")
                            ExitLoop
                        Else
                            $check_save_settingsINI += 1
                        EndIf
                    WEnd
                    If Not $check_up = False Then
                        GUICtrlSetState($songsave_button, $GUI_DISABLE)
                        GUICtrlSetState($songtitle_input, $GUI_DISABLE)
                        GUICtrlSetState($songlength_input, $GUI_DISABLE)
                        IniWrite($settingsINI, "save_" & $check_save_settingsINI, "active", "true")
                        IniWrite($settingsINI, "save_" & $check_save_settingsINI, "URL", GUICtrlRead($songurl_input))
                        IniWrite($settingsINI, "save_" & $check_save_settingsINI, "song", $songtitle_source)
                        IniWrite($settingsINI, "save_" & $check_save_settingsINI, "time", $songlength_source)
                        $songlist_item = GUICtrlCreateListViewItem("", $songlist)
                        GUICtrlSetData($songlist_item, $songtitle_source) ; Songname
                        GUICtrlSetData($songtitle_input, "Songname")
                        GUICtrlSetData($songurl_input, "Youtube - Link des Songs")
                        GUICtrlSetData($songlength_input, "Songlänge")
                        ; Mode_2
                        $songlist_item_mode2 = GUICtrlCreateListViewItem("", $songlist_mode2)
                        GUICtrlSetData($songlist_item_mode2, $songtitle_source) ; Songname
                        GUICtrlSetData($songtitle_input, "Songname")
                        GUICtrlSetData($songurl_input, "Youtube - Link des Songs")
                        GUICtrlSetData($songlength_input, "Songlänge")
                        ; general
                        $save_settingsINI += 1
                    EndIf
                EndIf
                $check_up = True
            Case $songdelete_button
                $songname_read = GUICtrlRead(GUICtrlRead($songlist))
                $songname_read = StringTrimRight($songname_read, 1)
                If Not $songname_read = "" Then
                    $songdelete_msg = MsgBox(4096+4+32, "makierten Song löschen", "Möchten Sie wirklich den folgenden Song löschen?" & @CRLF & "'" & $songname_read & "'")
                    If $songdelete_msg = 6 Then
                        $saves_settingsINI = 1
                        While 1
                            If IniRead($settingsINI, "save_" & $saves_settingsINI, "song","") = $songname_read Then
                                IniWrite($settingsINI, "save_" & $saves_settingsINI, "active", "false")
                                ExitLoop
                            Else
                                $saves_settingsINI += 1
                            EndIf
                        WEnd
                        _GUICtrlListView_DeleteItemsSelected($songlist)
                        ; Mode_2
                         #include <GuiListView.au3>
                        _GUICtrlListView_DeleteAllItems ($songlist_mode2)
                        $save_settings_mode2INI = 1
                        While 1
                            If IniRead($settingsINI, "save_" & $save_settings_mode2INI, "active", "") = "true" Then
                                $songlist_item_mode2 = GUICtrlCreateListViewItem("", $songlist_mode2)
                                $song_settingsINI = IniRead($settingsINI, "save_" & $save_settings_mode2INI, "song", "")
                                GUICtrlSetData($songlist_item_mode2, $song_settingsINI) ; Song
                                $save_settings_mode2INI += 1
                            ElseIf IniRead($settingsINI, "save_" & $save_settings_mode2INI, "active", "") = "false" Then
                                $save_settings_mode2INI += 1
                            Else
                                ExitLoop
                            EndIf
                        WEnd
    
                        ; general
                        $save_settings_mode2INI -= 1
                    EndIf
                Else
                    MsgBox(16+4096, "makierten Song löschen", "Es wurde kein Song aus der Liste makiert.")
                EndIf
            Case $browser_search_button
                $browser_input_read = GUICtrlRead($browser_input)
                If StringRegExp($browser_input_read, "[|,&,',–]") Then ; Sonderzeichen Überprüfer
                    MsgBox(16+4096, "ungültiger Wert", "Folgende Sonderzeichen sind nicht gestattet:" & @CRLF & "Sonderzeichen: |, &, ', –")
                Else
                    GUICtrlSetState($browser_background, $GUI_HIDE)
                    GUICtrlSetState($browser_load_label, $GUI_SHOW)
                    _IENavigate($IE_Embedded,"https://www.youtube.com/results?search_query=" & $browser_input_read, 1)
                    GUICtrlSetState($browser_load_label, $GUI_HIDE)
                    GUICtrlSetState($browser_background, $GUI_SHOW)
                    For $i = 0 To 5
                        controlSend($main_gui_title, "", "", "{LEFT}")
                    Next
                EndIf
                $check_up = True
            Case $browser_save_button
                $browser_read_url = _IEPropertyGet($IE_Embedded,"locationurl")
                $url_filter = StringMid($browser_read_url,1,32)
                If $url_filter = "https://www.youtube.com/watch?v=" Then
                    $songurl_source = _INetGetSource($browser_read_url)
                    $songtitle_source = _stringbetween($songurl_source, '<title>', ' - YouTube')
                    $songlength_source = _stringbetween($songurl_source, '"length_seconds":"', '"')
                    If @error Then
                        MsgBox(16+4096, "Zugriff von Youtube verweigert", "Das Lied wird in deinem Land nicht zur Verfügung gestellt.")
                    Else
                        $songtitle_source = $songtitle_source[0]   ; Songname
                        $songlength_source = $songlength_source[0] ; Songlength
                        $songtitle_source = StringReplace($songtitle_source, "amp;", "") ; Sonderzeichen Filter
                        $songtitle_source = StringReplace($songtitle_source, "&", "+")   ; Sonderzeichen Filter
                        GUICtrlSetData($songurl_input, $browser_read_url)
                        GUICtrlSetData($songtitle_input, $songtitle_source)
                        GUICtrlSetData($songlength_input, $songlength_source & " Sekunden")
                        GUICtrlSetState($songtitle_input, $GUI_ENABLE)
                        GUICtrlSetState($songlength_input, $GUI_ENABLE)
                        GUICtrlSetState($songsave_button, $GUI_ENABLE)
                        MsgBox(4096+64, "Songdaten eingetragen", "Die Songdaten wurden erfolgreich eingetragen." & @CRLF & "Um den Song zu speichern, gehen Sie bitte unter 'Song speichern'.")
                    EndIf
                Else
                    MsgBox(16+4096, "Vorgang fehlgeschlagen", "Bitte suchen Sie zuerst ein Song.")
                EndIf
            Case $browser_stop_button
                GUICtrlSetState($browser_background, $GUI_HIDE)
                _IENavigate($IE_Embedded, "www.google.de")
            Case $start_music_mode_button
                If GUICtrlRead($start_music_mode_button) = "Musik starten" and GUICtrlRead($mode_combo) = "Song per Link" Then
                    ; song starten - mode_1
                    GUICtrlSetState($start_music_mode_button, $GUI_DISABLE)
                    GUICtrlSetData($start_music_mode_button, "wird geladen")
                    $read_songname_mode1 = GUICtrlRead($songtitle_mode1_input)
                    $url_filter = StringMid($read_songname_mode1,1,32)
                    If $url_filter = "https://www.youtube.com/watch?v=" Then
                        $songurl_mode1_source = _INetGetSource($read_songname_mode1)
                        $songtitle_mode1_source = _stringbetween($songurl_mode1_source, '<title>', ' - YouTube')
                        $songlength_mode1_source = _stringbetween($songurl_mode1_source, '"length_seconds":"', '"')
                        If @error Then
                            MsgBox(16+4096, "Zugriff von Youtube verweigert", "Das Lied wird in deinem Land nicht zur Verfügung gestellt.")
                            GUICtrlSetData($start_music_mode_button, "Musik starten")
                            GUICtrlSetState($start_music_mode_button, $GUI_ENABLE)
                        Else
                            $songtitle_mode1_source = $songtitle_mode1_source[0]   ; Songname
                            $songlength_mode1_source = $songlength_mode1_source[0] ; Songlength
                            $songtitle_mode1_source = StringReplace($songtitle_mode1_source, "amp;", "") ; Sonderzeichen Filter
                            $songtitle_mode1_source = StringReplace($songtitle_mode1_source, "&", "+")   ; Sonderzeichen Filter
                            GUICtrlSetData($songname_mode_label, "Songtitel: " & $songtitle_mode1_source)
                            GUICtrlSetData($progress_mode_endtime_label, "Dauer: " & $songlength_mode1_source & " Sek.")
                            $songlength_mode1 = $songlength_mode1_source*1000
                            _IENavigate($IE_Embedded, $read_songname_mode1, 1)
                            _IENavigate($IE_Embedded, $read_songname_mode1, 1) ; 2x navigate um Werbung zu umgehen
                            $start_timer = TimerInit()
                            GUICtrlSetData($start_music_mode_button, "Musik stoppen")
                            GUICtrlSetState($start_music_mode_button, $GUI_ENABLE)
                            GUICtrlSetState($mode_load_button, $GUI_DISABLE)
                        EndIf
                    Else
                        GUICtrlSetData($start_music_mode_button, "Musik starten")
                        GUICtrlSetState($start_music_mode_button, $GUI_ENABLE)
                        MsgBox(16+4096, "Vorgang fehlgeschlagen", "Bitte geben Sie zuerst die gewünschte URL ein.")
                    EndIf
                ElseIf GUICtrlRead($start_music_mode_button) = "Musik starten" and GUICtrlRead($mode_combo) = "Song aus Liste" Then
                    ; song starten - mode_2
                    $songlist_mode2_select = GUICtrlRead(GUICtrlRead($songlist_mode2))
                    $songlist_mode2_select = StringTrimRight($songlist_mode2_select, 1)
                    If Not $songlist_mode2_select = "" Then
                        GUICtrlSetState($mode_load_button, $GUI_DISABLE)
                        GUICtrlSetState($start_music_mode_button, $GUI_DISABLE)
                        GUICtrlSetData($start_music_mode_button, "wird geladen")
                        $save_settings_mode2INI = 1
                        While 1
                            If IniRead($settingsINI, "save_" & $save_settings_mode2INI, "active", "") = "true" And IniRead($settingsINI, "save_" & $save_settings_mode2INI, "song", "") = $songlist_mode2_select Then
                                $read_songname_mode2 = IniRead($settingsINI, "save_" & $save_settings_mode2INI, "URL", "")
                                ExitLoop
                            Else
                                $save_settings_mode2INI += 1
                            EndIf
                        WEnd
                        $songurl_mode2_source = _INetGetSource($read_songname_mode2)
                        $songtitle_mode2_source = _stringbetween($songurl_mode2_source, '<title>', ' - YouTube')
                        $songlength_mode2_source = _stringbetween($songurl_mode2_source, '"length_seconds":"', '"')
                        If @error Then
                            MsgBox(16+4096, "Zugriff von Youtube verweigert", "Das Lied wird in deinem Land nicht zur Verfügung gestellt.")
                        Else
                            $songlength_mode2_source = $songlength_mode2_source[0] ; Songlength
                            GUICtrlSetData($songname_mode_label, "Songtitel: " & $songlist_mode2_select)
                            GUICtrlSetData($progress_mode_endtime_label, "Dauer: " & $songlength_mode2_source & " Sek.")
                            $songlength_mode1 = $songlength_mode2_source*1000
                            _IENavigate($IE_Embedded, $read_songname_mode2, 1)
                            _IENavigate($IE_Embedded, $read_songname_mode2, 1) ; 2x navigate um Werbung zu umgehen
                            $start_timer = TimerInit()
                            GUICtrlSetData($start_music_mode_button, "Musik stoppen")
                            GUICtrlSetState($start_music_mode_button, $GUI_ENABLE)
                        EndIf
                    Else
                        MsgBox(4096+16, "keinen Song ausgewählt", "Bitte wählen Sie zuerst einen Song aus der Liste aus.")
                    EndIf
                Else
                    _IENavigate($IE_Embedded, "www.google.de", 1)
                    $song_delay = "-"
                    $songlength_mode1_source = "-"
                    $songtitle_mode1_label = "-"
                    $song_stopped = True
                    GUICtrlSetData($start_music_mode_button, "Musik starten")
                    GUICtrlSetState($mode_load_button, $GUI_ENABLE)
                EndIf
            ; - sheet_4
        Case $mode_load_button
            If GUICtrlRead($mode_combo) = "Song per Link" Then
                GUICtrlSetState($songlist_mode2, $GUI_HIDE)
    
                GUICtrlSetState($info_label, $GUI_SHOW)
                GUICtrlSetState($songtitle_mode1_input, $GUI_SHOW)
                GUICtrlSetState($songname_mode_label, $GUI_SHOW)
                GUICtrlSetState($song_mode_progress, $GUI_SHOW)
                GUICtrlSetState($progress_mode_time_label, $GUI_SHOW)
                GUICtrlSetState($progress_mode_endtime_label, $GUI_SHOW)
                GUICtrlSetState($start_music_mode_button, $GUI_SHOW)
            ElseIf GUICtrlRead($mode_combo) = "Song aus Liste" Then
                GUICtrlSetState($info_label, $GUI_HIDE)
                GUICtrlSetState($songtitle_mode1_input, $GUI_HIDE)
    
                GUICtrlSetState($songname_mode_label, $GUI_SHOW)
                GUICtrlSetState($song_mode_progress, $GUI_SHOW)
                GUICtrlSetState($progress_mode_time_label, $GUI_SHOW)
                GUICtrlSetState($progress_mode_endtime_label, $GUI_SHOW)
                GUICtrlSetState($start_music_mode_button, $GUI_SHOW)
                GUICtrlSetState($songlist_mode2, $GUI_SHOW)
            ElseIf GUICtrlRead($mode_combo) = "Song aus Ordner" Then
                GUICtrlSetState($info_label, $GUI_HIDE)
                GUICtrlSetState($songtitle_mode1_input, $GUI_HIDE)
                GUICtrlSetState($songlist_mode2, $GUI_HIDE)
    
                GUICtrlSetState($songname_mode_label, $GUI_SHOW)
                GUICtrlSetState($song_mode_progress, $GUI_SHOW)
                GUICtrlSetState($progress_mode_time_label, $GUI_SHOW)
                GUICtrlSetState($progress_mode_endtime_label, $GUI_SHOW)
                GUICtrlSetState($start_music_mode_button, $GUI_SHOW)
            Else
                MsgBox(16+4096, "laden fehlgeschlagen", "Bitte wählen Sie zuerst einen Abspielmodus aus.")
            EndIf
        EndSwitch
        ; - Music Progressbar/timer -
        If $start_timer <> -1 Then
            $time_passed = TimerDiff($start_timer)
            If($time_passed > $songlength_mode1) Or $song_stopped = True Then
                GUICtrlSetState($start_music_mode_button, $GUI_DISABLE)
                GUICtrlSetData($start_music_mode_button, "Musik stoppen")
                _IENavigate($IE_Embedded, "www.google.de", 1)
                $song_stopped = False
                $start_timer = -1
                $time_passed = $songlength_mode1
                $song_delay = "-"
                $songlength_mode1_source = "-"
                $songtitle_mode1_label = ""
                GUICtrlSetData($start_music_mode_button, "Musik starten")
                GUICtrlSetState($start_music_mode_button, $GUI_ENABLE)
                GUICtrlSetState($mode_load_button, $GUI_ENABLE)
            EndIf
            Local $progress = $time_passed / $songlength_mode1 * 100
            Local $time_left = ($songlength_mode1 - $time_passed) / 1000
            GUICtrlSetData($song_mode_progress, $progress)
            $time_left = Int($time_left)
            $time_update += 1
            If $time_update = 5 Then
                $time_update = 0
                GUICtrlSetData($progress_mode_time_label, "verbl. Zeit: " & $time_left & " Sek.")
            EndIf
        EndIf
        Sleep(50)
    WEnd
    
    
    Func _GUICtrlTab_SetBkColor($hWnd, $hSysTab32, $sBkColor) ;tabsheet color
        Local $aTabPos = ControlGetPos($hWnd, "", $hSysTab32)
        Local $aTab_Rect = _GUICtrlTab_GetItemRect($hSysTab32, -1)
        GUICtrlCreateLabel("", $aTabPos[0]+2, $aTabPos[1]+$aTab_Rect[3]+4, $aTabPos[2]-6, $aTabPos[3]-$aTab_Rect[3]-7)
        GUICtrlSetBkColor(-1, $sBkColor)
        GUICtrlSetState(-1, $GUI_DISABLE)
    EndFunc
    Alles anzeigen
  • ISN AutoIt Studio

    • xSunLighTx3
    • 6. November 2019 um 18:22

    Wird getestet!

    Auf jeden Fall geil, dass du noch aktiv am updaten bist. ;)

    Die Signatur funktioniert wunderbar. :P

  • Wie hol ich ein verschwundenes Fenster zurück?

    • xSunLighTx3
    • 21. September 2019 um 19:21

    Also bei mir passiert das selbe Wunder. Habe dann mal ne Funktion eingebunden, die checken soll, ob das Fenster auf dem Screen ist.

    Und tatsächlich wird das Fenster als "Partially viewable" deklariert. Also im Endeffekt ist das Fenster noch da und funktioniert auch (es fährt sich aus und der Status ändert sich),

    aber man kann es einfach nicht mehr sehen, ehe man wieder diesen Windows minimize/restore Button klickt. :(

    Das einzige was mir jetzt einfällt, wäre das Fenster auf "on top" zu setzen, aber ich glaube das hast du nicht vor.


    Andernfalls hätte ich da noch eine Bauernmethode: :D

    C
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <AutoItConstants.au3>
    #include <Misc.au3>
    Opt("TrayMenuMode", 1)
    Global $mPosX = @DesktopWidth-120
    Global $mPosYmin = @DesktopHeight/2-110
    Global $mPosYmax = @DesktopHeight/2+190
    Global $mState = 1
    Global $abort = 0
    Global $clickElapsedTimer = TimerInit()
    Global $clickElapsed = False
    $Form1 = GUICreate("", 120, 300, @DesktopWidth-20, @DesktopHeight/2-110, $WS_POPUP, $WS_EX_TOOLWINDOW)
    GUISetFont(10, 800, 0, "Arial Black")
    GUISetBkColor (0x524d49)
    $Button1 = GUICtrlCreateButton("AUSCHALTEN", 0, 0, 120, 75, $WS_BORDER)
    GUICtrlSetState (-1, 32)
    GUICtrlSetBkColor (-1, 0x9c938b)
    $Button2 = GUICtrlCreateButton("NEUSTARTEN", 0, 75, 120, 75, $WS_BORDER)
    GUICtrlSetState (-1, 32)
    GUICtrlSetBkColor (-1, 0x9c938b)
    $Button3 = GUICtrlCreateButton("ABMELDEN", 0, 150, 120, 75, $WS_BORDER)
    GUICtrlSetState (-1, 32)
    GUICtrlSetBkColor (-1, 0x9c938b)
    $Button4 = GUICtrlCreateButton("ABDUNKELN", 0, 225, 120, 75, $WS_BORDER)
    GUICtrlSetState (-1, 32)
    GUICtrlSetBkColor (-1, 0x9c938b)
    $Tray1 = TrayCreateItem ("EXIT")
    GUISetState(@SW_SHOW)
    While 1
        $nMsg = GUIGetMsg()
        $nTray = TrayGetMsg()
        Switch $nMsg
            Case $Button1
                _Shutdown (5, $Button1)
            Case $Button2
                _Shutdown (6, $Button2)
            Case $Button3
                _Shutdown (4, $Button3)
            Case $Button4
                _GetBlack ()
        EndSwitch
        Switch $nTray
            Case $Tray1
                Exit
        EndSwitch
        _CheckMousePos ()
    
    
        ; CHECK_WIN_MINIMIZED
        If _IsPressed(01) Then
            $clickElapsed = True
            $clickElapsedTimer = TimerInit()
        EndIf
    
        If $clickElapsed = True And TimerDiff($clickElapsedTimer) > 500 Then
    
            $clickElapsed = False
    
            Local $sText = WinGetTitle("[ACTIVE]")
            If $sText = "" Then
                WinSetOnTop($Form1, "", $WINDOWS_ONTOP)
                WinSetOnTop($Form1, "", $WINDOWS_NOONTOP)
            EndIf
    
        EndIf
        ; END_OF_CHECK_WIN_MINIMIZED
    
    WEnd
    Func _CheckMousePos  ()
        If MouseGetPos(0) >= $mPosX AND MouseGetPos(1) >= $mPosYmin AND MouseGetPos(1) <= $mPosYmax Then
            If $mState = 0 Then
                WinMove ($Form1, "", @DesktopWidth-120, @DesktopHeight/2-110)
                GUISetBkColor (0x736C66)
                GUICtrlSetState ($Button1, 16)
                GUICtrlSetState ($Button2, 16)
                GUICtrlSetState ($Button3, 16)
                GUICtrlSetState ($Button4, 16)
                $mState = 1
            EndIf
        Else
            If $mState = 1 Then
                WinMove ($Form1, "", @DesktopWidth-20, @DesktopHeight/2-110)
                GUISetBkColor (0x524d49)
                GUICtrlSetState ($Button1, 32)
                GUICtrlSetState ($Button2, 32)
                GUICtrlSetState ($Button3, 32)
                GUICtrlSetState ($Button4, 32)
                $mState = 0
            EndIf
        EndIf
    EndFunc
    Func _Shutdown ($para1, $para2)
        GUICtrlSetBkColor ($para2, 0xcc3600)
        HotKeySet ("{ESC}", "_abort")
        For $i = 1 To 5 Step 1
            If $abort = 1 Then ExitLoop
            Beep (500, 250)
            Sleep (750)
            If $i = 5 Then
                HotKeySet ("{ESC}")
                Beep (500, 1000)
                Shutdown ($para1)
            EndIf
        Next
        $abort = 0
        GUICtrlSetBkColor ($para2, 0x9c938b)
    EndFunc
    Func _abort ()
        $abort = 1
        Beep (750, 100)
        Sleep (100)
        Beep (750, 100)
        Sleep (100)
        Beep (750, 100)
        HotKeySet ("{ESC}")
    EndFunc
    Func _GetBlack ()
        $BlackWin = GUICreate ("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW)
        GUISetBkColor (0)
        GUICtrlCreateLabel ("<<< Bildschirm abgedunkelt >>>" & @CRLF & "ESC zum beenden", @DesktopWidth/2-250, 100, 500, 100, $SS_CENTER)
        GUICtrlSetFont(-1, 10, 800, 0, "Arial Black")
        GUICtrlSetColor (-1, 0xFFFFFF)
        GUISetState (@SW_SHOW)
        HotKeySet ("{ESC}", "_abort")
        While 1
            If $abort = 1 Then
                $abort = 0
                GUIDelete ($BlackWin)
                ExitLoop
            EndIf
        WEnd
    EndFunc
    Alles anzeigen
  • Targa (TGA) Bild Dateien per GDI+ laden v0.85 build 2019-11-08 beta

    • xSunLighTx3
    • 20. September 2019 um 21:46

    Wow, das neue Skriopt ist ja deutlich schneller als das alte. =O

    Bisher funktioniert alles wunderbar!

  • GDIPlus - Targa Datei transparent zeichnen lassen?

    • xSunLighTx3
    • 20. September 2019 um 21:33
    Zitat von UEZ

    Ich bastele gerade noch an einer Version, die auch 8-bit und 16-bit darstellen kann. Leider ist AutoIt zu langsam für größere Bilder.

    8-Bit funktioniert jetzt, 16-bit noch nicht...

    funkey hatte auch mal dies bezgl. was gebastelt -> Use tga pictures in AutoIt only

    funkey kannst ja mal be Gelegenheit den Link zum Anhang fixen. :)

    Ihr seid echt genial. :thumbup:

    Große Bilder kann man wirklich so gut wie vergessen, aber für kleine Piktogramme reicht die Geschwindigkeit zum Glück noch aus. 8o

  • GDIPlus - Targa Datei transparent zeichnen lassen?

    • xSunLighTx3
    • 19. September 2019 um 23:26

    Hey UEZ,

    herzlichsten Dank für deine Mühe und Umsetzung! :love:

    Das Skript funktioniert wunderbar.

    Echt geil, dass du noch aktiv bist.

  • Send("{BROWSER_HOME}") funktioniert nicht mehr.

    • xSunLighTx3
    • 17. September 2019 um 19:40

    Hab verschiedene Browser getestet:

    Funktioniert mit:
    - Firefox

    - Chrome

    - IE

    Funktioniert nicht mit:

    - Edge

  • GDIPlus - Targa Datei transparent zeichnen lassen?

    • xSunLighTx3
    • 16. September 2019 um 12:49

    Moin zusammen,

    seit ein paar Tagen arbeite ich mal wieder mit GDIPlus. Dort kann ich bereits dank einer DLL Targa Bilder laden.

    Nun habe ich allerdings gelesen, dass Targa Dateien immer einen Hintergrund haben. Meistens ist dieser schwarz.

    Ich will Bilder allerdings ohne den schwarzen Hintergrund laden lassen. Leider habe ich zu wenig Plan davon, wie ich das umsetzen soll.

    UEZ hat mal geschrieben, dass das möglich sei: (leider nicht wie)

    https://www.autoitscript.com/forum/topic/14…files-into-gui/


    Die DLL ist von funkey in c++ geschrieben und funktioniert größtenteils.

    Ich habe das Beispiel von funkey mal erweitert, sodass die Datei im tga Format auf einem GUI angezeigt wird.

    Alles befindet sich im Anhang, da das ein paar Dateien mehr sind. :D


    Falls mir jemand weiterhelfen könnte, wäre das super! :saint:


    Edit: Virustotal Link vom Anhang: https://www.virustotal.com/gui/file-analy…1Nw==/detection

    Remake von UEZ:

    Targa (TGA) Bild Dateien per GDI+ laden

    Dateien

    GDI - load tga image.zip 6,64 kB – 689 Downloads
  • Wie speichert man Logs am besten ab?

    • xSunLighTx3
    • 17. August 2019 um 00:28
    Zitat von BugFix

    Das kann man wohl nicht generell festlegen. Ich habe z. B. eine Messmittelverwaltung in einer DB mit 3 Tabellen. Da habe ich kpl. auf zusätzliche Keys verzichtet und speichere gezielt redundant, weil das Datenaufkommen so gering ist, dass Redundanzvermeidung und Indexing keinen Vorteil bringen.

    Es hängt also stark von deiner Anwendung ab.

    Man kann sich stur an irgendwelche Regeln halten, wenn es so vorgegeben ist (z. B. Qualitätsmanagement) muss man es auch, aber es lohnt sich schon Abläufe zu hinterfragen.

    Alles klar, danke für die Aufklärung. <3

    Wahrscheinlich würde es sich für die paar hundert Einträge dann auch nicht lohnen.

    In der Berufsschule haben wir auch nur stur die theoretischen Abläufe (Normalisierungen) gelernt. :sleeping:

  • Wie speichert man Logs am besten ab?

    • xSunLighTx3
    • 16. August 2019 um 23:10

    Hallo zusammen, :)

    demnächst möchte ich für mein Homepage Projekt Logs in eine Datenbank abspeichern, welche Aktivitäten wie Loginversuche, Downloads etc. festhalten soll.

    Ich habe dabei eine neue Tabelle angelegt und frage mich nun, wie ich das ganze mit der Redundanz klären soll.

    Beispiel (Redundant):

    [Blockierte Grafik: https://s18.directupload.net/images/190816/l49z52gj.png]


    Man könnte die Spalten log_category und log_description theoretisch in jeweils eine eigene Tabelle packen, um so Redundanz zu vermeiden

    und das ganze über Foreign Keys verweisen.

    Macht man das so oder spielt das in dem Fall keine Rolle? Ich habe schon öfters solche Verfahren gesehen, dass man hierbei sämtliche Regeln missachtet

    und die selben Daten einfach mehrfach abspeichert. :o

    id=primary key

    account_id=foreign key

    log_created=timestamp now

  • ISN AutoIt Studio

    • xSunLighTx3
    • 19. Juli 2019 um 11:27
    Zitat von ISI360

    Du kannst in den Programmeinstellungen -> Allgemein die Option "Beenden des Programms muss bestätigt werden" aktivieren.
    Das sollte dir in der Situtation schon helfen.

    Die Funktion habe ich aktivert. Aber dennoch tritt dieser Fehler abundzu auf. :(

  • Probleme bei _WinAPI_Path... -Funktionen

    • xSunLighTx3
    • 16. Juli 2019 um 16:47
    Zitat von alpines

    AutoIt hat sich dadurch ja auch verrannt und ich glaube, dass in einigen Versionen ein kompletter Rewrite erforderlich sein wird, den die Devs vermutlich so lange wie möglich aufschieben möchten.

    Hoffentlich werden wir das noch miterleben, dass AutoIt weiterentwickelt wird. ?(

  • ISN AutoIt Studio

    • xSunLighTx3
    • 16. Juli 2019 um 14:53

    Moin, ich habe da noch einen "Fehler" gefunden.

    Wenn ich ein geöffnetes GUI schließe bzw. das Programm beende, welches durch ISN gestartet wurde (F5),

    kommt es häufig zur ganzen Schließung des ISN Studios. Das kann echt nervig sein, da das relativ oft passiert.

    Das passiert einmal passiv und einmal aktiv, während man ein GUI mit ESC (mit einer Confirmation MSgbox) schließt.

    Komischerweise ist ISN auch mit der ESC Taste verknüpft und daduch schließt sich das ganze Programm dann ebenfalls mit.

  • Toggle Strg möglich?

    • xSunLighTx3
    • 11. Juli 2019 um 14:51

    Anders gings leider nicht. Strg wird laut Autoit Hilfe bereits von Windows genutzt, also müsstest du dir eine andere Taste aussuchen.

    Code
    #Include <Misc.au3>
    
    HotKeySet("{ESC}", "_ToggleExit")
    HotKeySet("{F5}", "_ToggleControl")
    
    Global $dll = DllOpen("user32.dll")
    Global $toggleControl = False
    
    
    While 1
        _Main()
    WEnd
    
    
    Func _Main()
    
        _CheckToggleControl()
        Sleep (10)
    
    EndFunc
    
    
    Func _CheckToggleControl()
    
        If $toggleControl Then
            Send("{LCTRL}")
            ToolTip("lcontrol is active")
        Else
            ToolTip("")
        EndIf
    
    EndFunc
    
    
    
    Func _ToggleControl()
    
        If $toggleControl = True Then
            $toggleControl = False
        Else
            $toggleControl = True
        EndIf
    
    EndFunc
    
    
    Func _ToggleExit()
        Exit
    EndFunc
    Alles anzeigen
  • Verschlüsselten String in Datei schreiben

    • xSunLighTx3
    • 28. Juni 2019 um 15:40
    Zitat von Oscar

    Man sollte das Passwort gar nicht im Script speichern!

    Der Benutzer muss das Passwort eingeben, dann dekodiert man die Daten damit und zeigt sie an.

    Bei einem falschen Passwort sind dann halt die angezeigten Daten falsch. :)

    Naja, man könnte noch einen Hashwert des richtigen Passworts mit abspeichern und diesen dann vergleichen.

    Stimmt, am besten erst gar keine Daten im Skript speichern.

    AutoIt macht es den Bösewichten auch nicht grad schwer. ^^

  • ISN AutoIt Studio

    • xSunLighTx3
    • 27. Juni 2019 um 11:15

    Moin ISI :)

    ich hätte da noch einen kleinen Vorschlag:

    Wenn 2 gleichnamige Dateien geöffnet sind, kann man die Dateien ggf. nicht sofort differenzieren.

    Vielleicht könnte man den kompletten Pfad in den Titel schreiben.

    Beispiel:

    src/de/autoit/main/test.au3 - Projektname - ISN AutoIt Studio


    Das letzte Update war im Übrigen richtig gut. :whistling::thumbup:

    Edit: Ach man kann über den Tooltip sehen, in welchem Pfad die Datei ist. Wieder was dazu gelernt. xD

  • Verschlüsselten String in Datei schreiben

    • xSunLighTx3
    • 27. Juni 2019 um 11:04

    Ich hätte da noch einen Tipp:

    Anstatt:

    $sPassword = "1234"

    Wäre sicherer*:

    $xfsa = 1

    $fqq2 = 2

    $vaetg= 3

    $3wf= 4

    $sPassword = $xfsa & $fqq2 & $vaetg & $3wf

    * Wäre dann deutlich schwerer, das Passwort über die Strings zu finden. Man kann bspw. mit Debuggern alle Strings aus einem Programm dumpen.

    Ein Kollege von damals hat mir so mal gezeigt, das er meine SQL Daten so herausbekommen konnte. :D

    Durch die zweite Methode werden die Zeichen einzeln angezeigt und nicht als ganzes Passwort.

  • Uralter Beitrag..... Fehlermeldung exe/au3 Zeilennummerndifferenz

    • xSunLighTx3
    • 25. Juni 2019 um 20:43

    Compile with options > Au3Stripper > Run au3 Stripper before compilation

    Die generierte exe gibt anschließend die richtige Zeile aus, wo der Fehler ist.

  • Rechnen mit 0

    • xSunLighTx3
    • 24. Juni 2019 um 17:26

    Als Tipp würde ich empfehlen, den Typ einer initialisierten Variable nicht zu verändern.

    Also wenn du eine Variable mit Typ Zahl speicherst, sollte man die Zahl nicht umwandeln. Hatte damals auch Probleme mit sowas, vor allem in größeren Skripts verliert man da schnell die Übersicht. :)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™