Главная страница
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.027 c
6-1081850108
Alexey_
2004-04-13 13:55
2004.06.06
Обработка ошибки компонента TNMHTTP


3-1084646167
SeregaC
2004-05-15 22:36
2004.06.06
Сохранение БД


1-1085637375
ilnarab
2004-05-27 09:56
2004.06.06
Вопрос по ListBox


3-1084456381
Korefey
2004-05-13 17:53
2004.06.06
Передача данных в dbf файл


14-1084882466
DCoder
2004-05-18 16:14
2004.06.06
Вопрос разработчикам этого форума