Создать дочернее окно HWND другого процесса?(например, предварительный просмотр заставки) - PullRequest
2 голосов
/ 25 марта 2012

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

Согласно http://support.microsoft.com/kb/182383,, когда вызывается заставка с аргументами командной строки /p HWND, заставка должна «Предварительный просмотр заставки как дочернего элемента окна». Предположительно, именно так скринсейверы должны просматривать их в диалоговом окне «Настройки заставки».

Итак, как в Java вы создаете JFrame или JComponent, который является дочерним элементом окна, принадлежащего кому-то другому? Я смотрел на Вставить HWND (дескриптор окна) в JPanel Это своего рода обратный вопрос: разработчик контролирует родительское окно и хочет встроить дочернее окно. В моем случае я контролирую дочерний компонент, который я хочу встроить в родительский объект, который не является «моим». Могу ли я использовать JNA для этого?

Я бы предпочел не поддерживать C-код в дополнение к Java-коду. (Так что JNI не является предпочтительным.) Я понимаю, что JDIC должен был удовлетворить этот вид потребностей, но я читал, что JDIC по существу мертв.

У меня Windows 7, FWIW.

Ответы [ 2 ]

0 голосов
/ 31 марта 2012

Вам нужно вызвать Win32 API. Это API в C. Для этого вам понадобится уровень взаимодействия. Я думаю, что каждый вариант будет брутто.

Я думаю, что для Java это JNI. См. о том, как это сделать.

Вам также нужно будет передать это значение в SetParent .

Заставка работает с теми же правами безопасности, что и диалоговое окно заставки, так что это не проблема безопасности.

0 голосов
/ 27 марта 2012

Взгляните на Jdic , у него есть SDK для заставок, так что, по крайней мере, вы можете изучить их код ..

...