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

Вниз

Можно сделать перехват клавиш в проге с активным MessageBox?   Найти похожие ветки 

 
Aleksandr ©   (2004-04-08 19:14) [0]

Для Виндов понятно - нужно дллу делать. А для одной программы? Мне надо, чтобы при появлении окна MessageBox юзер определенным нажатием мог сбросить мне информацию, которая содержится в программе, до его закрытия.


 
Fay ©   (2004-04-08 19:18) [1]

if MessageBox(Application.Handle, "Послать чё-то автору?", "????", MB_YESNO) = IDYES then


 
Aleksandr ©   (2004-04-08 19:28) [2]

Зачем еще один MessageBox? Мне нужно, чтобы он, не закрывая уже активного MessageBox"a, нажал сочетание клавиш, отправляющее информацию, а затем уже тыркал кнопки на сообщении.


 
Fay ©   (2004-04-08 19:30) [3]

Я просто предложил оформить так "уже активный" MessageBox...


 
Юрий Зотов ©   (2004-04-08 20:36) [4]

> Aleksandr ©   (08.04.04 19:14)  
> Для Виндов понятно - нужно дллу делать. А для одной программы?

А для одной программы можно написать и поставить точно такой же хук, но не в DLL, а прямо в этой программе.
См. SetWindowsHookEx.


 
Style ©   (2004-04-08 20:51) [5]

Aleksandr ©

Еще можно попробовать создать отдельную нить
и в ней использовать GetKeyState или GetKeyboardState..


 
Aleksandr ©   (2004-04-14 12:04) [6]

2 Юрий Зотов : Прямо в основном потоке?

2 Style : Нада попробовать.


 
Aleksandr ©   (2004-04-14 13:19) [7]

Получилось с GetKeyState. Только с нажатием Ctrl какая-то проблема:

procedure TKeyHookThread.Execute;
var
 i : smallint;
 W : integer;
begin
 repeat
   w:=VK_F12 OR VK_Control;
   i:=GetKeyState(w);
   if (i=1) AND Assigned(FOnKeyDown) then
     FOnKeyDown(FKeyMsg)
 until Terminated
end;

Делаешь w=VK_F12 - срабатывает по нажатию F12, как положено, а делаешь, как в коде - все время возвращает 1, хотя клавиш и близко не нажимал...


 
Aleksandr ©   (2004-04-14 15:10) [8]

Епрст... И по методу Юрия Зотова, и по второму - везде срабатывает эксепшин с грозным окном ЦПУ... нифига не понимаю.



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

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

Наверх




Память: 0.48 MB
Время: 0.055 c
1-1082015049
evg_nib
2004-04-15 11:44
2004.05.02
Иерархический DBgrid как в 1С?


3-1080832854
Назаров Евгений
2004-04-01 19:20
2004.05.02
Непонятная ошибка в InterBase


1-1082287187
Андрей Сенченко
2004-04-18 15:19
2004.05.02
Поймать ответ ShellExecute в случае ошибки


6-1078395276
pai
2004-03-04 13:14
2004.05.02
Indy, IdTCPClient.writebuffer


14-1081435540
TButton
2004-04-08 18:45
2004.05.02
Про глобальные переменные