|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 12.12.2014, 15:49 Titel: |
|
|
Also gut, ihr Nörgler!
Hier eine "saubere" Fernsteuerung des VLC-Players: Code: | #Include "windows.bi"
Declare Sub abspielen(datei As String)
Declare Sub rc(befehl As String)
Dim Shared As HWND hWndDiesesFenster, hWndRC, hWndVLC
Dim As String g, datei
Dim As ZString*100 text
Dim As STARTUPINFO siVLC
Dim As PROCESS_INFORMATION pi
Dim As WINDOWPLACEMENT wpDF, wpVLC
hWndDiesesFenster = GetForegroundWindow() 'fensterhandle ermitteln
'konsolenfenster in die obere linke ecke setzen
GetWindowPlacement(hWndDiesesFenster,@wpDF)
With wpDF.rcNormalPosition
.right = .right - .left + 1
.left = 1
.bottom = .bottom - .top + 1
.top = 1
End With
SetWindowPlacement(hWndDiesesFenster,@wpDF)
GetStartupInfo(@siVLC) 'defaultwerte holen
'neue werte setzen
text = "Fenster" 'neuer titel der rc-fensters (zum sicheren wiederfinden)
siVLC.lpTitle = @text 'neuen fenstertitel setzen
siVLC.dwFlags = STARTF_USESHOWWINDOW 'anzeigeoption freischalten
siVLC.wShowWindow = SW_HIDE 'rc-fenster verstecken
'VLC-Player mit fernsteuerung starten
CreateProcess(0,"C:\Programme\VideoVLC\vlc.exe --extraintf rc",0,0,0,0,0,0,@siVLC,@pi)
Do 'warten, bis rc-fenster gestartet ist
Sleep 1
Loop Until FindWindow(0,"Fenster")
hWndRC = FindWindow(0,"Fenster") 'fensterhandle merken
Do 'warten, bis VLC-Player gestartet ist
hWndVLC = FindWindow(0,"VLC media player")
Sleep 1
Loop Until IsWindowVisible(hWndVLC)
'VLC unter konsolenfenster setzen
GetWindowPlacement(hWndVLC,@wpVLC)
With wpVLC.rcNormalPosition
.right = .right - .left + 1
.left = 1
.bottom = .bottom - .top + 1 + wpDF.rcNormalPosition.bottom
.top = 1 + wpDF.rcNormalPosition.bottom
End With
SetWindowPlacement(hWndVLC,@wpVLC)
SetForegroundWindow(hWndDiesesFenster)
Print "1 - Video 1"
Print "2 - Video 2"
Print "3 - Video 3"
Do
g = InKey
Select Case g
Case "1"
datei = "d:\videos\video1.avi"
Exit Do
Case "2"
datei = "d:\videos\video2.avi"
Exit Do
Case "3"
datei = "d:\videos\video3.avi"
Exit Do
End Select
Loop
abspielen(datei)
Cls
Print "F1 = Pause/weiter"
Print "F2 = Beenden"
Do
g = InKey
Select Case g
Case Chr(255,59) 'F1
rc("pause") 'pause/weiter
Case Chr(255,60) 'F2
rc("quit") 'VLC-Player beenden
Sleep 1000 'VLC zeit zum beenden geben
SendMessage(hWndRC,WM_CLOSE,0,0) 'rc-fenster schließen
End
End Select
Loop
Sub abspielen(datei As String)
rc("clear") 'playlist löschen
rc("add " + datei) 'neues video in playlist schreiben
rc("play") 'wiedergabe starten
End Sub
Sub rc(befehl As String)
Dim As Integer x
Dim As String b
b = befehl + Chr(13) 'RETURN anhängen
For x = 0 To Len(b) - 1 'befehl als simulierte tastendrücke an rc-fenster senden
PostMessage(hWndRC,WM_CHAR,Cast(WPARAM,b[x]),0)
Sleep 1
Next
End Sub
|
EDIT:
Ich habe den Code noch einmal überarbeitet (Die Verwendung von TerminateProcess ist ja nicht so wirklich nett ).
RockTheSchock hat Folgendes geschrieben: | Es wird natürlich nicht ganz einfach die lib und header datei zu erzeugen, alle Abhängigkeiten aufzulösen, aber wenn die Umgebung eingerichtet ist und es läuft, kannst du die volle Funktionalität von VLC nutzen. | Damit würde ich mir wahrscheinlich eine große Fangemeinde schaffen. Die Frage ist nur, ob sich der (Zeit-) Aufwand lohnt, da sich der VLC-Player (s.o.) ohne größere Schwierigkeiten fernsteuern lässt (obwohl: irgendwie reizvoll ist der Gedanke schon...).
Jojo hat Folgendes geschrieben: | Auch ein Kindprozess ist nicht dein Prozess | Da hast du Recht, und der Sinn dieser Restriktion ist mir (inzwischen) auch klar, das wäre ja sonst ein kaum zu schließendes Einfallstor für Schadsoftware.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
kay2016
Anmeldungsdatum: 22.11.2014 Beiträge: 17
|
Verfasst am: 13.12.2014, 21:15 Titel: |
|
|
Ist es normal das der VLC Player trotz Pfadangabe zu
C:\quasivideos\test => erst folgenden Pfad durchsucht: Bibliotheken\Dokumente ?
Wie kann ich es beheben ?
Der zweite Code auf dieser Seite zeigt mir nur ein schwarzes Fenster ohne Fehlermeldung, unabhängig davon ob VLC schon läuft oder nicht.
Zuletzt bearbeitet von kay2016 am 14.12.2014, 11:07, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 14.12.2014, 11:01 Titel: |
|
|
Welches Betriebssystem hast du?
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
kay2016
Anmeldungsdatum: 22.11.2014 Beiträge: 17
|
Verfasst am: 14.12.2014, 12:29 Titel: |
|
|
Windows 7 64bit
mit dem ersten Code (den du ausführlich erklärt hast) öffnet sich zwar der VLC aber trotzdessen ich dem Pfad zu den Videos angepasst habe, öffnet sich wenn ich z.B. 1 wähle dann nur der Ordner Bibliotheken/Dokumente in denen man dann die Wahl bekommt ein Video zu wählen. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 15.12.2014, 02:26 Titel: |
|
|
kay2016 hat Folgendes geschrieben: | Windows 7 64bit | Das hatte ich befürchtet.
Die "Bibliotheken" sind eine Neuerung von Windows 7, und dabei kann ich dir leider nicht weiterhelfen, da ich selber (immer noch) WinXP benutze. Vielleicht weiß ja einer der anderen Experten eine Lösung.
Den Mickysoft - Entwicklern ist zwar alles zuzutrauen, aber daß Win7 eine explizite Pfadangabe schlichtweg ignoriert, kann ich mir eigentlich nicht vorstellen. Bist du ganz sicher, daß deine angegebenen Pfade samt Dateinamen und Erweiterung korrekt sind und daß die angegebenen Dateien wirklich existieren?
Wird vielleicht noch eine Message Box mit der Titelzeile "Eine oder mehrere Dateien zum Öffnen wählen" angezeigt? Das hieße nämlich, daß VLC die angegebene Datei nicht finden konnte. Du könntest vor der Do-Schleife, die die Funktionstasten abfragt, probeweise die Zeilen Code: | #Include "file.bi"
? FileExists(datei) | einfügen. Wird dort -1 ausgegeben, existiert die Datei, bei einer 0 existiert die Datei nicht.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|