Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2008, 00:26   #1
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Программа должна принимать данные из чужого приложения(текст), затем отправлять туда изменённый текст.
Всё это делается с помощью ctrl+c, ctrl+v.
Вот собственно сама функция:
Код:
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
var s:string;
begin
old_clp:=clipboard.AsText;
press('A');
sleep(80);
press('C');
sleep(80);
s:=clipboard.AsText;
 if Msg.HotKey = id1 then begin
clipboard.astext:=s+'blablabla';
press('A');
sleep(80);
press('V');
sleep(80);
end;
clipboard.astext:=old_clp;
end;
Первый раз функция прогоняется нормально, всё работает.
Во второй раз выскакивает ошибка "Cannot open clipboard"(на строке s:=clipboard.AsText;), программа закрывается.
Варианты решения?
P.S. пробовал clipboard.open...clipboard.close; пробовал функции для работы с буфером без подключения VCL... не помогло
PPS только что попробовал sendmessage с wm_copy--тоже не помогло

Уточняю: press--процедура, имитирует нажатие клавиш ctrl+переданная(press('C')--нажимает ctrl+c)
Именно из-за этой строки и начинает глючить(если закоментить строку номер 15(press('C')), то всё начинает работать без проблем)
Есть какие-либо варианты решения это проблемы?

Последний раз редактировалось Stilet; 21.05.2009 в 11:19.
NikLik вне форума Ответить с цитированием
Старый 23.06.2008, 22:48   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

NikLik, ну вот прочитайте сами что Вы написали:

Цитата:
Уточняю: press--процедура, имитирует нажатие клавиш
..............
Именно из-за этой строки и начинает глючить(если закоментить строку номер 15(press('C')), то всё начинает работать без проблем)
Ну и как обсуждать то, чего нет? Это даже при том, что лично я сильно сомневаюсь в целесообразности обмена данными через clipboard...
B_N вне форума Ответить с цитированием
Старый 23.06.2008, 22:54   #3
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

проблема всё ещё остаётся, ибо если убрать эту строку-- теряется смысл программы, заменить её подобными(например, нажатие правой клавиши мыши--потом выбрать пункт "копировать")--таже самая ситуация.
А как ещё можно обмениваться данными? С совершенно сторонними программами?
NikLik вне форума Ответить с цитированием
Старый 23.06.2008, 23:18   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

NikLik, ещё раз - что и как именно делает процедура press никто, кроме Вас в точности не знает, у какого окна при всём этом фокус - можно только догадываться, хотя и есть подозрение, что это всё время одно и то же окно, зачем именно выбран обмен через clipboard - непонятно, меняться текстом между окнами, в том числе и не понимающими ^C и ^V, можно с успехом через WM_GETTEXT/WM_SETTEXT. Одни вопросы.
B_N вне форума Ответить с цитированием
Старый 24.06.2008, 00:18   #5
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Возьмём такой пример.
Я набираю что-то в аське, затем жму ctrl+e, моя программа обрабатывает это событие
wm_gettext ничего не дал(пробовал передавать и getforegroundwindow, и windows.getfocus)
Варианты?
NikLik вне форума Ответить с цитированием
Старый 24.06.2008, 00:36   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от NikLik Посмотреть сообщение
wm_gettext ничего не дал(пробовал передавать и getforegroundwindow, и windows.getfocus)
Варианты?
http://programmersforum.ru/showpost....75&postcount=9
http://programmersforum.ru/showpost....7&postcount=16
B_N вне форума Ответить с цитированием
Старый 24.06.2008, 00:59   #7
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Большое спасибо!
Первая тема--помогла.
NikLik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как очистить буфер обмена? StasSv Microsoft Office Excel 2 11.08.2008 17:38
работа с буфером данных alexs2141 Общие вопросы C/C++ 5 06.06.2008 12:45
Скопировать в буфер обмена Dj_smart JavaScript, Ajax 8 15.05.2008 19:16
буффер обмена experts91 Win Api 2 07.10.2007 15:47
Перехват Буффера обмена fediko Win Api 2 02.04.2007 21:52