iPhone の Web ブラウザと同じように、必要なときにポップアップするキーボードを作ろうとしています。Windows では、ユーザーが任意のウィンドウでテキスト フィールドをアクティブにしたときに発生するはずです。
検索した後、EnumWindows と EnumChildWindows を試して、すべてのコントロールを列挙する予定です。それが機能する場合 (疑わしい)、どのコントロールがアクティブで、そのコントロールがテキスト入力を受け入れるかどうかをどのように判断できますか? または、私がやろうとしていることを達成するためのより良い方法はありますか?
プロジェクトは C++ と Win32 API を使用します。
編集: rene のコメントに基づいて、SetWinEventHook 関数と EVENT_OBJECT_FOCUS を使用してアクティブな (子) ウィンドウ ハンドルを取得できるようになりました。しかし、ユーザーがテキストを入力できるウィンドウかどうかはまだわかりません。
GetGUIThreadInfo を呼び出し、返された hwndCaret ハンドルを SetWinEventHook コールバックによって返されたウィンドウと比較すると、部分的に機能します。たとえば、メモ帳や Chrome のアドレス バーでは機能しますが、MS Visual Studio の子ウィンドウなどでは機能しません。