2012-02-15 4 views
0

私はJavaでスクリーンセーバーを作っており、コマンドライン引数のサポートに取り組んでいます。そのためには、hereと記載されている潜在的な引数の1つが、スクリーンセーバーを指定されたウィンドウの子として配置するためのものです。その議論をしてスクリーンセーバーを入れるために必要なウィンドウを得るにはどうすればいいですか?コマンドライン引数からウィンドウを作る

また、 'モーダルをウィンドウにする'とはどういう意味ですか?

答えて

0

Windowsでは、スクリーンセーバーをsomewhere in the control panelsに設定します。コントロールパネルをサードパーティ製のスクリーンセーバーと接続するために、特定のコマンドライン引数を使用してコントロールパネルを実行するように設計されています。だから、

、あなたはリストからスクリーンセーバーを選択し、「プレビュー」ボタンを押したときに、コントロールパネルには、このコマンドを実行します。

ScreenSaver /p 1234 

ここで「スクリーンセーバー」woudl EBあなたのプログラムへのパス、および1234は、コントロールパネルウィンドウのHWND参照を与えるポインタ値になります。スクリーンセーバーは、そのウィンドウの子として自分自身を追加してプレビューを表示する必要があります。あなたは、「設定」ボタンを押したときに

同様に、コントロールパネルには、このコマンドを実行します:

スクリーンセーバープログラムは、それがそのコマンドライン引数を取得するとき、それはシステムに照会する必要があることを知っている必要があります
ScreenSaver /c 

ウィンドウはフォアグラウンドにあり、そのウィンドウ内にダイアログをポップアップします(「モーダル」は、ダイアログが閉じられるまでそのウィンドウへのアクセスをブロックすることを意味します)。あなたのプログラムがフルスクリーンに行く必要があるとき

ScreenSaver /s 

これは、次のとおりです。

最後に、コントロールパネルは、それがスクリーンセーバーを実行するための時間が実際にあると判断した場合、それは、このコマンドを実行します。

ここで、Java開発者とはどういう意味ですか?

まず、Javaコンポーネントをシステムウィンドウに挿入するには、複雑なJNI作業が必要になります。プレビューでは、Javaコードがイメージにレンダリングされ、その後JNIを介して通常のWindowsコンポーネントに描画されます。システムウィンドウ内でJavaダイアログを起動することは、おそらく完全に不可能です。

しかし、あなたのスクリーンセーバーとネイティブスクリーンセーバーとの間に多少の矛盾はありません。プレビューモードでプレビューで新しいウィンドウをポップアップさせ、設定モードで同様にダイアログを新しいウィンドウでポップアップさせることができます。フルスクリーンモードは調整なしでうまく動作するはずです。

+0

ありがとうございます!私はシステムを多かれ少なかれこの時点でこれで稼働させました! – bionicOnion

関連する問題