Я пытаюсь создать программу, которая при нажатии горячей клавиши объединяет определенный текст с выбранным текстом из окна. Например: у меня есть текст «захватить текст , выделенный мышью», я выбираю слово «текст» с помощью мыши, и теперь, когда я нажимаю определенную горячую клавишу, он копирует меня в буфер обмена: xxx + текст + ххх.
поэтому мой вопрос, как вернуть слово, выделенное мышью?
спасибо !!
из того, что вы сказали мне, я поняла это:
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Clipbrd;
type
TForm4 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure WMHotkey(var Message: TWMHotKey); message WM_HOTKEY;
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
const
MY_ID = 123;
{$R *.dfm}
procedure TForm4.FormCreate(Sender: TObject);
begin
RegisterHotKey(Handle, MY_ID, MOD_CONTROL, ord('1'));
end;
procedure TForm4.FormDestroy(Sender: TObject);
begin
UnregisterHotKey(Handle, MY_ID);
end;
procedure TForm4.WMHotkey(var Message: TWMHotKey);
lookup_word: string;
begin
clipboard.clear;
if Message.HotKey = MY_ID then
begin
if not AttachThreadInput(GetCurrentThreadId, GetWindowThreadProcessId(GetForegroundWindow), true) then
RaiseLastOSError;
try
SendMessage( GetFocus, WM_GETTEXT, 0, 0 );
lookup_word:= clipboard.astext;
edit1.Text := lookup_word;
Clipboard.AsText := '<font color=blue> edit1.text </font>';
SendMessage(GetFocus, WM_PASTE, 0, 0);
finally
AttachThreadInput(GetCurrentThreadId, GetWindowThreadProcessId(GetForegroundWindow), false);
end;
end;
end;
end;
end.
это нормально?
Мне удается создать свое приложение так, как я намеревался. но я столкнулся с другой проблемой сейчас. это не будет работать в приложении ASPX. он не распознает текст из окна редактирования aspx. Есть ли способ обойти эту проблему?
спасибо!