制作:KrK (Knuth for Kludge)
#include <windows.h> // Win32API
//-------------------------------------------------
// フォーカスがあるウィンドウハンドルを取得
// 作成 20140211 KrK
// 戻り値:フォーカスウィンドウハンドル
//-------------------------------------------------
HWND GetFocusWindow()
{
HWND hForegroundWnd; // 最前面ウィンドウ
HWND hFocusWnd; // フォーカスがあるウィンドウ
INT foregroundID; // 最前面ウィンドウのスレッドID
DWORD processID; // プロセスID
DWORD currentID; // カレントウィンドウのスレッドID
// カレントウィンドウのスレッドIDを取得
currentID = GetCurrentThreadId();
// 最前面ウィンドウのスレッドIDを取得
hForegroundWnd = GetForegroundWindow();
foregroundID = GetWindowThreadProcessId(hForegroundWnd, &processID);
// フォーカスのあっているウィンドウがあった
if (AttachThreadInput(foregroundID, currentID, TRUE))
{
// ウィンドウを最前面に
SetForegroundWindow(hForegroundWnd);
// フォーカスがあるウィンドウハンドルを取得
hFocusWnd = GetFocus();
// 操作できるようにする
AttachThreadInput(foregroundID, currentID, FALSE);
}
// フォーカスのあっているウィンドウがなかった
else
{
hFocusWnd = NULL;
}
// フォーカスがあるウィンドウハンドルを返す
return hFocusWnd;
}
// フォーカスがあるウィンドウハンドルを取得
HWND hFocusWnd = GetForegroundWindow();
// フォーカスがあるウィンドウがあった
if (hFocusWnd != NULL)
{
~;
}