Benutzer mit den meisten Antworten
Video in einer Windows-Form

Frage
-
Guten Tag,
ich möchte innerhalb einer Windows-Form mit Visual-Basic Videos vom User ansehen und steuern lassen. Ich finde aber kein entsprechendes tool in der toolbox. Geht das dann überhaupt nicht? Oder gibt es die Möglichkeit einen Verweis auf den Media-Player einzurichten? Woruaf muss an dabei achten? Falls das geht, gibt es dazu einen Beispielcode (und wo), wie das Video dann gesteuert werden kann?
Danke schon mal für Eure Antworten
Arnd
Dienstag, 2. Mai 2017 10:36
Antworten
-
Hi Arnd,
du kannst den Windows Media Player (COM) einbinden. Dazu ist über "Choose Items" (engl. VS) dieser in den Werkzeugkasten (Toolbox) zu laden.Alternativ kann auch ein WPF Steuerelement integriert werden.
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks
- Bearbeitet Peter Fleischer Dienstag, 2. Mai 2017 12:12
- Als Antwort markiert Stefan FalzModerator Samstag, 31. März 2018 11:12
Dienstag, 2. Mai 2017 12:11 -
Hi Arnd,
im Windows Formular nimmst Du das ElementHost:Imports System.Windows.Forms.Integration Imports WpfControlLibrary1 Public Class Form03 Private Sub Form03_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim wpfCtrl As New ElementHost With {.Dock = DockStyle.Fill} wpfCtrl.Child = New UserControl03 Me.Controls.Add(wpfCtrl) End Sub End Class
Dazu auch die Referenzen auf WindowsBase, WindowsFormsIntegration und die WpfControlLibrary.
Darin genutzt wird ein WPF UserControl:
<UserControl x:Class="UserControl03" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:WpfControlLibrary1" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> <Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <MediaElement Name="media" Source="UserControl03Video.mp4" LoadedBehavior="Manual" UnloadedBehavior="Manual" /> <StackPanel Grid.Row="1" Orientation="Horizontal"> <Button Name="btnStart" Content="Start" Margin="5"/> </StackPanel> </Grid> </UserControl>
Dazu ein Beispiel CodeBehind zum Starten des Videos:
Public Class UserControl03 Private Sub btnStart_Click(sender As Object, e As RoutedEventArgs) Handles btnStart.Click Me.media.Play() End Sub End Class
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Stefan FalzModerator Mittwoch, 7. März 2018 16:04
- Als Antwort markiert Stefan FalzModerator Samstag, 31. März 2018 11:12
Dienstag, 9. Mai 2017 19:30
Alle Antworten
-
Hi Arnd,
du kannst den Windows Media Player (COM) einbinden. Dazu ist über "Choose Items" (engl. VS) dieser in den Werkzeugkasten (Toolbox) zu laden.Alternativ kann auch ein WPF Steuerelement integriert werden.
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks
- Bearbeitet Peter Fleischer Dienstag, 2. Mai 2017 12:12
- Als Antwort markiert Stefan FalzModerator Samstag, 31. März 2018 11:12
Dienstag, 2. Mai 2017 12:11 -
Danke Peter
der Tip war gut. Den MediaPlayer habe ich in die Form bekommen. Jetzt hatte ich gedacht, dass es dann wie bei einer picture box ein Feld gibt, in dem ich den Pfad zu dem Film hinterlege. Aber so etwas habe ich nicht gefunden. Sicher kannst Du mir auch dabei weiterhelfen.
Danke schon mal
Arnd
Mittwoch, 3. Mai 2017 15:16 -
Hallo Arnd,
dafür musst Du die URL Eigenschaft setzen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET CommunityMittwoch, 3. Mai 2017 15:27Moderator -
Danke Stefan,
im Eigenschaftsfenster und der URL Zeile war ich nicht erfolgreich. Ich hatte erwartet, wie bei der PictureBox auf den Explorer zu kommen, um den Pfad nach und nach zusammenzuklicken. Das ging aber irgendwie nicht. Dafür brachte mich ein Rechtsklick auf den Player weiter, dort öffnet sich ein Submenu u. a. mit dem Eintrag 'Eigenschaften' und dort konnte ich mich im Explorer bis zu meiner Filmdatei durchklicken und auch sonst noch so einiges einstellen. Dieser Pfad stand dann nacher auch in der URL-Zeile und der Film samt Ton lief dann auch fehlerfrei beim Debuggen. Soweit ist also meine Frage beantwortet. Gerne würde ich aber noch wissen, was ich denn noch so an Wünschen in der Private Sub im Quellcode unterbringen kann.
Danke und Gruß
Arnd
Mittwoch, 3. Mai 2017 17:16 -
Hi Arnd,
die Wünsche musst Du schon selbst benennen.Das "Zusammenbasteln" des Pfades kannst Du in eine Methode auslagern und benötigst nicht zwingend den Rechtsklick.
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und TricksDonnerstag, 4. Mai 2017 04:36 -
Danke Peter,
den Rechtsklick finde ganz ok. Ob und wozu ich die Methode benötige, weiß ich jetzt noch nicht und komme dann bei Gelegenheit gerne darauf zurück.
Die Wünsche zu der Private Sub liegen mir jetzt mehr am Herzen:
1. Kann ich in dieser Sub unterbringen, dass zu einem bestimmten Zeitpunkt nach Start des Films, neben dem Filmfenster Informationen eingeblendet werden?
2. Kann der Video-Betrachter über den Handler (enter) Informationen anfordern?
3. Kann man über das Videofenster etwas Graphisches legen, z. B. einen Pfeil um auf ein Filmdetail hinzuweisen?
Ich weiß ja nicht was andere so in dieser SUB im Quellcode unterbingen. Liege ich mit diesen Wünschen völlig daneben?
Danke schon mal für Eure Antworten.
Arnd
Samstag, 6. Mai 2017 20:23 -
Hi,
welche Sub? Davon kann es hunderte, tausende, Millionen, ... geben.
Es gibt nicht "die Sub", daher musst Du uns schon sagen, was Du eigentlich meinst.
Eine "Sub" ist nur eine Methode ohne Rückgabewert. Man ruft diese Methode also auf, sie macht irgendwas (kann alles mögliche sein, man ist völlig frei darin, dort Code unterzubringen.
Ich nehme an, Du hast noch keinerlei Erfahrung mit VB.NET bzw. Programmierung im Allgemeinen? Falls ja, wäre es sinnvoll, sich zuerst noch mit den Grundlagen zu beschäftigen und dann nochmal an die Sache detaillierter ranzugehen.
Schau dir dazu doch mal dieses OpenBook an:
Um deine anderen Fragen grundsätzlich zu beantworten:
Zu 1: Kann man sicher. Aber letztendlich wird man das aus einem Eventhandler des WindowsMediaPlayer Controls heraus machen und dort ggfs. einen Timer aktivieren, der nach Erreichen der Zeitstpanne eine Methode aufruft, die ihrerseits wiederum die Informationen auf den Bildschirm bringt.
Zu 2: Klar. Fragt sich nur, wo der "Video Betrachter" Enter drücken und was dann wo und wie angezeigt werden soll.
Zu 3: Jein. Es kommt drauf an, was genau Du machen willst. So einfach wie sonst ist das nicht, da das WMP Control für die Anzeige Techniken nutzt, die sich in den Vordergrund drängen (ok, in der Regel ist das auch richtig so).
Alles in allem bleibt die Frage: Warum willst Du das alles mit veralteter Technik machen, die dich vor ziemliche Probleme stellen wird, wenn Du doch eh noch am Anfang stehst. In dem Fall würde es erheblich mehr Sinn machen, sich mit einer neuen, moderneren Technologie wie bspw. WPF zu beschäftigen, die dann auch zukunftssicher ist.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Sonntag, 7. Mai 2017 07:50
- Als Antwort vorgeschlagen Stefan FalzModerator Mittwoch, 7. März 2018 16:04
Sonntag, 7. Mai 2017 07:32Moderator -
Es tut mir leid, Stefan, ich dachte ich hätte mich klar ausgedrückt. Mit dem Anlegen des Media Player tools stand im Quellcode auch gleichzeitig eine Private Sub mit einem Handler (enter). Genauer:
Private Sub AxWindowsMediaPlayer1_enter(ByVal ........) Handles AxWindowsMediaPlayer1.Enter
End Sub
Diese Subroutine hab ich da nicht hingetippt und dass an diese Stelle sich beliebig viele andere Subs hinsetzen, wenn man den MediaPlayer aktiviert, erscheint mir wenig wahrscheinlich. Deshalb hatte ich gedacht, dass versierten Usern klar ist, welche Sub ich gemeint habe.
Die erste Antwort, die ich von Peter erhielt - Danke nochmal Peter - zielte auf den MediaPlayer und erwähnte das WPF-Steuerelement nur als Alternative.
Aus Deiner Antwort, Stefan, entnehme ich, dass das WPF-Steuerelement anscheinend die bessere Alternative sei. OK! Wie bekomme ich dieses Steuerelement in die Windows Form?
Danke einstweilen
Arnd
Dienstag, 9. Mai 2017 14:49 -
Hi Arnd,
im Windows Formular nimmst Du das ElementHost:Imports System.Windows.Forms.Integration Imports WpfControlLibrary1 Public Class Form03 Private Sub Form03_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim wpfCtrl As New ElementHost With {.Dock = DockStyle.Fill} wpfCtrl.Child = New UserControl03 Me.Controls.Add(wpfCtrl) End Sub End Class
Dazu auch die Referenzen auf WindowsBase, WindowsFormsIntegration und die WpfControlLibrary.
Darin genutzt wird ein WPF UserControl:
<UserControl x:Class="UserControl03" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:WpfControlLibrary1" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> <Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <MediaElement Name="media" Source="UserControl03Video.mp4" LoadedBehavior="Manual" UnloadedBehavior="Manual" /> <StackPanel Grid.Row="1" Orientation="Horizontal"> <Button Name="btnStart" Content="Start" Margin="5"/> </StackPanel> </Grid> </UserControl>
Dazu ein Beispiel CodeBehind zum Starten des Videos:
Public Class UserControl03 Private Sub btnStart_Click(sender As Object, e As RoutedEventArgs) Handles btnStart.Click Me.media.Play() End Sub End Class
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Stefan FalzModerator Mittwoch, 7. März 2018 16:04
- Als Antwort markiert Stefan FalzModerator Samstag, 31. März 2018 11:12
Dienstag, 9. Mai 2017 19:30 -
Danke Peter,
da diese Antwort von kam, nehme ich an, dass auch Du meinst, dass WPF die bessere Alternative ist. Für mich sieht sie allerdings komplizierter aus. Aber ich werde mich mal damit beschäftigen. Jetzt muss ich erst mal die nächsten zwei Wochen ein Gutachten schreiben, dann gehts mit dem Programmieren weiter.
Wenn ich dann wieder auf Schwierigkeiten stoße, meld ich mich wieder.
Bis dahin Euch beiden meine Dank
Gruß Arnd
Mittwoch, 10. Mai 2017 09:34 -
Hi Arnd,
ohne Kenntnis weiterer Anforderungen kann man nicht sagen, ob WPF eine bessere Alternative ist. WPF-Anwendungen bieten bedeutend mehr Möglichkeiten bei der Schaffung moderner Oberflächen und stabilerer Anwendungen.--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und TricksMittwoch, 10. Mai 2017 09:49