Я пытался добиться Media Player Automation. Я почти всегда старался изо всех сил осознавать, но без всяких успехов. Немногие из попыток перечислены ниже.
CAN-NOT не создает LOCAL_SERVER, независимо от того, что я пытаюсь. для CLSCTX_LOCAL_SERVER
Я всегда получаю class not registered error
.
Начал с консольного приложения, преобразовал его в приложение Window, у которого есть Message Pump, как предложено здесь, но все равно не может воспроизводить WMP.
Во всяком случае, я пошел вперед с IWMPPlayer4
, на котором действительно работает метод openPlayer(), открывает WMP и начинает играть в клип. Но любые другие сообщения не доходят до WMP. Например, для
IWMPSettings *pMediaPlayerSettings = NULL;
hr = pMediaPlayer4->get_settings(&pMediaPlayerSettings);
if(FAILED(hr))
{
std::cout << "ERR - Could not get WMPSettings Interface Pointer" << std::endl;
ReleaseInterfaces((IUnknown**)&pMediaPlayer4);
return 0;
}
std::cout << "Got settings.. lets change volume" << std::endl;
int cnt = 10;
while(cnt > 1)
{
long vol = -1.0;
Sleep(2000);
hr = pMediaPlayerSettings->get_volume(&vol);
if(FAILED(hr))
{
std::cout << "ERR - Could not change the volume" << std::endl;
}
std::cout << "Currently volume is: " << vol << std::endl;
hr = pMediaPlayerSettings->put_volume(cnt*cnt);
cnt--;
}
ReleaseInterfaces((IUnknown**) &pMediaPlayerSettings);
Этот код ИЗМЕНЯЕТ громкость, но каким-то образом этот эффект отсутствует в клипе, который воспроизводится.
Тогда я подумал, что может быть Invoke
ing отправит сообщения в WMP, запускающий текущий клип. Пробовал и этот код, но безрезультатно.
Так что все, о чем я прошу, - это то, что я пытаюсь, ЕСТЬ ВОЗМОЖНО НА ВСЕ?
Код Raw-COM для управления медиаплеером? Любые указатели, примеры, фрагменты кода более чем приветствуются. У меня есть неправильное чувство, что я занимаюсь серфингом в этом вопросе. Пожалуйста, докажите, что я неправ.
PS: Я не хочу делать кодировку ActiveX или MFC.
Эта проблема не имеет ничего общего с тем, что ваше приложение является консольным приложением. Насос сообщения находится вне темы. Вы можете попробовать то же самое с приложением Windows, и оно будет вести себя одинаково.
Это потому, что в этом случае плеер не размещен в качестве элемента управления (как элемент управления OLE в окне), поэтому он просто не поддерживается. Если вы разместите его в приложении Windows или в Internet Explorer, вы увидите, что он работает нормально.
В этой конфигурации, если вы хотите управлять томом, вы должны использовать аудио-интерфейсы громкости (и, в частности, ISimpleAudioVolume)