ShellExecで「設定」モードでスクリーンセーバーを実行したい。そうどこかで道路上のWindowsは私の呼び出しをインターセプトし、「/ S」と私のパラメータを置き換える、ShellExecuteで 'config'モードでスクリーンセーバーを実行するには? OSが私のShellExecuteコールを無効にする
i:= ShellExecute(0, 'open', PChar('c:\temp\test.scr'), PChar('/c'), NIL, SW_SHOWNORMAL)
しかし、SCRファイルが受信したパラメータである「/ S」:私はこの(デルファイ)の呼び出しを使用しています。
私はアプリ(mytest.exe)を内蔵したパラメータを示しています
更新
は私が実験を行いました。 /cをパラメータとしてmytest.exeを起動しました。/cパラメータが正しく受信されました。
次に、mytest.exeの名前をmytest.scrに変更しました。これで、送信されたパラメータはOSによって上書きされます。受信したパラメータは '/ S'になりました。
興味深い!
ダーティフィックス:/ cモードでスクリーンセーバーを実行するCMDファイルを実行すると機能します!
これは、プロセスを開始する間違った方法です。正しい関数はCreateProcess –
はいです。知っている。 (ShellExecuteExはShellExecuteよりも優れたオプションです)。しかし、私はこれを修正するために、早急に(つまり、汚いものも受け入れられる)方法が必要です(私は、ShellExecuteを構築したエコシステム全体を持っています)。 - あるいは、CreateProcessを呼び出すことでこれが解決されると思いますか?私はとにかく来る日にShellExecuteをCreateProcessに置き換えることにします。 – Ampere
CreateProcessは常に実行可能ファイルを開始する方法です。あなたはいつもそうしなければなりません。シェルがあなたを倒してしまわないようにしてください。 –