Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.06;
Скачать: 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 вся ветка

Текущий архив: 2004.06.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.048 c
8-1080551905
Sauron_ua
2004-03-29 13:18
2004.06.06
Размери текстур в DirectX


14-1085313677
GanibalLector
2004-05-23 16:01
2004.06.06
почему так ???


3-1084777634
Mitrofan
2004-05-17 11:07
2004.06.06
Динамический отчет


1-1085642562
Романов Р.В.
2004-05-27 11:22
2004.06.06
Ошибка при создании объекта MSMAPI.MAPISession


1-1085570404
deepgray
2004-05-26 15:20
2004.06.06
DBGrid и вертикальная полоса прокрутки