どうも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の引数は、下記のようになっています。
- クラス名
- ウィンドウ名
ですので、クラス名かウィンドウのタイトルから検索を行います。 Visual StudioがPro版の為、Spy++を使用して、クラス名を割出しましたが… これSpy++なしでできるんですかね…?
ウィンドウ名からハンドルを取得して、そのハンドルからクラスを割出すとか?できるのか??(試してない)