Windows 7 でエクスプローラーを再起動しようとするプログラムがあります。最初にプロセスを終了してから、再び開始します。
単純?
そのように見えます-実際に機能しているようです。しかし、何かおかしいことに気付きました:プログラム (たとえば、XP の Power Calculator powertoy) を互換モードで起動しようとすると、動作しなくなりました! 何も起こりません -- プロセスが作成され、すぐに終了します。
タスク マネージャーの [ファイル名を指定して実行] ダイアログからエクスプローラーを実行すると、プログラムは正常に実行されます。
どうしたの?!
#include <windows.h>
int main()
{
PROCESS_INFORMATION pi;
STARTUPINFO si = {sizeof(si)};
TCHAR path[] = TEXT("explorer");
DWORD f = 0; //I tried a variety of these flags; didn't work
return CreateProcess(NULL, path, NULL, NULL, FALSE, f, NULL, NULL, &si, &pi);
}
編集1:
- WOW64 リダイレクトが無効になっている 32 ビットであるという事実は、違いはありませんでした。64ビットにしましたが、問題は同じでした。
- 試してみ
ShellExecute
ましたが、うまくいきませんでした。
編集2:
同じ正確なコードが数回機能し、その後再び機能しなくなりました...え?