Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.30;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.005 c
11-1195858230
Jon
2007-11-24 01:50
2008.11.30
Menu messages


6-1195722943
Леонид Федьков
2007-11-22 12:15
2008.11.30
Повторный вызов idHttp1.Get(...)


2-1224760314
azamat
2008-10-23 15:11
2008.11.30
работа с типами данных


15-1222501405
FoxNew
2008-09-27 11:43
2008.11.30
С чего начинать и что нужно для БД SQL-Server + Delphi?


2-1223847739
leonidus
2008-10-13 01:42
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский