2012-02-15 3 views
0

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

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

ответ

0

В Windows вы устанавливаете экранную заставку с somewhere in the control panels. Чтобы панель управления могла взаимодействовать с сторонними хранителями экрана, она предназначена для запуска их с помощью определенных аргументов командной строки.

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

ScreenSaver /p 1234 

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

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

ScreenSaver /c 

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

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

ScreenSaver /s 

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

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

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

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

+0

Спасибо! Я получил систему более или менее работает на этом этапе с этим! – bionicOnion

Смежные вопросы