Вниз
Скачать: CL | DM;

Помогите разобраться с вставкой текста   Найти похожие ветки 

← →
kalmykovser   (2004-04-25 12:20) [0]

Уважаемые Мастера Delphi,
Мне нужно сделать так чтобы при нажатии клавиши текст вставлялся из буфера обмена в объект (TEdit, TRichEdit и др.) имеющий фокус.
Вот код которым я определяю Handle объекта имеющего фокус: Procedure InsertText;
var
dwTargetOwner :DWORD;//указатель на подключаемый процесс
dwThreadID :DWORD;//указатель на текущий процесс
Result:longbool;
J :Integer;
ClipBuffer :String;
begin
// Подключение потока другого окна
dwTargetOwner := GetWindowThreadProcessId(GetForegroundWindow,nil);//указатель на подключаемый процесс
dwThreadID := GetCurrentThreadId;//указатель на текущий процесс
//if (dwTargetOwner <> dwThreadID) then begin // если не один и тот же процесс
Result := AttachThreadInput(dwThreadID, dwTargetOwner, TRUE);//подключение
//Handle объекта в активном окне я узнаю с помощью функции GetFocus
//Текст в буфер вставляеться такой командой
//Clipboard.AsText := "Delphi 6";
//И посылаю ему команду чтобы он вставил текст из буфера обмена windows
SendMessage(GetFocus,WM_PASTE,0,0);
if (Result) then AttachThreadInput(dwThreadID, dwTargetOwner, FALSE);//отключение
end;


Вопрос :
1. Почему текст не вставляеться в программы Microsoft Office (Exel,Word) в чём проблема ? Как правильно
отдавать другим программам команду PASTE ?
2. Как сохранить данные в буфере обмена на время работы этой процедуры чтобы потом восстановить их в буфере.


← →
Cobalt ©   (2004-04-25 22:12) [1]

1) Возможно, придётся идти на дополнительные ухищрения, например если вставка требуется в Ворд или Эксель, то особым образом к ним подключаться, например, через COM-сервера...

2) Сохранять эти данные во временной структуре. Смотри подробности в справке.

P.S. А ты молодец, что задумался о том, что буфер может использоваться ещё кем-то.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.019 c
4-1082705450
lock95
2004-04-23 11:30
2004.06.06
Поиск компонентов на форме


14-1084631415
GuAV
2004-05-15 18:30
2004.06.06
Exeшник - на дельфе, на С билдере или ещё на чм-то как узнать.


4-1082966778
mRodion
2004-04-26 12:06
2004.06.06
WM_ACTIVE и дочерние окна MDI приложения


14-1084563248
ИМХО
2004-05-14 23:34
2004.06.06
Такое возможно?


1-1085416989
opium
2004-05-24 20:43
2004.06.06
Проблема с потоком!




   Наверх