1

尽管您阅读了这些内容,但事实证明 Windows 屏幕保护程序“不仅仅是”重命名为 .scr 的 .exe。.scr 文件不像 EXE 那样直接“启动”。相反,Windows 在 .scr 文件中查找可执行文件,并使用 Windows 想要提供可执行文件的任何命令行参数重新启动该可执行文件。

这意味着,如果您使用自己的参数(例如,“myscreensaver.scr /windowed /doublebuffered”)创建 .scr 文件的快捷方式,当您使用该快捷方式时,Environment.CommandLine 会显示启动的是“myscreensaver .scr /S”。请注意,我的参数已被替换。

我在这里了解/s、/c 和/p 参数的作用。这无需解释,我在屏幕保护程序中正确使用了它们。但我也想恢复原来的参数。是否可以获取启动我的进程的进程的名称,并获取提供给进程的命令行参数?

4

1 回答 1

0

您对 SCR 文件是正确的。它只是 Windows 使用 /p(预览)、/c(配置)或 /s(显示)启动的 EXE。屏幕保护程序负责其他一切,包括将其设置保存在注册表或其他地方。

不,我不知道如果您直接启动屏幕保护程序,Windows 会用 /S 覆盖命令行参数。不过有点道理。

命令行参数存储在 Windows 内部缓冲区中,可以从程序或外部访问。只有一个缓冲区,所以如果它消失了,它就消失了。

启动你的进程的进程几乎肯定是 Explorer,如果它记得你的命令行参数,它就不会告诉你。

您可以通过查看 Z 顺序找到 shell 之前的最后一个应用程序的窗口。

我能想到的就是不要使用快捷方式,而是编写自己的脚本来启动屏幕保护程序(就像快捷方式一样),但在启动后向它发送一些参数。这很容易做到。

于 2014-08-29T04:52:05.183 回答