虽说屏幕保护程序只是个相对特殊的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
()
大意是在dpr文件中写入{$D SCRNSAVE [要显示的描述]}就可以在编译之后的exe内加入屏幕保护程序描述字符
而就是因为这个仅有的说明(貌似疯狂的转载并不是好事连已经无效的方法都被这样流传着)让我走了很多弯路以这个说明为前提我险些否定了自己的工作
直到一天研究无果后我决定另辟蹊径既然里面说了是字符串那么估计应该在程序内能找到
于是我将系统内置的屏幕保护程序用eXeScope打开赫然发现了新大陆
在字符串节点下key为的值就是SCRNSAVE +空格+屏幕保护程序描述字符串
那么那个{$D text}是什么呢?进而通过仔细查询发现这个关键字是生成应用程序描述的而非字符串资源(找到这个说明后才猛然醒悟为啥不深究一下这个$D呢都怪自己太不自信了)
既然知道了描述字符串的规则那就动手搞定
新建一个rc文件设置如下格式
stringtable
begin
SCRNSAVE [要显示的描述字符串]
End