Несмотря на то, что вы читаете, выясняется, что Windows Screen Saver НЕ "просто".exe переименован в.scr. Файл.scr не запускается напрямую, как EXE. Вместо этого Windows ищет исполняемый файл в файле.scr и перезапускает этот исполняемый файл, причем любые параметры командной строки Windows хотят передать исполняемый файл.
Это означает, что если вы создаете ярлык для вашего.scr файла с вашими собственными параметрами (например, "myscreensaver.scr/windowed/doublebuffered"), когда вы используете этот ярлык, Environment.CommandLine показывает, что запущен был "myscreensaver.scr/S ". Обратите внимание, что мои параметры были заменены.
Я понимаю роль параметров /s,/c и /p здесь. Это не требует объяснений, и я правильно использую их в своей экранной заставке. Но я хотел бы также вернуть свои исходные параметры. Можно ли получить имя процесса, который запустил мой процесс, и получить параметры командной строки, которые были отправлены на этот процесс?
Вы правы в файле SCR. Это просто EXE, который запускает Windows с помощью /p (предварительный просмотр),/c (настройка) или /s (показ). Заставка отвечает за все остальное, включая сохранение ее настроек в реестре или в другом месте.
Нет, я не знал, что если вы запустите скринсейвер напрямую, Windows перезапишет аргументы командной строки с помощью /S. Однако имеет смысл.
Аргументы командной строки хранятся в внутреннем буфере Windows, к которому можно получить доступ из программы или извне. Существует только один буфер, поэтому, если он ушел, он исчез.
Процесс, который запустил ваш процесс, почти наверняка является проводником, и если он запоминает аргументы командной строки, это не говорит.
Вы можете найти окно для последнего приложения перед оболочкой, посмотрев порядок Z.
Все, что я могу придумать, это то, что вместо того, чтобы использовать ярлык, напишите свой собственный скрипт, который может запустить экранную заставку (как ярлык), но присылайте ей некоторые аргументы после запуска. Это довольно легко сделать.
Despite what you read, it turns out that a Windows Screen Saver is not an .exe..
. Вы тот, кто создает заставку и имеет контроль над ней. Я что-то пропустил? И чтобы добавить к этому, если вы не устанавливаете заставку, почему вы беспокоитесь о переименовании его в scr И если вы устанавливаете его, почему вы вызываете scr вручную (двойной щелчок)? Переименовав его в scr и установив его, вы ожидаете, что Windows вызовет его.