2012-02-15 97 views
0

我一直在使用Java編寫屏幕保護程序,現在正在開發命令行參數支持。爲此,列出here的潛在參數之一是將屏幕保護程序作爲指定窗口的子項。我怎樣才能採取這一論點,並獲得必要的窗口來放置屏幕保護程序?從命令行參數製作窗口

另外,'模態窗口'是什麼意思?

回答

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 2012-02-15 03:21:42