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

Вниз

Клавиатурные комбинации в НЕАКТИВНОЕ окно...   Найти похожие ветки 

 
Olorin ©   (2002-07-24 11:06) [0]

Поднимал я раз эту тему и так и не получил ответа, поиски в доках ничего не дали... может сейчас кто чего нарыл?
Нужно слать неактивному окну комбинации клавишь типа:
Ctrl+A
Ctrl+F1
Ctrl+Shift+A
Ctrl+Shift+F1
Ctrl+Alt+Shift+A
Ctrl+Alt+Shift+F1
Нарыл тут пример на ассемблере но там можно только ОДНУ неуправляющую клавишу слать... :-(
Любые идеи принимаются...


 
Cyrill   (2002-07-24 14:58) [1]

Ставь hook и обрабатывай сообщения клавиатуры.


 
Song ©   (2002-07-24 16:00) [2]

Ну дык SendMessage()


 
Proton ©   (2002-07-24 16:29) [3]


> Song © (24.07.02 16:00)
> Ну дык SendMessage()

+
Wm_keYdowN + wm_keyup


 
Юрий Зотов ©   (2002-07-24 16:33) [4]

См. RegisterHotKey в API. Либо хук.


 
Proton ©   (2002-07-24 18:33) [5]


> Cyrill (24.07.02 14:58)
> Ставь hook и обрабатывай сообщения клавиатуры.


> Юрий Зотов © (24.07.02 16:33)
> См. RegisterHotKey в API. Либо хук.

не перехватывать а слать !!!


 
VID ©   (2002-07-24 22:32) [6]

ну если принимаются любые идеи...
http://delphibase.endimus.com/?action=viewfunc&topic=sysiface&id=10242


 
Юрий Зотов ©   (2002-07-24 22:57) [7]

> не перехватывать а слать !!!

Вопрос я читал.

Ну а если немного подумать? Ну хоть совсем чуть-чуть?

Клавиатурный ввод, понятное дело, всегда идет в активное окно. Следовательно, чтобы направить его в неактивное, его надо сначала перехватить.

Это может сделать либо сама система (после Вашего RegisterHotKey), либо глобальный хук (если нужен глобальный перехват). И НИЧТО НЕ МЕШАЕТ ЭТОМУ ХУКУ ПРОДУБЛИРОВАТЬ (или перенаправить) ПЕРЕХВАЧЕННЫЙ ВВОД В ЛЮБОЕ ВАШЕ ОКНО.

Так что - а если немного подумать? Ну хоть совсем чуть-чуть?

А уж потом ставить троекратные восклицания.


 
Proton ©   (2002-07-25 05:43) [8]


> Юрий Зотов © (24.07.02 22:57)
> > не перехватывать а слать !!!
> А уж потом ставить троекратные восклицания.

вопрос задавал не я
про сказанное вами я знаю
думаю что смысл вопроса не перенаправить а все таки слать
то есть postmessage(windowghandle,wm_keydown,...);]
думаю не стоит на меня изза знаков восклицания бочку гнать - мы ведь взрослые люди


 
Юрий Зотов ©   (2002-07-25 09:21) [9]

> Proton

А разве не ясно, что проблема не в том, КАК слать (клавиатурные сообщения - не тайна), а в том, КОГДА слать и ОТКУДА слать?

Послать своей программе комбинацию Ctrl+A - это даже не вопрос. Вопрос в том, КАК определить, что юзер нажал этот аккорд, если в момент нажатия программа НЕАКТИВНА.

А Вы говорите "WM_KEYDOWN". Это, извините, и ежу понятно, а вот КОГДА и ОТКУДА? Вот в чем проблема-то.


 
Набережных С.   (2002-07-25 15:11) [10]


> Olorin ©

Попробуй так:

procedure TForm2.Button1Click(Sender: TObject);
var
KS:TKeyboardState;
begin
GetKeyboardState(KS);
KS[VK_CONTROL]:=KS[VK_CONTROL] or $80;
SetKeyboardState(KS);
SendMessage(Form1.Handle,WM_KEYDOWN,Ord("A"),0);
SendMessage(Form1.Handle,WM_KEYUP,Ord("A"),0);
KS[VK_CONTROL]:=KS[VK_CONTROL] and $7F;
SetKeyboardState(KS);
end;


 
Proton ©   (2002-07-25 17:35) [11]

событие "когда" может происходить и в любой другой момент, например по завершению работы некоторого цикла, по таймеру, и т. п.
а поскольку автор вопроса на этом внимания не уточнил думаю заострять внимание на этом не стоит (мы же не будем ему объяснять как работает таймер)
думаю автор понял все что ему надо
а при необходимости уточнит вопрос



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

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

Наверх




Память: 0.49 MB
Время: 0.013 c
14-24190
AL2002
2002-07-11 16:57
2002.08.08
Какой предел температуры для нормальной роботы компьютера?


1-24005
msalex
2002-07-28 14:05
2002.08.08
Reach Edit: найти положение текстового курсора по положению кур.


1-24063
Sub
2002-07-26 09:50
2002.08.08
Задача


14-24220
Anatoly Shkodin
2002-07-14 11:35
2002.08.08
Спонсор-рекламодатель


1-24065
Andrew_
2002-07-26 10:52
2002.08.08
Неправильное выравнивание создаваемых компонентов на лету