爲Delphi編寫的屏幕保護程序增加描述

雖說屏幕保護程序只是個相對特殊的exe(會接受/C、/P、/S等啓動參數,具體可見諸多博文,在此不贅述),但是卻讓一個小小的描述卡住了。

我們知道,作爲屏幕保護程序,安裝後會在系統的“顯示”對話框的列表裏出現,而進而我們發現,現有的屏幕保護程序顯示的並不是文件名,而是一行描述,而使用Delphi編寫的exe卻無法具備這個特性。

向搜索引擎尋求幫助後,得到了如下的描述:

You can define the text that will appear in the Control Panel Desktop list of screen savers by adding a {$D text} directive to the project source file. The $D directive inserts the given text into the module description entry of the executable file. For the Control Panel to recognize the text you must start with the term "SCRNSAVE", followed by your description.

Select Project Source from the Delphi View menu so you can edit the source file. Beneath the directive "{$R *.RES}", add the following line:

{$D SCRNSAVE Spheres Screen Saver}

The text "Spheres Screen Saver" will appear in the Control Panel list of available screen savers when we complete the project.

 

http://burks.brighton.ac.uk/burks/language/pascal/uddf/pages/scrnsave.htm

 

大意是在dpr文件中寫入{$D SCRNSAVE [要顯示的描述]},就可以在編譯之後的exe內加入屏幕保護程序描述字符。

而就是因爲這個僅有的說明(貌似瘋狂的轉載並不是好事,連已經無效的方法都被這樣流傳着)讓我走了很多彎路,以這個說明爲前提,我險些否定了自己的工作。

直到一天研究無果後,我決定另闢蹊徑,既然裏面說了是字符串,那麼估計應該在程序內能找到。

於是我將系統內置的屏幕保護程序用eXeScope打開,赫然發現了新大陸:

在字符串節點下,key爲1的值就是SCRNSAVE +空格+屏幕保護程序描述字符串。

那麼那個{$D text}是什麼呢?進而通過仔細查詢,發現,這個關鍵字是生成應用程序描述的,而非字符串資源(找到這個說明後才猛然醒悟,爲啥不深究一下這個$D呢,都怪自己太不自信了)

既然知道了描述字符串的規則,那就動手搞定。

新建一個.rc文件,設置如下格式:

 

stringtable
begin
1, "SCRNSAVE  [要顯示的描述字符串]"
End

 

具體編譯、連接過程見此連接:http://www.blogjava.net/badboyryan/archive/2009/02/06/253555.html

之後在工程中使用{$R [資源文件名]}引入,編譯,OK,搞定。

發佈了201 篇原創文章 · 獲贊 2 · 訪問量 41萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章