現在、入力キャレットを持っているコントロールの

ハンドルを取得したいとおもっています。

ウインドウハンドルであれば、
hWnd=GetWindow(GetForegroundWindow(),GW_CHILD);
とすることで、ある程度取得できますが、
この方法は完璧ではないようです。

良い方法はないでしょうか?

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:
  • 終了:2006/07/06 21:48:28
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:llusall No.1

回答回数505ベストアンサー獲得回数61

ポイント60pt

テキストボックスに文字列を入力したいと言う事でしょうか?


Windows APIのGetFocusとSendMessage を使用する様です。

以下、参考になりますでしょうか?

的外れでしたらすみません。


VC■ 他のソフトのテキストボックスに文字(漢字も)を入力するには?

http://www.hey-to.net/ML-archive/vcppML/1999/msg07927.html


DL■ 他のアプリケーションがアクティブな時のGetFocus

Windows APIのGetFocusは、キーボードフォーカスを持っている、自アプリに関連したウィンドウを調べる関数です。他のアプリにフォーカスがある時に単純にGetFocusを実行しただけでは 0 が返ります。

他のアプリにフォーカスがある場合は、以下のようにする必要があります。

http://hp.vector.co.jp/authors/VA003525/tips13.htm


VB■ 他のアプリケーションのフォーカスがあるウィンドウのハンドルを取得

http://hp.vector.co.jp/authors/VA023367/neartech/vb/1.html

他のアプリケーションのフォーカスがあるウィンドウ(Formモジュールでなく、キャレットのあるTextbox等)のウィンドウハンドルを取得します

使い道としては SendMessage API と組み合わせて内容を書き換える事が出来ますが、私が実験してみた結果、Webページのフォームで作成されたテキストボックス (<INPUY TYPE="TEXT">)等は取得出来ませんでした(これが一番やりたかったのに…)

id:mikasa_zzt231

ありがとうございます。

この方法かなり有用でした!

2006/07/06 21:47:57

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません