autoit.de/wcf/attachment/25282/Hallo allerseits. Nachdem ich bei den letzten Projekten alle Probleme durch nachlesen lösen konnte, bin ich bei diesem leider ziemlich Ideenlos.
Ich habe ein Hilfsprogramm geschrieben, das mir verschiedene Internet-Radiostreams anzeigt (Daten dazu sind in einer Ini gespeichert) und ich über Radios einen auswählen, den Player starten und diesen Sender hören kann. Gefällt mir was da gerade läuft, kann ich durch Knopfdruck den Streamripper starten und den Stream downloaden.
Auf meinem PC läuft das Programm (auch im Compilierten Zustand) ohne Probleme. Auf anderen Rechnern, verschwinden allerdings die Bilder (Logos der Streams), die sich im freien Bereich zwischen Text und Radiokreis befinden sobald der Mauszeiger über die Radio-Controls oder deren Text fährt. Außerdem wird auf dem Settings-Button das Bild nicht angezeigt.
Hat von euch jemand eine Idee, wo hier das Problem liegen könnte? Ich weiß, dass es nicht gterade Professionell programmiert ist, aber ich bin ja noch am Üben. Das Fehlerhandling durch Auslesen der Rückgabewerte will ich machen, wenn das Programm erst mal Problemlos läuft.
Spoiler anzeigen
#RequireAdmin
#include <array.au3>
#include <GUIConstantsEx.au3>
#include <eigene.au3>
#include <GuiButton.au3>
#include <WindowsConstants.au3>
Local $aGenres[3]=[2, "Genre1", "Genre2"]
Local $aSender[4][8]
Local $i=0
$aSender[0][0]=3
While $i<3
$i+=1
$aSender[$i][0]="Sender" & $i
$aSender[$i][1]="Genre1"
$aSender[$i][2]="URL" & $i
$aSender[$i][3]=$i & ".gif"
$aSender[$i][4]=20
$aSender[$i][5]=20
$aSender[$i][7]=1
WEnd
$aSender[3][1]="Genre2"
Global $grx=300
Global $gry=210
Global $hMainGUI = GUICreate("PAIR", $grx, $gry)
Global $hStartButton=GUICtrlCreateButton("&Play", 10, $gry-(25+20), 50, 25)
Global $hCancelButton=GUICtrlCreateButton("&Beenden", $grx-(10+60), $gry-(25+20), 60, 25)
Global $hSettingsButton=GUICtrlCreateButton("", $grx-(10+30), 6, 30, 30, $BS_ICON)
_GUICtrlButton_SetImage($hSettingsButton, @ScriptDir & "\options_klein.ico")
Global $hGenreCombo=GUICtrlCreateCombo($aGenres[1], 90, 10, 120)
Global $vGenreCombo=""
$hRecordButton=GUICtrlCreateButton("Stream &aufnehmen", 10+50+20, $gry-(25+20), 100, 25)
$i=0
While $i<$aGenres[0]
$i+=1
$vGenreCombo=$vGenreCombo & "|" & $aGenres[$i]
WEnd
GUICtrlSetData($hGenreCombo, $vGenreCombo, $aGenres[1])
Global $vGenre=GUICtrlRead($hGenreCombo)
GUICtrlCreateLabel("Musikrichtung: ", 10, 12)
$i=0
Local $iPos=0
While $i<$aSender[0][0]
$i+=1
If $aSender[$i][1]=$vGenre Then
$iPos+=1
$aSender[$i][6]=GUICtrlCreateRadio(" " & $aSender[$i][0] & " ", 10, 50 + (($iPos-1)*30))
GUICtrlCreatePic(@ScriptDir & "\" & $aSender[$i][3], 45-($aSender[$i][4]/2), 50 + (($iPos-1)*30), $aSender[$i][4], $aSender[$i][5])
GUICtrlSetBkColor($aSender[$i][6], $GUI_BKCOLOR_TRANSPARENT)
EndIf
WEnd
Global $playing=1
Global $con=1
GUISetState(@SW_SHOW, $hMainGUI)
[/autoit] [autoit][/autoit] [autoit]While 1
$msg=GUIGetMsg()
Select
Case $msg=$hStartButton
;startet den Player und spielt den jeweiligen Sender ab
Case $msg=$hGenreCombo
Global $PosMainGUI=WinGetPos("PAIR", "Musikrichtung: ")
$vGenre=GUICtrlRead($hGenreCombo)
GUIDelete($hMainGUI)
$hMainGUI = GUICreate("PAIR", $grx, $gry, $PosMainGUI[0], $PosMainGUI[1])
$hStartButton=GUICtrlCreateButton("&Play", 10, $gry-(25+20), 50, 25)
$hCancelButton=GUICtrlCreateButton("&Beenden", $grx-(10+60), $gry-(25+20), 60, 25)
Global $hSettingsButton=GUICtrlCreateButton("", $grx-(10+30), 6, 30, 30, $BS_ICON)
_GUICtrlButton_SetImage($hSettingsButton, @ScriptDir & "\options_klein.ico")
$hGenreCombo=GUICtrlCreateCombo($vGenre, 90, 10, 120)
$hRecordButton=GUICtrlCreateButton("Stream &aufnehmen", 10+50+20, $gry-(25+20), 100, 25)
GUICtrlSetData($hGenreCombo, $vGenreCombo, $vGenre)
$vGenre=GUICtrlRead($hGenreCombo)
GUICtrlCreateLabel("Musikrichtung: ", 10, 12)
$i=0
$iPos=0
While $i<$aSender[0][0]
$i+=1
If $aSender[$i][1]=$vGenre Then
$iPos+=1
$aSender[$i][6]=GUICtrlCreateRadio(" " & $aSender[$i][0] & " ", 10, 50 + (($iPos-1)*30))
GUICtrlCreatePic(@ScriptDir & "\" & $aSender[$i][3], 45-($aSender[$i][4]/2), 50 + (($iPos-1)*30), $aSender[$i][4], $aSender[$i][5])
GUICtrlSetBkColor($aSender[$i][6], $GUI_BKCOLOR_TRANSPARENT)
EndIf
WEnd
GUISetState(@SW_SHOW, $hMainGUI)
;_ArrayDisplay($aSender)
Case $msg=$hSettingsButton
;Öffnet die GUI für die Einstellungen
Case $msg=$hRecordButton
;startet Streamripper und beginnt die Aufnahme
Case $msg=$GUI_EVENT_CLOSE
Exit
Case $msg=$hCancelButton
Exit
EndSelect
If WinExists("Error") Then
$playing=1
ProcessClose(WinGetProcess("Error"))
sleep(200)
MsgBox(0, "Fehler", "Es ist ein Fehler bei der Verbindung " & @CRLF & "mit " & $con & " aufgetreten." & @CRLF & @CRLF & "Starten Sie die Wiedergabe erneut.")
EndIf
WEnd
[/autoit]Soweit mal das gekürzte Skript. Die Includes habe ich nach dem Kürzen nicht aussortiert, also nicht wundern, wenn was dabei steht, ohne daraus eine Funktion verwendet zu haben.
Falls Wichtig
Aufbau des Sender-Arrays:
$aSender[0][0] - Anzahl an Sendern
für i>0
$aSender[i][0] - Sendername
$aSender[i][1] - Genre
$aSender[i][2] - URL des Senders
$aSender[i][3] - Bild (Logo des Senders)
$aSender[i][4 und 5] - Größe des Bildes (auch wenn die Bilddatei kleiner ist, wurde es aus irgend einem Grund immer Groß gezogen)
$aSender[i][6] - Handle des Radio
$aSender[i][7] - Shoutcast-Stream Ja/Nein
Aufbau des Genre-Arrays:
$aGenre[0] - Anzahl an Genres
$aGenre[1...] - Genre
Wäre super, wenn jemandem das Problem auffällt. Einem Profi springt das bestimmt direkt ins Auge.
Edit: habe das gepostete Skript angepasst, dass es direkt zu starten geht. es müssten nur noch Bilder zum testen eingesetzt werden
Edit2: Das Skript sollte jetzt mit den unten angehängten Bildern (im Skriptordner abgelegt) funktionieren. options_klein ist eigentlich eine .ico, die allerdings beim Hochladen nicht akzeptiert wurde. Nach dem Runterladen die Datei also wieder zu .ico umbenennen.
Edit3: Nachdem ich heute nochmal eine Weile gesucht habe und etwas rumprobiert habe, bin ich auf folgenden Link gestoßen:
http://www.codebot.de/index.php/Thre…icht-angezeigt/
Ich habe dem Butten den Style $BS_ICON verpasst (oben schon geändert) und jetzt geht es auch auf anderen Rechnern. Warum es vorher bei mir schon ging weiß ich ehrlich gesagt nicht.
Das Problem mit den Bildern besteht allerdings weiterhin. Ich habe mir zwar jetzt beholfen, indem ich die Bilder vor die Radios gezogen habe, aber zwischen Radio und Text wäre mir lieber. Die Radios ohne Text erstellen und stattdessen neben dem Bild ein Laber möchte ich nicht, da die Radios dann ja nur durch klicken auf den Punkt ausgewählt werden können. Es wäre also super, wenn hier jemand noch eine Lösung hat.