• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクスプローラの終了と再起動をするには?)

エクスプローラの終了と再起動の方法

このQ&Aのポイント
  • 『エクスプローラ』を終了して再起動する方法について教えてください。
  • 質問者は『エクスプローラ』を終了させるための方法について不明点があります。
  • ウインドウ・ハンドルの取得方法や、WM_CLOSE メッセージ以外の終了方法についても知りたいとのことです。

質問者が選んだベストアンサー

  • ベストアンサー
  • stiffels
  • ベストアンサー率34% (25/72)
回答No.3

言って置いてから自分で試したところ、 うまくいきませんでした>< で、以下の方法でやっと解決。 何度もすみません。吊ってきます。。 DWORD hProc; hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetProcByName("Explorer.exe")); TerminateProcess(hProc, 0); CloseHandle(hProc);

Oh-Orange
質問者

お礼

あらら、上手くいきませんでしたか。→私はまだ試していませんでした。 『OpenProcess』関数でも出来るんですね。 これで正常に終了できたという解釈で良さそうですね。 3つもの方法(回答)、ありがとうございました。

Oh-Orange
質問者

補足

これから『GetProcessesByName』、『TerminateProcess』、『Process32First』、『Process32Next』、『OpenProcess』の 5つの API 関数について調べてみたいと思います。 何か参考になるサイト、本などありましたら助言をお願いします。 以上。これでこの質問も解決しそうです。 stiffels さん、ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • stiffels
  • ベストアンサー率34% (25/72)
回答No.2

すみません。。 GetProcessesByNameはどうもうまくいかないらしいですねw 変わりに以下のような関数を作って代用するとうまくいきます。 unsigned long __stdcall GetProcByName(char* exeName) {   HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);   if((int)hSnap == -1) return 0;   PROCESSENTRY32 ProcEnt;   ProcEnt.dwSize = sizeof(PROCESSENTRY32);   if (Process32First(hSnap, &ProcEnt)){     do {       if (stricmp(ProcEnt.szExeFile, exeName)==0) {         CloseHandle(hSnap);         return ProcEnt.th32ProcessID;       }     } while(Process32Next(hSnap, &ProcEnt));   }   CloseHandle(hSnap);   return 0; } 呼び出しはこんな感じです。 hProcess = GetProcByName("Explorer.exe"); TerminateProcess(hProcess , 0);

Oh-Orange
質問者

お礼

2つ目の回答ありがというね。しかもCサンプルまで。とても嬉しいです。 C言語が主要言語ですから。 今度は『GetProcessesByName』関数ですか。 こちらの方が正しく動作するんですか。 これから試してみます。

すると、全ての回答が全文表示されます。
  • stiffels
  • ベストアンサー率34% (25/72)
回答No.1

ウィンドウハンドルではなく、 GetProcessesByNameでプロセスIDを取得して TerminateProcessで強制終了でいいと思いますよ。 起動するばあいは単純に ShellExecute か WinExecなどで起動すればいいと思います。

Oh-Orange
質問者

お礼

回答ありがというございます。それも3つも。 現在午後5時25分です。 ウインドウ・ハンドルから WM_CL0OSE を送るよりも『GetProcessesByName』と『TerminateProcess』関数の 方が安全って事ですかね?それともこの方法もあるよって事ですか? とにかく情報提供ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A