如何获取启动我的应用程序的流程
本文关键字:应用程序 我的 启动 何获取 获取 | 更新日期: 2023-09-27 18:20:05
不管你读到了什么,Windows屏幕保护程序并不是"仅仅"一个重命名为.scr的.exe。.scr文件并不像exe那样直接"启动"。相反,Windows在.scr文件中查找可执行文件,并使用Windows想要提供的任何命令行参数重新启动该可执行文件。
这意味着,如果您使用自己的参数(例如,"myscreensaver.scr/windowed/doublebuffered")为.scr文件创建一个快捷方式,当您使用该快捷方式时,Environment.CommandLine会显示启动的是"myscreeensaver.scr/S"。请注意,我的参数已被替换。
我理解此处/s、/c和/p参数的作用。这不需要解释,我在屏幕保护程序中正确使用了它们。但我也希望我的原始参数能回来。是否可以获取启动我的进程的进程的名称,并获取提供给该进程的命令行参数?
您对SCR文件的看法是正确的。这只是Windows用/p(预览)、/c(配置)或/s(显示)启动的EXE文件。屏幕保护程序负责其他一切,包括将其设置保存在注册表或其他地方。
不,我不知道如果你直接启动屏幕保护程序,Windows会用/S覆盖命令行参数。不过有点道理。
命令行参数存储在Windows内部缓冲区中,该缓冲区可以从程序或外部访问。只有一个缓冲区,所以如果它不见了,它就不见了。
启动进程的进程几乎可以肯定是Explorer,如果它记得你的命令行参数,那就没什么意义了。
您可以通过查看Z顺序找到shell之前最后一个应用程序的窗口。
我所能想到的是,与其使用快捷方式,不如编写自己的脚本,启动屏幕保护程序(就像快捷方式一样),但在启动后发送一些参数。这很容易做到。