掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
他アプリで範囲選択している文字列を取得するには? (ID:16731)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
他アプリで範囲選択している文字列を取得するには、どのようにしたらいいのでしょうか? ネット上を調べてみて、いろいろ試してはみましたが、 利用するメッセージを間違えているのか、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.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.