Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.11.30;
Скачать: [xml.tar.bz2];

Вниз

Копирование в буфер выделенного текста   Найти похожие ветки 

 
leonidus   (2008-10-13 01:42) [0]

Господа подскажите пожалуйста, задача в следующем, моя программа постоянно находится в памяти и устанавливает хук на клавиатуру, при нажатии на горячую клавишу она должна скопировать выделенный текст в буфер обмена. Все работает хорошо если горячая клавиша это Ctrl, но мне нужно чтобы в качестве горячей клавиши могла бы выступать любая клавиша клавиатуры. Процедура копирования текста выглядит следующим образом:

procedure CopySelectionFromActiveWindow;
var
 Wnd: THandle;
begin
 Wnd := GetFocusedControl;
 if Wnd <> 0 then
   begin
    ClearShiftState;
    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);
 end;
end;

как видно это эмуляция нажатия Ctrl+C+C именно по этому видимо и не удается задействовать другую горячую клавишу т.к. она мешает эмуляции этой комбинации, а отправлять событие WMСopy конечно более элегантно но не со всеми окнами работает.

И еще момент, нажатие на горячую клавишу в данном случае подразумевает нажатие и удержание, а не однократное нажатие т.е. хук срабатывает, посылает программе информацию о том что клавиша нажата, программа копирует выделенное но хук продолжает отрабатывать т.к. пока приходят сообщения о том что клавиша нажата программа выполняет еще рад функций.    

Как бороться с этой проблемой?


 
Германн ©   (2008-10-13 01:51) [1]

Очень смахивает на клавиатурного шпиона написанного троешником.
Примите и прочь!
P.S. Может я и не прав. Но...


 
Eraser ©   (2008-10-13 02:50) [2]

> [0] leonidus   (13.10.08 01:42)

1. см. WM_CLIPBOARDUPDATE.
2. см. RegisterHotKey.
3. хуки фтопку, тем более такие.


 
leonidus   (2008-10-13 10:11) [3]

Господа, давайте по все таки по теме, хук будет обязательно и именно такой такой какой он есть, ничего вредоносного программа из себя не представляет.


 
Anatoly Podgoretsky ©   (2008-10-13 13:40) [4]

Ты чего это в Общую пишешь?


 
Anatoly Podgoretsky ©   (2008-10-13 13:42) [5]

Писать ничео не надо, я тебе просто скажу эти волшебные горячие клавиши - Ctrl+C/Ctrl+V


 
leonidus   (2008-10-13 16:16) [6]

Anatoly Podgoretsky а вы с кем разговариваете?


 
leonidus   (2008-10-13 16:36) [7]

Давайте я перефразирую проблему. Как съэмулировать нажатие Ctrl+C или Ctrl+Ins при уже нажатой любой другой клавише на клавиатуре?


 
Anatoly Podgoretsky ©   (2008-10-13 17:07) [8]

> leonidus  (13.10.2008 16:36:07)  [7]

Не надо.


 
leonidus   (2008-10-13 22:30) [9]

Анатолий, вам больше нечего сказать?


 
Eraser ©   (2008-10-13 22:55) [10]

> [7] leonidus   (13.10.08 16:36)

отвечу вопросом на вопрос.
нафига?
поясни - может найдем решение получше.


 
Германн ©   (2008-10-14 01:08) [11]


> Eraser ©   (13.10.08 22:55) [10]

Он уже старался пояснить, но не любят нынче пояснять задачу, увы. Пытаются пояснить сам вопрос. Но не умеют их (вопросы) пояснять кроме как "на пальцах".


 
Наиль ©   (2008-10-14 01:47) [12]

Помоему в твоей программе не хватает KeyDown


 
Германн ©   (2008-10-14 01:54) [13]


> Наиль ©   (14.10.08 01:47) [12]
>
> Помоему в твоей программе не хватает KeyDown
>

В его программе много чего не хватает.Из [0] и [7] это видно.


 
blackman ©   (2008-10-16 20:02) [14]

Симулировать нажатие клавиш для копии и вставки из буфера
http://articles.org.ru/cfaq/index.php?qid=198&catid=50



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.11.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.006 c
2-1224101559
deras
2008-10-16 00:12
2008.11.30
Как вложить в тело письма html код?


15-1222600425
Кое кто
2008-09-28 15:13
2008.11.30
Купил игру


8-1187446480
исследователь
2007-08-18 18:14
2008.11.30
Аналоговые часы


3-1210767541
Beer_Hunter
2008-05-14 16:19
2008.11.30
excel и dbf


2-1224226329
Владик
2008-10-17 10:52
2008.11.30
каскадное удалении записи в таблице





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский