Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Sonstige Fragen (http://www.informatikerboard.de/board/board.php?boardid=25)
--- C# Media Player Problem (http://www.informatikerboard.de/board/thread.php?threadid=1472)


Geschrieben von InformaTiger am 20.04.2013 um 19:48:

  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



Geschrieben von Karlito am 21.04.2013 um 15:48:

 

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



Geschrieben von InformaTiger am 22.04.2013 um 17:16:

 

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



Geschrieben von InformaTiger am 29.04.2013 um 19:03:

 

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



Geschrieben von eulerscheZahl am 29.04.2013 um 19:56:

 

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.



Geschrieben von InformaTiger am 03.05.2013 um 18:10:

 

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



Geschrieben von InformaTiger am 03.05.2013 um 18:16:

 

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



Geschrieben von Karlito am 04.05.2013 um 00:44:

 

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



Geschrieben von Airblader am 04.05.2013 um 13:43:

 

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.



Geschrieben von Karlito am 04.05.2013 um 14:21:

 

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



Geschrieben von InformaTiger am 05.05.2013 um 14:20:

 

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



Geschrieben von Karlito am 05.05.2013 um 14:36:

 

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



Geschrieben von InformaTiger am 05.05.2013 um 14:39:

 

Du meinst es soll ein MDI- Container werden?

Edit: Oder ne neue Form?

Lg
InformaTiger



Geschrieben von Karlito am 05.05.2013 um 17:31:

 

Neues Form war gemeint.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH