Ich verwende WMP SDK, um Windows Media Player zu steuern. Ich habe zuerst ein neues Projekt mit dem Windows Media Player Plug-in-Assistenten erstellt und dann Code hinzugefügt, der mit meiner Anwendung über eine Named Pipe kommuniziert. Wenn meine Anwendung Musik muss stumm geschaltet werden, zum Beispiel eine Nachricht an die WMP-Plugin senden und dann stumm schaltet das Plugin die Musik:Windows Media Player-Benutzeroberfläche wird nicht aktualisiert, wenn Befehle mit WMP SDK gesendet werden
CComPtr<IWMPSettings> settings;
if (SUCCEEDED(core_->get_settings(&settings)))
{
settings->put_mute(VARIANT_TRUE);
}
Es funktioniert, und wenn ich Befehle senden, werden sie ausgeführt, aber die Die Benutzeroberfläche wird nicht aktualisiert. Wenn ich zum Beispiel einen Stummschaltbefehl sende, wird die Musik stummgeschaltet (es gibt keinen Ton), aber die Stummschalttaste wird immer noch so angezeigt, als ob die Musik nicht stummgeschaltet ist. Um dies zu beweisen, kann ich die Skin an dieser Stelle ändern oder zu einem anderen Song springen, und die Benutzeroberfläche wird aktualisiert und zeigt den Stumm-Zustand korrekt an. Wenn ich darauf klicke, wird die Stummschaltung aufgehoben, und dann wird wieder der Status "Unmutiert" angezeigt (der jetzt der korrekte Status ist).
Gibt es also eine Möglichkeit, die Aktualisierung der Benutzeroberfläche zu erzwingen, oder eine andere Problemumgehung?
Sie scheinen C# und C++ - Code hier zusammengeführt zu haben. Außerdem verstehe ich nicht, wie der Ausdruck 'new WindowInteropHelper (this) .Handle' in ein Handle des WMP-Fensters aufgelöst wird. – kolufild