はじめまして.いきなりの質問で申し訳ありません.
画面に表示されているテキストに対し,現在のカーソル位置(もしくはクリック位置)
にある文字を取得する方法を教えてください.
過去の質問から,テキストボックスの現在行を取得する方法がわかったので,
クリック位置にキャレットを移動し,そこにある文字列を取得する,という方法を調べました.
しかし,それでは,
(1)カーソル付近の一文字(もしくは2,3文字)のみを取得することができない
(2)ブラウザやメモ帳に表示しているテキストの場合はは取得できない
という問題が解決できません.(1)は範囲選択の操作をAPIでシミュレートすれば
できるのでは,と思っていますが(2)はわかりません.
よろしければ,解決法を教えていただけないでしょうか?
もっといい方法もありそうですけど…。
ブラウザの"この手の入力ができる"場所にフォーカスがあることを期待して…。
SendKeysやKeybd_eventで、ブラウザに向かってShift+→をおくって、そのあとCtrl+Cを送れば…。
Operaでは入力フォームでしか使えない(もしかしたらほかのブラウザでも使えない)ですけど。
あとはあらかじめ選択してもらうことを期待して、Ctrl+Cだけ送るとか。
スクリーンキャプチャして、得た画像から解析できないこともないかもしれないですけど…。
質問者です.お返事ありがとうございます.
>SendKeysやKeybd_event
なるほど,ある程度の操作をユーザにやらせてしまう,というのは1つの手ですね.
しかしIEとNetscapeでためしてみたら,入力エリア以外の文章を取得
することはできないようでした.
(Shft+→をしたくても,カーソル自体が表示できませんから)
実現には,ドラッグ操作までシミュレートする必要がありそうです.
>スクリーンキャプチャして、得た画像
これは思いつきませんでした.
しかし対象がブラウザの場合背景やフォントサイズも様々ですから,
認識率はかなり落ちるのでは,と思うのですが・・・.
単に私が画像認識の世界を知らないだけかもしれませんが・・・.
> しかしIEとNetscapeでためしてみたら,入力エリア以外の文章を取得
することはできないようでした.
ううー、やはりそうでしたか…。
じゃあ…、そうですねぇ、マウスを動かさせてみては?
左クリック、押したまま右(左)にドラッグとか…。
いろいろ問題がありそうですけど…。
あと、Operaでは、クリップボードにコピーすると、
OSに関係なく、Unicode文字列をコピーしてしまいます。
完全にやるなら変換も必要かも。
> >スクリーンキャプチャして、得た画像
> これは思いつきませんでした.
こういう方法を取る人もいるかなぁと、ちょっとじょうだんだったんですけど…^^;
でも、ブラウザのフォント(IE,NNならレジストリ、OperaならUTF-8コードのiniファイルから)を読みこんで、
そのフォントで表を作って比較するとか(処理時間かかりそぉ…)、
あらかじめできるだけ太い文字を比較に使うとか、
方法はあるかもしれませんね…。
たかみちえ様,ありがとうございます.
>左クリック、押したまま右(左)にドラッグとか…。
やはり,範囲選択自体はユーザにやらせるのが,適当なようです.
実は,辞書ソフトの「Babylon」なんかが理想に近い動作をしているので,
知られた方法があるのでは,と思ったのです.
しかしどうやら,そう簡単にはいかなそうです.