C# Media Player Problem

Neue Frage »

Auf diesen Beitrag antworten »
InformaTiger C# Media Player Problem

Hallo,
ich habe folgenden Code geschrieben:

code:
1:
2:
3:
4:
5:
private void btnStop_Click(object sender, EventArgs e)
{
              MediaPlayerVerbindung aVerbindungsObjekt = new MediaPlayerVerbindung();
              aVerbindungsObjekt.StoppePlayer();
}


und in der Klasse MediaPlayerVerbindung dann folgenden:

code:
1:
2:
3:
4:
public void StoppePlayer()
{
              aPlayer.Stop();
}


wobei a Player so definiert ist:

code:
1:
MediaPlayer aPlayer = new MediaPlayer();


Mein Problem dabei: Wenn ich auf den Button Stop klicke, funktioniert das Unterbrechen der Medienwiedergabe nur manchmal. Woran kann das liegen? verwirrt



Lg
InformaTiger
 
Auf diesen Beitrag antworten »
Karlito

Hallo,

Mediaplayer ist doch Teil eines WPF-Forms, oder? Wenn Du versuchst einfach nur einen beliebigen Mediaplayer außerhalb deiner Anwendung fernzusteuern versuchst, wundert mich, dass es überhaupt funktioniert...

Ansonsten musst Du schon mit einer Referenz auf den verwendeten MP arbeiten und nicht mit new Mediaplayer einfach ein neues Mediaplayer-Objekt erzeugen...

VG,

Karlito
Auf diesen Beitrag antworten »
InformaTiger

Nein, es ist in diesem Fall einfach Teil einer normalen Windows Forms Anwendung. Mit den Verweisen auf Presentation Core und Windows Base. Funktioniert sonst einwandfrei bis eben auf den genannten Makel, dass es mal funktioniert und mal eben nicht...

geschockt

Lg
InformaTiger
Auf diesen Beitrag antworten »
InformaTiger

Um nochmals auf das Problem zurückzukommen, bei folgendem Code:

code:
1:
2:
3:
4:
5:
private void tkBarVolume_ValueChanged(object sender, EventArgs e)
{
              MediaPlayerVerbindung aVerbindungsObjekt = new MediaPlayerVerbindung();
              aVerbindungsObjekt.aPlayer.Volume = tkBarVolume.Value;
}


funktioniert das leider auch nicht. Also da muss irgendetwas an der Objektsetzung oder so faul sein...

Die markierten Elemente funktionieren nicht (der Stop- Button wird erst aktiviert sobald "Ganzen Titel wiedergeben" geklickt wird, aber genau da funktioniert er leider nicht)

verwirrt

Lg
InformaTiger
 
Auf diesen Beitrag antworten »
eulerscheZahl

Wie Karlito schon sagte: du erzeugst ein neues Objekt, das von deinem ersten Mediaplayer nichts weiß, wie soll das dann die Wiedergabe stoppen/die Lautstärke ändern?

Um sagen zu können, wie es richtig geht, musst du schon etwas mehr Code zeigen.
Aber du wirst an irgendeiner Stelle haben
MediaPlayerVerbindung bla = new MediaPlayerVerbindung();
bla.Play();
dann musst du auch machen
bla.Stop();
statt einen neuen Player zu erzeugen.
Auf diesen Beitrag antworten »
InformaTiger

Ok, hab ich versucht.
Hat funktioniert... smile

Das Problem war eben dass durch das Objekt ein neuer Player erstellt wurde anstatt der alte Player gestoppt.

Die Lösung dazu war dann den MediaPlayerVerbindung's Code auf die normale Main - Form in der das ganze Programm abläuft zu übertragen. Seit da funktionierts.

großes Grinsen

Lg
InformaTiger
Auf diesen Beitrag antworten »
InformaTiger

Was ich allerding noch nachfragen wollte:

Ist es also nie möglich aus einem andern Code einen Player Fernzusteuern? Weil im groben wollte ich den Code des MediaPlayers von dem der Main - Form trennen... verwirrt

Danke. Daumen hoch

Lg
InformaTiger
Auf diesen Beitrag antworten »
Karlito

Hallo,

Du könntest versuchen, den Mediaplayer mit Tastenkombinationen zu befeuern. Ich denke dazu muss das Fenster aktiviert werden und danach müssen die Tastenkombinationen simuliert werden. Gemacht habe ich soetwas noch nicht und ich weiß auch nicht inwieweit soetwas noch möglich ist.
Ich kann mir vorstellen, dass das von Windows nicht (mehr) zugelassen ist, da es ein Sicherheitsrisiko darstellt.
Wenn ich dazu komme werde ich morgen mal ein wenig googeln.

VG,

Karlito
Auf diesen Beitrag antworten »
Airblader

Möglich ist sowas schon, auch abseits von Tastenkombinationen. Wenn du besagtes anderes Programm aber nicht selbst geschrieben hast, d.h. keine entsprechende Schnittstelle zur Verfügung stellen kannst, bewegst du dich schnell im Bereich von "Hacks".

Ein gutes Beispiel ist Minesweeper unter Windows. Es gibt Bots, die wie ein Mensch einfach strategisch spielen (d.h. sie können nur sicher gewinnen, wenn das Spiel nicht vom Glück abhängt) und die Maus programmatisch bedienen.
Andere Bots wiederum lesen den Speicher des Programms aus und manipulieren ihn, d.h. sie gewinnen auch dann, wenn das Spiel nur mit Glück lösbar wäre.

Solche Dinge sind prinzipiell auch für deinen Playerr denkbar, wenn man z.B. den Speicher manipuliert. Das sind aber schon echt fortgeschrittene Methoden, die auch weit abseits jeglicher "Best Practices" liegen (man spielt nicht mit dem Speicher anderer Anwendungen, wenn diese dafür keine Schnittstelle zur Verfügung stellen).

Letztlich kenne ich mich damit aus alten Zeiten auch nur sehr, sehr oberflächlich aus. Sollte nur als Zusatzinformation dienen, zu empfehlen ist dieser Weg definitiv nicht.
Auf diesen Beitrag antworten »
Karlito

Ich stimme Airblader zu. Weiterhin sind bei modernen Betriebssystemen die Speicherbereiche von Programmen voneinander getrennt. Das geht so weit, dass jedes Programm normalerweise denkt, dass es den gesamten Hauptspeicher für sich hat. Ein Zugriff auf den Speicher eines anderen Programmes wird normalerweise vom Betriebssystem verhindert und ist nur mit sehr speziellen Mitteln und erweiterten Rechten, die wie Airblader schon sagt als Hacks gelten, möglich.

Die Verwendung von von Tastenkombinationen ist hier noch das einfachste. Das Manipulieren des Speichers oder Aufrufen von Funktionen innerhalb anderer Programme übersteigt auch meine Kenntnisse um Weiten.

VG,

Karlito
Auf diesen Beitrag antworten »
InformaTiger

Okay.
Dankeschön.

Ich werde das dann mal lieber unterlassen das mit "Hacks" und so ist dann wircklich nicht meine Sache...

großes Grinsen

Lg
InformaTiger
Auf diesen Beitrag antworten »
Karlito

Hallo,

ich weiß nicht ob dir das passt, aber du kannst ja in einem Programm auch mehrere Fenster erstellen. So könntest du auch ein Mediaplayer-Fenster und ein Steuerfenster erstellen. Vlt reicht das schon?

VG,

Karlito
Auf diesen Beitrag antworten »
InformaTiger

Du meinst es soll ein MDI- Container werden?

Edit: Oder ne neue Form?

Lg
InformaTiger
Auf diesen Beitrag antworten »
Karlito

Neues Form war gemeint.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »