创建另一个进程的HWND的子窗口? (例如屏幕保护程序预览)

时间:2012-03-24 21:23:44

标签: java windows windows-7 screensaver hwnd

我正在用Java编写屏幕保护程序。它主要用于Windows,但我更喜欢它实用的便携性。

根据http://support.microsoft.com/kb/182383,当使用命令行参数/p HWND调用屏幕保护程序时,屏幕保护程序应该“预览屏幕保护程序作为窗口的子项”。据推测,这就是屏保在屏幕保护程序设置对话框中进行小预览的方式。

那么,在Java中,您是如何创建一个JFrame或JComponent,它是属于其他人的窗口的子项? 我看过Embed HWND (Window Handle) in a JPanel 这是一个相反的问题:开发人员控制父窗口并希望嵌入子窗口。在我的情况下,我控制一个我想要嵌入到不是“我的”父级的子组件。我可以使用JNA来做到这一点吗?

除了Java代码之外,我不想维护C代码。 (所以JNI不是首选。)我知道JDIC应该满足这种需要,但我已经读过JDIC基本上死了。

我正在运行Windows 7,FWIW。

2 个答案:

答案 0 :(得分:0)

看看Jdic,屏保有an SDK,所以至少你可以研究他们的代码..

答案 1 :(得分:0)

您需要拨打win32 api。那个api在C中。你需要interop层才能做到这一点。我认为每个选项都是粗略的。

对于Java,我认为那是JNI。 See this如何做到这一点。

您还需要将该值传递给SetParent

屏幕保护程序以与屏幕保护程序对话框相同的安全权限运行,因此这不是安全问题。