他アプリで範囲選択している文字列を取得するには?

解決


API  2005-07-30 04:45:47  No: 16731

他アプリで範囲選択している文字列を取得するには、どのようにしたらいいのでしょうか?

ネット上を調べてみて、いろいろ試してはみましたが、
利用するメッセージを間違えているのか、APIの使い方がまずいのか検討が付かない状態です。
ちなみに、他アプリで選択している文字列は、メモ帳のもので試しました。
また、取得するタイミングは、あるホットキー(CTRL + "1")を押した時に行います。
※ホットキーを使用するにあたり、
  "ホットキー登録コンポーネント GlobalHotkey"コンポーネントを使用させていただきました。
  http://takamichie.at.infoseek.co.jp/warehouse/components/

どうかよろしくお願いいたしますm(_ _)m

◆試してみたソースです。
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, GlobalHotKey, ComCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    GlobalHotkey0: TGlobalHotkey;

    procedure FormCreate(Sender: TObject);
    procedure GlobalHotkey0Items0Hotkey(Sender: TObject; Modifiers,
      virtkey: Word);

  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  DoHotKey0: TAHotkey;

begin
  //ホットキー用の設定
  GlobalHotkey0.Enabled := true;
  DoHotKey0 := Hotkey(Ord('1'), [modCtrl]);       //ホットキー:CTRL + '1'
  GlobalHotkey0.Items.Item[0].Hotkey := DoHotKey0;

end;

procedure TForm1.GlobalHotkey0Items0Hotkey(Sender: TObject; Modifiers,
  virtkey: Word);
var
  lhwnd: HWND;

  str: String;

begin
  //他アプリのウィンドウハンドルを取得
  lhwnd := GetTopWindow(GetForegroundWindow());

  //選択範囲の文字列を取得
  SendMessage(lhwnd,
              EM_GETSEL,          //ネット上で見つけた"EM_GETSELTEXT"が無いので、これで試して見ました。
                                  //しかし、どうも違うようですね。
              0,
              Longint(str));      //このあたりもよく分かっていないみたいです。

  //取得した文字列をラベルで表示
  Label1.Caption := str;

end;

end.


半ダースべーだ  2005-07-30 06:17:50  No: 16732

これは、ないな。
なぜそう考えるかというと、ウィンドウメッセージに該当するものがないからじゃ。皆もそうおもっておるわい。


API  2005-07-30 06:33:26  No: 16733

そうでしたか・・・。

出来ると勘違いしていたんですね。
それでも、それが分かっただけでも良かったです。

ありがとうございました。


Fusa  2005-07-31 00:28:15  No: 16734

普通、Ctrl+Cを送信してテキストコピーして
それをアプリから見るんじゃないでしょうか。


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

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






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