Текущий архив: 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