Создание окна из аргумента командной строки - PullRequest
0 голосов
/ 15 февраля 2012

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

Кроме того, что означает «модальное окно»?

1 Ответ

0 голосов
/ 15 февраля 2012

В Windows вы устанавливаете заставку из где-то на панелях управления .Чтобы панель управления могла взаимодействовать со сторонними заставками, она предназначена для запуска их с определенными аргументами командной строки.

Итак, когда вы выбираете заставку из списка и нажимаете «Предварительный просмотр»Кнопка, панель управления выполняет эту команду:

ScreenSaver /p 1234

Здесь «ScreenSaver» будет указывать путь к вашей программе, и значение 1234 будет указателем, указывающим HWND-ссылку для окна панели управления.Затем заставка должна добавить себя в качестве дочернего элемента этого окна для предварительного просмотра.

Аналогичным образом, когда вы нажимаете кнопку «Настройки», панель управления выполняет эту команду:

ScreenSaver /c

Программа заставки должна знать, что когда она получает этот аргумент командной строки, она должна запросить систему, для которой окно находится на переднем плане, и открыть диалоговое окно в этом окне («модальный» означает, что она блокирует доступ к этомуокно, пока диалоговое окно не будет закрыто).

Наконец, когда панель управления определяет, что на самом деле пора запускать заставку, она выполняет следующую команду:

ScreenSaver /s

Это когда вашПрограмма должна работать в полноэкранном режиме.

Теперь, что это значит для вас, как разработчика Java?

Прежде всего, вставка компонента Java в системное окно потребует некоторой сложной работы JNI.Для предварительного просмотра лучше всего сделать так, чтобы ваш код Java отображался в изображение, которое затем перетаскивалось в обычный компонент Windows через JNI.Запуск Java-диалога в системном окне, вероятно, совершенно невозможен.

Однако, если вы не возражаете против незначительных несоответствий между вашей заставкой и нативной, вы, вероятно, можете избежать этого.Вы можете просто включить режим предварительного просмотра во всплывающем окне с предварительным просмотром, а режим «Настройки» также может открыть диалоговое окно в новом окне.А полноэкранный режим должен работать без изменений.

...