尽管你读到了,但事实证明,Windows屏幕保护程序并非“只是”.exe重命名为.scr。 .scr文件不像EXE那样直接“启动”。相反,Windows在.scr文件中查找可执行文件,并使用Windows希望提供可执行文件的任何命令行参数重新启动该可执行文件。
这意味着如果您使用自己的参数创建.scr文件的快捷方式(例如,“myscreensaver.scr / windowed / doublebuffered”),当您使用该快捷方式时,Environment.CommandLine会显示已启动的内容是“myscreensaver.scr / S”。请注意,我的参数已被替换。
我理解/ s,/ c和/ p参数在这里的作用。这不需要解释,我在屏幕保护程序中正确使用它们。但我也希望我的原始参数。是否有可能获得启动我的进程的进程的名称,并获取被提供给 进程的命令行参数?
答案 0 :(得分:0)
你对SCR文件是正确的。它只是Windows用/ p(预览),/ c(配置)或/ s(显示)启动的EXE。屏幕保护程序负责其他所有事情,包括在注册表或其他地方保存其设置。
不,我不知道如果您直接启动屏幕保护程序,Windows会用/ S覆盖命令行参数。虽然有点意义。
命令行参数存储在Windows内部缓冲区中,可以从程序或从外部访问。只有一个缓冲区,所以如果它已经消失,它就会消失。
启动你的进程的过程几乎肯定是资源管理器,如果它记得你的命令行参数,那就不说了。
您可以通过查看Z顺序在shell之前找到最后一个应用程序的窗口。
我能想到的是,不是使用快捷方式,而是编写自己的脚本,可以启动屏幕保护程序(就像快捷方式一样),但在启动后发送一些参数。这很容易做到。