Форум: "WinAPI";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
ВнизКопирование выделенного текста в буфер Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c