Windows Media Player, игнорирующий меня

Классическим решением является настройка одного конфигурационного файла (я предпочитаю свойства, потому что я в здравом уме) и возможность размещения файла переопределений на каждом установленном хосте.

Spring поддерживает это "из коробки".

Вот пример:

public static void main(final String[] argumentArray)
{
  final StringApplicationBuilder springApplicationBuilder;

  springApplicationBuilder = new SpringApplicationBuilder(YourSpringBootApplication.class)

  springApplicationBuilder.properties(
    "spring.config.location=classpath:/yourConfig.properties,/some/path/to/overrides/directory/yourConfig.properties");

  springApplicationBuilder.build().run(argumentArray);
}
7
задан Community 23 May 2017 в 10:27
поделиться

2 ответа

Так они не работают?

wmp.getProperty("settings").toDispatch().setProperty("mute", 1);
wmp.getProperty("controls").toDispatch().invoke("pause");

(Извиняюсь за неправильный код; я никогда раньше не использовал Джейкоба)


В этом случае create / find any окно и отправьте его APPCOMMAND_MEDIA_PLAY_PAUSE . Обработка сообщений по умолчанию повлияет на WMP. (Отправка отключения звука не годится, так как это отключит всю систему.)

Для переносимости я бы рекомендовал создать утилиту командной строки C ++ или использовать JNI, но NativeCall может пока подойти.


Ваш код выглядит хорошо, но я думаю, вам просто нужно изменить параметры на SendMessage. Попробуйте:

final int WM_APPCOMMAND = 0x0319;
int playResult = sendMessage.executeCall(new Object[] {
        wmpHandle,
        WM_APPCOMMAND,
        wmpHandle,
        APPCOMMAND_MEDIA_PLAY << 16});

APPCOMMAND_MEDIA_PLAY требует XP SP1, но я предполагаю, что вы развернули его.

2
ответ дан 7 December 2019 в 16:46
поделиться

похоже, когда вы создаете экземпляр wmpSettings как новый ActiveXComponent, Джейкоб на самом деле делает что-то смешное, чтобы обернуть компонент в новый объект медиаплеера, вместо того, чтобы получить запрашиваемое свойство настроек.

Вы пробовали просто:

Dispatch wmpSettings = wmp.getProperty("settings").toDispatch();
wmpSettings.setProperty("volume", 0);

Я также вернулся и прочитал оригинальный вопрос это заставило вас использовать Джейкоба, и я могу предложить другой подход на случай, если вы слишком долго будете крутить колеса на нем.

Я настроил веб-приложение, которое взаимодействовало с сервером shoutcast, запущенным из winamp, на рабочем столе компьютера. конкретный пользователь, который в данный момент вошел на сервер веб-приложений. Я не мог использовать COM для прямой связи с экземпляром winamp пользователя из контекста веб-приложения, поэтому я установил простое приложение winamp bridge C # TCP / IP, которое запускалось пользователем shoutcast ' Рабочий стол и позволяет веб-приложению устанавливать сокет-соединение с локального хоста.

Для WMP я уверен, что вы можете найти некоторые обертки C #, такие как код для WmpRemote.zip, который вы можете найти, если выполните текстовый поиск по http://d.hatena.ne.jp/punidama/20080227

Дайте мне знать, если вам нужны какие-то конкретные примеры для настройки этого.

1
ответ дан 7 December 2019 в 16:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: