Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с эмуляцией ctrl+c 
:(
    Опции темы
leonidus
Дата 13.10.2008, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2005

Репутация: нет
Всего: нет



Нужно чтобы по нажатию горячей клавиши мое приложение скопировало в буфер выделенный текст, для этого я делаю эмуляцию нажатия Ctrl+C:

keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(Ord('C'), 0, 0, 0);
keybd_event(Ord('C'), 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);

Однако есть одна тонкость, суть программы такова, что нажатие на горячую клавишу подразумевает ее удержание в течении некоторого времени. Так вот, все работает если горячая клавиша это CTRL, однако если выбрана и удерживается другая клавиша например Shift, то эмуляция не проходит. Как быть?
PM MAIL   Вверх
AntonN
Дата 14.10.2008, 00:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 3
Всего: 18



leonidus, а послать сообщение окну не подойдет? smile
Код

SendMessage(Control.Handle, WM_Copy, 0, 0);



--------------------
user posted image
PM MAIL WWW   Вверх
leonidus
Дата 14.10.2008, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2005

Репутация: нет
Всего: нет



AntonN это будет работать далеко не везде, а Ctrl+C - 100% надежно.
PM MAIL   Вверх
BaD_SeCt0R
Дата 14.10.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 4
Всего: 18



Цитата(leonidus @  14.10.2008,  00:47 Найти цитируемый пост)
AntonN это будет работать далеко не везде, а Ctrl+C - 100% надежно.

ИМХО, скорее верно обратное утверждение.


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Poseidon
Дата 14.10.2008, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(leonidus @  13.10.2008,  21:43 Найти цитируемый пост)
Нужно чтобы по нажатию горячей клавиши мое приложение скопировало в буфер выделенный текст, для этого я делаю эмуляцию нажатия Ctrl+C:

А не проще ли работать на прямую с буфером обмена с помощью Clipboard?



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
BaD_SeCt0R
Дата 14.10.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 4
Всего: 18



leonidus, в некоторых программах сохранилось еще DOS'овское Ctrl+Insert


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
leonidus
Дата 14.10.2008, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2005

Репутация: нет
Всего: нет



Ну ок, и все таки как мне решить проблему то?
PM MAIL   Вверх
BaD_SeCt0R
Дата 14.10.2008, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 4
Всего: 18



Тебе ж сказали уже, юзай Clipboard, например или сообщения Windows


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
leonidus
Дата 14.10.2008, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2005

Репутация: нет
Всего: нет



Не совсем понял, что значит юзать Clipboard, этот класс позволяет извлекать данные из буфера обмена моя же задача поместить их туда.
PM MAIL   Вверх
mr.Anderson
Дата 14.10.2008, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



leonidus, а кто сказал, что туда их помещать нельзя?

Добавлено через 1 минуту и 46 секунд
Вот один пример: http://www.codenet.ru/progr/delphi/stat/ClipBoard.php .
И вот второй: http://delphi.about.com/od/vclusing/a/tclipboard.htm .

Добавлено через 2 минуты и 34 секунды
Вот еще, кстати, третий, может, будет полезно: http://www.sources.ru/delphi/system/clipbo...orystream.shtml .


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
leonidus
Дата 14.10.2008, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2005

Репутация: нет
Всего: нет



mr.Anderson это все к сожалению не то, как я уже писал, текст может быть выделен в любом контроле в любом приложении и я не вижу более надежного способа получить этот текст чем по горячей клавише сэмулировать Ctrl+C, или если я ошибаюсь прошу укажите такой способ.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1089 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.