Классическим решением является настройка одного конфигурационного файла (я предпочитаю свойства, потому что я в здравом уме) и возможность размещения файла переопределений на каждом установленном хосте.
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);
}
Так они не работают?
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, но я предполагаю, что вы развернули его.
похоже, когда вы создаете экземпляр 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
Дайте мне знать, если вам нужны какие-то конкретные примеры для настройки этого.