Für meine vielen Filme habe ich mir ein Programm gebastelt, dass die Filme alle auflistet. Wenn man auf einen Film klickt, kann man Bilder dazu sehen, Infos, und einen Trailer bzw. den Film starten. Das Problem ist nur, dass ShellExecute in Verbindung mit mpg Videos folgenden Fehler gibt:
[Blockierte Grafik: http://img3.imagebanana.com/img/4096xjvv/Screenshot25.06.200916_44_44.png]
Obwohl mpg klar dem VLC Player zugeordnet sind. Wenn ich die Filme, wie in der Meldung beschrieben, neu zuordne, ändert sich nichts.
Wie öffne ich also die FIlme?
(Ich wollte jetzt nicht durch VLC starten und diversen Kontrolklicks ans Ziel gelanden, aber wenn es keine Alternative gibt, würde ich das machen.)
Spoiler anzeigen
Dim $vOldFilm
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("Movies", 1000, 600)
GUISetBkColor(0x000000)
$hGUIEditInformation = GUICtrlCreateEdit("", 0, 0, 300, 580)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xFFFFFF)
$hGUIButtonSaveTxt = GUICtrlCreateButton("Änderungen speichern", 0, 580, 300, 20)
$hGUIPicFilm = GUICtrlCreatePic("", 300, 0, 500, 600, 0x0200)
GUICtrlSetBkColor(-1, 0x000000)
$hGUIButtonPic1 = GUICtrlCreateButton("1", 300, 580, 92, 20)
$hGUIButtonPic2 = GUICtrlCreateButton("2", 402, 580, 92, 20)
$hGUIButtonPic3 = GUICtrlCreateButton("3", 504, 580, 92, 20)
$hGUIButtonPic4 = GUICtrlCreateButton("4", 606, 580, 92, 20)
$hGUIButtonPic5 = GUICtrlCreateButton("5", 708, 580, 92, 20)
$hGUIList = GUICtrlCreateList("", 800, 0, 200, 570)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xFFFFFF)
$hGUIButtonRefreshList = GUICtrlCreateButton("Filmliste erneuern", 800, 565, 200, 18)
$hGUIButtonTrailer = GUICtrlCreateButton("Trailer", 800, 583, 100, 18)
$hGUIButtonFilm = GUICtrlCreateButton("Film", 900, 583, 100, 18)
_GetMovies()
GUISetState(@SW_SHOW, $hGUI)
While 1
Switch GUIGetMsg()
Case - 3
Exit
Case $hGUIButtonRefreshList
GUICtrlSetData($hGUIList, "")
GUICtrlSetData($hGUIPicFilm, "")
_GetMovies()
Case $hGUIButtonPic1
GUICtrlSetImage($hGUIPicFilm, @ScriptDir & "\" & GUICtrlRead($hGUIList) & "\" & "Cover1.jpg")
GUICtrlSetFont($hGUIButtonPic2, 10)
GUICtrlSetFont($hGUIButtonPic3, 10)
GUICtrlSetFont($hGUIButtonPic4, 10)
GUICtrlSetFont($hGUIButtonPic5, 10)
GUICtrlSetFont($hGUIButtonPic1, 14)
Case $hGUIButtonPic2
GUICtrlSetImage($hGUIPicFilm, @ScriptDir & "\" & GUICtrlRead($hGUIList) & "\" & "Cover2.jpg")
GUICtrlSetFont($hGUIButtonPic1, 10)
GUICtrlSetFont($hGUIButtonPic3, 10)
GUICtrlSetFont($hGUIButtonPic4, 10)
GUICtrlSetFont($hGUIButtonPic5, 10)
GUICtrlSetFont($hGUIButtonPic2, 14)
Case $hGUIButtonPic3
GUICtrlSetImage($hGUIPicFilm, @ScriptDir & "\" & GUICtrlRead($hGUIList) & "\" & "Cover3.jpg")
GUICtrlSetFont($hGUIButtonPic1, 10)
GUICtrlSetFont($hGUIButtonPic2, 10)
GUICtrlSetFont($hGUIButtonPic4, 10)
GUICtrlSetFont($hGUIButtonPic5, 10)
GUICtrlSetFont($hGUIButtonPic3, 14)
Case $hGUIButtonPic4
GUICtrlSetImage($hGUIPicFilm, @ScriptDir & "\" & GUICtrlRead($hGUIList) & "\" & "Cover4.jpg")
GUICtrlSetFont($hGUIButtonPic1, 10)
GUICtrlSetFont($hGUIButtonPic2, 10)
GUICtrlSetFont($hGUIButtonPic3, 10)
GUICtrlSetFont($hGUIButtonPic5, 10)
GUICtrlSetFont($hGUIButtonPic4, 14)
Case $hGUIButtonPic5
GUICtrlSetImage($hGUIPicFilm, @ScriptDir & "\" & GUICtrlRead($hGUIList) & "\" & "Cover5.jpg")
GUICtrlSetFont($hGUIButtonPic1, 10)
GUICtrlSetFont($hGUIButtonPic2, 10)
GUICtrlSetFont($hGUIButtonPic3, 10)
GUICtrlSetFont($hGUIButtonPic4, 10)
GUICtrlSetFont($hGUIButtonPic5, 14)
Case $hGUIButtonTrailer
$vFilmTrailer = GUICtrlRead($hGUIList)
ShellExecute(@ScriptDir & "\" & $vFilmTrailer & "\" & $vFilmTrailer & "_Trailer.mpg")
Case $hGUIButtonFilm
$vFilmX = GUICtrlRead($hGUIList)
ShellExecute(@ScriptDir & "\" & $vFilmX & "\" & $vFilmX & ".mpg")
Case $hGUIButtonSaveTxt
$vPath = @ScriptDir & "\" & GUICtrlRead($hGUIList) & "\" & "Info.txt"
FileDelete($vPath)
FileWrite($vPath, GUICtrlRead($hGUIEditInformation))
EndSwitch
Sleep(5)
$vFilm = GUICtrlRead($hGUIList)
If $vFilm <> $vOldFilm Then
$vFilmDir = @ScriptDir & "\" & $vFilm & "\"
GUICtrlSetData($hGUIEditInformation, FileRead($vFilmDir & "Info.txt"))
GUICtrlSetImage($hGUIPicFilm, $vFilmDir & "Cover1.jpg")
GUICtrlSetFont($hGUIButtonPic2, 10)
GUICtrlSetFont($hGUIButtonPic3, 10)
GUICtrlSetFont($hGUIButtonPic4, 10)
GUICtrlSetFont($hGUIButtonPic5, 10)
GUICtrlSetFont($hGUIButtonPic1, 14)
$vOldFilm = $vFilm
EndIf
WEnd
Func _GetMovies()
$folders = _GetFilesFolder_Rekursiv('.', Default, 1, 0)
For $i = 1 To $folders[0]
$vDirContainer = StringSplit(StringReplace($folders[$i], @ScriptDir & "\", ""), "\")
GUICtrlSetData($hGUIList, $vDirContainer[1])
Next
EndFunc ;==>GetFolders
;==================================================================================================
; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
; Description: Rekursive Auflistung von Dateien und/oder Ordnern
; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
; optional: $iRetType 0 gibt Array, 1 gibt String zurück
; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|'
; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;==================================================================================================
Func _GetFilesFolder_Rekursiv($sPath, $sExt = '*', $iDir = -1, $iRetType = 0, $sDelim = '0')
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Global $strFiles = ''
Switch $sDelim
Case '1'
$sDelim = @CR
Case '2'
$sDelim = @LF
Case '3'
$sDelim = ';'
Case '4'
$sDelim = '|'
Case Else
$sDelim = @CRLF
EndSwitch
If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath), $sExt, $iDir, $sDelim)
If $iRetType = 0 Then
Local $aOut
$aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
Else
Return StringTrimRight($strFiles, StringLen($sDelim))
EndIf
EndFunc ;==>_GetFilesFolder_Rekursiv
Func _ShowSubFolders($Folder, $Ext = '*', $Dir = -1, $Delim = @CRLF)
If Not IsDeclared("strFiles") Then Global $strFiles = ''
If ($Dir = -1) Or ($Dir = 0) Then
For $file In $Folder.Files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & $Delim
Else
$strFiles &= $file.Path & $Delim
EndIf
Next
EndIf
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
_ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
Next
EndFunc ;==>_ShowSubFolders