2

Javaでスクリーンセーバーを書いています。これは主に Windows 用ですが、実用的なものと同じくらい移植性があることを好みます。

http://support.microsoft.com/kb/182383によると、スクリーンセーバーがコマンド ライン引数/p HWNDで呼び出されると、スクリーンセーバーは「ウィンドウの子としてスクリーン セーバーをプレビュー」する必要があります。おそらく、これはスクリーンセーバー設定ダイアログでスクリーンセーバーが小さなプレビューを表示する方法です。

では、Java では、他の誰かに属するウィンドウの子である JFrame または JComponent をどのように作成するのでしょうか? JPanel に HWND (ウィンドウ ハンドル) を埋め込むを見てきましたが、 これは一種の逆の質問です。開発者は親ウィンドウを制御し、子ウィンドウを埋め込みたいと考えています。私の場合、「私のもの」ではない親に埋め込みたい子コンポーネントを制御します。JNAを使用してそれを行うことはできますか?

Java コードに加えて C コードを保守する必要はありません。(したがって、JNI は優先されません。) JDIC がこの種のニーズを満たすはずだったことは理解していますが、JDIC は本質的に死んでいると読んだことがあります。

私はWindows 7、FWIWを実行しています。

4

2 に答える 2

0

win32apiを呼び出す必要があります。そのAPIはCにあります。これを行うには、相互運用レイヤーにアクセスする必要があります。私はすべてのオプションがグロスになると思います。

Javaの場合、それはJNIだと思います。 それを行う方法については、これを参照してください。

また、その値をSetParentに渡す必要があります。

スクリーンセーバーはスクリーンセーバーダイアログと同じセキュリティ権限で実行されるため、これはセキュリティの問題ではありません。

于 2012-03-31T09:03:18.683 に答える
0

Jdicを見てください。スクリーンセーバー用の SDKがあるので、少なくともそのコードを調べることができます。

于 2012-03-27T17:49:04.180 に答える