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

Вниз

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

 
leonidus ©   (2006-12-25 09:44) [0]

Господа, подскажите пожалуйста, мне нужно что бы пользователь нажав назначенную в мой программе "горячую клавишу" и удерживая  ее получил выделенный текст из буфера. Т.е. пользователь нажимает скажем Shift и держит, программа копирует выделенный текст и выдает его на экран.

Для копирования выделенного в буфер, я делаю так:

procedure ClearShiftState;
begin
 if GetKeyState(VK_SHIFT) < 0 then
   keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
 if GetKeyState(VK_CONTROL) < 0 then
   keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
 if GetKeyState(VK_MENU) < 0 then
   keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
end;

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, но дело в том, что если "горячая клавиша" Ctrl то все работает прекрасно, но вот если другая клавиша, например Shift то не работает. Думаю это из-за того, что в момент эмуляции нажатия Ctrl+C+C Shift уже нажат, а как это обойти?


 
leonidus ©   (2006-12-25 21:02) [1]

Удалено модератором


 
Eraser ©   (2006-12-25 22:30) [2]

> [0] leonidus ©   (25.12.06 09:44)

не туда копаете.
см. в сторону RegisterHotKey и WM_GETTEXT и т.п.


 
GrayFace ©   (2006-12-26 08:49) [3]

Господа, подскажите пожалуйста, мне нужно что бы пользователь нажав назначенную в мой программе "горячую клавишу" и удерживая  ее получил выделенный текст из буфера.
Значит не RegisterHotKey.

Копать в сторону пункта меню с ShortCut = Shift и WM_COPY. Если пункт в главном меню не должен быть виден, сделай попап, назнач на Form.PopupMenu и в OnContextPopup Handled:=true.


 
leonidus ©   (2006-12-27 08:39) [4]

На сколько я знаю WM_COPY работает только с контролами типа TEdit, TRichEdit и т.п., мне же нужно что бы можно было получать слово из любого конторола где возможно выделение текста, будь то Word, Excel, FireFox или The Bat.



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

Текущий архив: 2007.06.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.068 c
3-1172300426
impuls
2007-02-24 10:00
2007.06.03
как подружить Mysql v 5.0.24 и Delphi7


2-1178972587
SKIPtr
2007-05-12 16:23
2007.06.03
Как запустить процедуру


9-1151830455
Ricks
2006-07-02 12:54
2007.06.03
Воллейбол


10-1133450229
Kot
2005-12-01 18:17
2007.06.03
Открытие xls файла с программным вводом пароля.


2-1179143595
IGray
2007-05-14 15:53
2007.06.03
Как сформировать файл письма в формате ЕML программно?