Главная страница
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.064 c
15-1178869133
ЮЮ
2007-05-11 11:38
2007.06.03
Я ухожу из Дельфи. Если Мастера не дадут :)


15-1178362347
ArtemESC
2007-05-05 14:52
2007.06.03
Шахматы...


9-1152615355
aKirill.INFO
2006-07-11 14:55
2007.06.03
Nebula 2


2-1179381374
MrNew
2007-05-17 09:56
2007.06.03
Всем ЗДОРОВЕНЬКО!


2-1179209569
fvn
2007-05-15 10:12
2007.06.03
TMS TAdvStringGrid