1

あなたが何を読んでも、Windows スクリーン セーバーは .scr に名前が変更された「単なる」.exe ではないことがわかります。.scr ファイルは、EXE のように直接「起動」されません。代わりに、Windows は .scr ファイルで実行可能ファイルを探し、その実行可能ファイルを再起動します。Windows が実行可能ファイルに送りたいコマンド ライン パラメータは何でもかまいません。

これは、.scr ファイルへのショートカットを独自のパラメーター (たとえば、"myscreensaver.scr /windowed /doublebuffered" など) で作成した場合、そのショートカットを使用すると、Environment.CommandLine によって起動されたのが "myscreensaver" であることが明らかになることを意味します。 .scr/S". パラメータが置き換えられていることに注意してください。

ここで /s、/c、および /p パラメータの役割を理解しました。これについては説明するまでもありませんが、私はスクリーン セーバーで正しく使用しています。しかし、元のパラメータも戻したいです。自分のプロセスを起動したプロセスの名前を取得し、そのプロセスに供給されたコマンド ライン パラメータを取得することはできますか?

4

1 に答える 1

0

あなたはSCRファイルについて正しいです。これは、Windows が /p (プレビュー)、/c (構成)、または /s (表示) で起動する単なる EXE です。スクリーン セーバーは、その設定をレジストリや他の場所に保存するなど、他のすべての処理を担当します。

いいえ、スクリーンセーバーを直接起動すると、Windows がコマンド ライン引数を /S で上書きすることに気付きませんでした。ちょっと理にかなっていますが。

コマンド ライン引数は、プログラムまたは外部からアクセスできる Windows 内部バッファに格納されます。バッファーは 1 つしかないので、なくなったら終わりです。

プロセスを起動したプロセスは、ほぼ間違いなく Explorer であり、コマンド ライン引数を覚えていてもわかりません。

Z オーダーを見ると、シェルの前の最後のアプリケーションのウィンドウを見つけることができる場合があります。

私が思いつくのは、ショートカットを使用する代わりに、スクリーン セーバーを (ショートカットのように) 起動し、起動後にいくつかの引数を送信できる独自のスクリプトを作成することです。それはとても簡単です。

于 2014-08-29T04:52:05.183 に答える