キーカーソルの位置取得について


deldel  2014-10-09 00:29:40  No: 46733

マウスカーソルの位置を取得するのなら、
GetCursorPos
という関数がありますが、同様にキーのカーソル位置を取得する方法はないでしょうか?

やりたいことは、例えばメモ帳やExcelなどで文章を書いている最中に、
ホットキーを押すなどして、自作のアプリを起動し、その位置を、
キーカーソルのすぐ右側に移動させたいのです。

マウスならアプリに関係なくスクリーン全体の座標値を取得できますが、
キーの方はそういう訳にもいかないので、無理なのかなとは思うのですが・・・


tor  2014-10-09 01:19:26  No: 46734

エディットボックスなどでチカチカ点滅している縦棒のことですね?ヲサあの子はキャレットィテゥくんといいます。知っていると役に立つので憶えてやってください。
というわけでヲサ「「ヲサでヘルプを検索すると……ヤヘやヤメナであればテミプロパティで参照できるようですね。

必ずしも自作アプリのナではなく、任意のウィンドウにキャレットがある状態でその座標を取りたいのならヲサヌテミヲサを使います。
で、これで取れる座標はクラアイント座標なので、さらに現在キャレットがあるウィンドウのハンドルを調べてィヌニゥスクリーン座標に変換するィテヤモゥ必要がありそうですね。

さらに別アプリの場合、たぶん素直にヌニできないのでチヤノする必要があると思います。このキーワードで検索すれば情報が出てくると思うので詳しくはそちらで。
スススススススススススススススススススススススススススススススススススススススス
ニコ 
トコ イーアエッアーッークィ水ゥ アキコアオコオケ  書込者ノト:ロ 」 ァ」ハノ

 ン

ちなみに、テミやヌテミで得られるのはたしか左上の座標だったと思います。で、キャレットのサイズを後から知る方法はないようです。じゃあ右や下の座標が欲しかったらどうするんだ。

ということでさらに調べてみたら、ヌヌユノヤノィゥヲサでとれるヌユノヤネメナチトノホニマの中のテが使えるようですね。参考までに。
スススススススススススススススススススススススススススススススススススススススス
ニコ 
トコ イーアエッアーッーケィ木ゥ アーコイキコオキ  書込者ノト:ロ 」 ァ」ハノ

 ン

それでは実験実験……

ッッヲサ指定したフォームをキャレットの右隣に移動する
ヲサヘニヤティコヲサヤニゥサ
ヲサヲサ
ヲサヲサヲサヲサコヲサヤヌユノヤネメナチトノホニマサ
ヲサヲサヲサヲサノコヲサトラマメトサ
ヲサヲサヲサヲサコヲサヤミサ

ヲサヲサノヲサコスヲサーサヲサッッヲサーを指定した場合は現在のフォアグラウンドスレッドが対象になる
ヲサヲサッッヲサキャレットを持っている=フォアグラウンドスレッドなのでこれで十分
ヲサヲサッッヲサ任意のウィンドウを対象にしたい場合は、ヌラヤミノでスレッドノトを取ること

ヲサヲサョモヲサコスヲサモマィゥサ
ヲサヲサヲサヌヌユノヤノィノャヲサゥヲサ
ヲサヲサヲサィィョニヲサヲサヌユノ゜テチメナヤツフノホヒノホヌゥヲサヲサヲサヲサーゥヲサヲサッッヲサキャレットが表示されていることを確認
ヲサヲサ
ヲサヲサヲサヲサッッヲサ右上の座標を取ってスクリーン座標に変換
ヲサヲサヲサヲサヲサコスヲサミィョテョメャヲサョテョヤゥサ
ヲサヲサヲサヲサヲサラョテヤモィョテャヲサゥヲサ
ヲサヲサヲサヲサ
ヲサヲサヲサヲサヲサヲサッッヲサその位置にフォームを移動
ヲサヲサヲサヲサヲサヲサョフヲサコスヲサョリサ
ヲサヲサヲサヲサヲサヲサョヤヲサコスヲサョルサ
ヲサヲサヲサヲササ
ヲサヲササ

スススススススススススススススススススススススススススススススススススススススス
ニコ 
トコ イーアエッアーッーケィ木ゥ アウコオウコーー  書込者ノト:ロ 」。ィ ン

さん、色々とありがとうございました。
上記コードでばっちり思い通りの動作を実現できました。
追加で
ヲサョリヲサコスヲサョリヲサォヲサィョテョメヲサュヲサョテョフゥサ
ヲサョルヲサコスヲサョルヲサォヲサィョテョツヲサュヲサョテョヤゥヲサヲサイサ
とすると、なかなか良い位置に移動できました。
今回はかなり勉強になりましたヲサィ゜゜ゥ

ただ、ブラウザ上の掲示板等の入力領域にはキャレットが無いのか、
上記ではできませんでしたが、これは仕方ないみたいですねぇ・・・
(ユメフの入力欄には反応しましたが)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加