Вниз
Скачать: 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.043 c
1-1085291576
Cucumber
2004-05-23 09:52
2004.06.06
Как измерить маленький отрезок времени?


1-1085637802
AleKo
2004-05-27 10:03
2004.06.06
изменение данных при построении FastReport


3-1084804174
opoloxai
2004-05-17 18:29
2004.06.06
Пароль *.mdb-файла


14-1085135078
Murkt
2004-05-21 14:24
2004.06.06
Нужна инфа


3-1084453545
Masa
2004-05-13 17:05
2004.06.06
Кодировка в BDE




   Наверх