lisz-works

技術系だけど関係ないこと多い系ブログ

【C++】他のアプリをクローズする(落とす)

【スポンサーリンク】

プログラムのソースコード

どうもlisです。
Visual Studioでアプリを作っている際、他のアプリをクローズする方法を調べたので書いていきます。

環境

  • Windows7 Pro 64bit
  • Visual Studio 2010 Pro
  • Windowsフォームアプリケーション

ソース

// インクルード
#include <Windows.h>
#pragma comment( lib, "shell32.lib" )
#pragma comment( lib, "user32.lib" )
// 処理
// 対象ハンドルを取得する
HWND handle = FindWindow(L"Notepad", NULL);
// または、handle = FindWindow(NULL, L"無題 - メモ帳");

// 終了メッセージを送る
PostMessage(handle, WM_CLOSE, 0, 0);

解説

処理手順としては、対象アプリのウィンドウハンドルを取得し、そいつに終了メッセージを送ってあげることで、終了できるようです。

FindWindowの引数は、下記のようになっています。

  1. クラス名
  2. ウィンドウ名

ですので、クラス名かウィンドウのタイトルから検索を行います。 Visual StudioがPro版の為、Spy++を使用して、クラス名を割出しましたが… これSpy++なしでできるんですかね…?

ウィンドウ名からハンドルを取得して、そのハンドルからクラスを割出すとか?できるのか??(試してない)