編集コントロールからマウスポインタがあるウィンドウに、クリップボードやウィンドウハンドルを使わずにテキストを挿入する方法はありますか。編集からマウスポインタがある任意のウィンドウにテキストを挿入
私はカーソルがどこにあるかを見つけるためにデルファイ7
編集コントロールからマウスポインタがあるウィンドウに、クリップボードやウィンドウハンドルを使わずにテキストを挿入する方法はありますか。編集からマウスポインタがある任意のウィンドウにテキストを挿入
私はカーソルがどこにあるかを見つけるためにデルファイ7
GetCursorPos
を使用しています。WindowFromPoint
を呼び出して、カーソルの下のウィンドウを見つけます。EM_REPLACESEL
メッセージを送信して、そのウィンドウの選択内容を置き換えます。何も選択されていなければ、テキストがキャレットに挿入されます。注:これが成功するより一般的に失敗するように準備してください。多くのアプリケーションでは、ウィンドウ編集コントロールは使用されません。より堅牢なソリューションをご希望の場合はUI Automationをご覧ください。
いくつかのコードを要求しました。ここでは、それがどのように見えるかです:カーソル下のウィンドウが編集ウィンドウではない場合
var
Pos: TPoint;
Target: HWND;
...
if not GetCursorPos(Pos) then
RaiseLastOSError;
Target := WindowFromPoint(Pos);
if Target<>0 then
SendMessage(Target, EM_REPLACESEL, ord(True), LPARAM(PChar(Edit1.Text)));
、これは、おそらく、良性となります。
提案がありますか? – Yurios
デビッドのソリューションは、マウスポインタがどこにいてもどこにでも本当に送信したい場合は、素晴らしい(+1)です。私はそれが入力フォーカスを持っているウィンドウに送信する方が便利かもしれないと思っています。入力フォーカスが同じでもかまいませんし、マウスカーソルをタイプしたり読むときにマウスカーソルを押したがっている人なら、まったく違うかもしれません。 –
+1(クリップボードを使用しないようにする)。 –