私は、16ビットプログラムとの互換性の問題を修正するための小さなプログラムを作成しています。この修正プログラムは、エクスプローラがプログラムの一部のパレットをオーバーライドするため、explorer.exeを閉じることです。その後、エクスプローラを再度開きます。タスクバー(explorer.exe)が強制終了された後に再度開きますか?
の.batファイルを使用して、それが動作します:
@ECHO OFF
taskkill /f /IM explorer.exe
EmStraditionX.exe
start /B explorer.exe
それはダウンロードして余分なファイルを必要とするため、この方法は、理想的ではありません。シンプルさのために、私がC#互換プログラム以上のものを配布することは不可能であると仮定します。
私の最初の考えはちょうどProcess.Start("explorer.exe")
でしたが、これはうまくいかず、代わりにエクスプローラウィンドウに「Libraries」フォルダを開いて、タスクバーを再び表示させませんでした。
次に、バッチファイルと同じコマンドを使用しようとしましたが、これは次のようになります。Process.Start("cmd.exe", "/C start /B explorer.exe")
、もう一度動作しませんでした。
どのように私はC#からタスクバーを再び開くことができるか知っていますか?
ありがとう、 Ruirize。
を動作させるだろう「エクスプローラを殺します。」互換性シムを調べましたか? (おそらく、アプリケーションの実行中にAero Basicにカラースキームを強制することを余儀なくされたでしょうか?) – josh3736
あなたは、後者の2つのアプローチがうまくいかなかったと言います。何かがまったく立ち上がったのですか?また、Process.Startの他のバリエーション(つまり、より高度なオプションを起動できるようにするもの)を試してみましたか? – reuben
@ josh3736:これは修正です。私たちは、プログラムが割り当てられたパレットを確認していました.Windows 7では16ビットアプリケーションを別の環境(エミュレートすることを想定しています)で実行しているため、タスクバーの最初のものより優先されます。エクスプローラを閉じた瞬間、プログラムは再びパレットを制御しました。 –