Главная страница
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.057 c
3-1173319054
Antoxa2005
2007-03-08 04:57
2007.06.03
Вопросик на зание SQL. (Дамы с праздником 8 марта)


6-1164277605
@lexR
2006-11-23 13:26
2007.06.03
список пользователей подключенных к домену


15-1178614834
Juice
2007-05-08 13:00
2007.06.03
QunatumGrid


15-1178728994
Виталий______
2007-05-09 20:43
2007.06.03
Вопрос по Oracle Forms Builder


2-1179129401
Leshas0
2007-05-14 11:56
2007.06.03
поиск подстроки POS