2

別のプログラムで、キャレットが入っているテキストボックスのハンドルを取得したい。私が見つけることができるのは、「EnumChildWindows」を使用してウィンドウ内のコントロールのリストを取得し、「編集」コントロールを検索する方法だけです..(テキストボックスを持つすべてのプログラムでは機能しません)。キャレットが入っていて、ユーザーが書き込んでいるものを見つける方法がわかりません。本当に行き詰まってしまいました.. :( たくさんありがとう、Shiran。

4

1 に答える 1

1

いくつかの pinvoke フープをジャンプする必要があります。GetForegroundWindow() から開始して、アクティブなトップレベル ウィンドウのハンドルを取得します。次に、GetThreadWindowProcessId() を使用して、そのウィンドウを所有するスレッドの ID を取得します。最後に GetGUIThreadInfo() を実行すると、スレッドが所有するウィンドウに関する一連の情報が返されます。GUITHREADINFO.hwndCaret メンバーは、キャレットを所有するウィンドウへのハンドルを提供します。テキストボックスである必要はありません。

必要な宣言については、pinvoke.net にアクセスしてください。

于 2010-11-28T17:29:13.077 に答える