Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2012, 20:56   #1
owl1n
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 34
По умолчанию VK_ESCAPE

Такая проблема:

При использовании
Код:
keybd_event(VK_ESCAPE, 0, 0, 0);
keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0);
в Win7 открывается WinМеню(т.е. Пуск). Как быть?
owl1n вне форума Ответить с цитированием
Старый 26.05.2012, 08:26   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вместо keybd_event использовать postMessage указывая окно, которому посылается нажатие.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.05.2012, 12:29   #3
owl1n
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вместо keybd_event использовать postMessage указывая окно, которому посылается нажатие.
У меня глобальный хук, postMessage - не вариант.
owl1n вне форума Ответить с цитированием
Старый 27.05.2012, 12:05   #4
owl1n
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 34
По умолчанию

Никто не ответит?(
owl1n вне форума Ответить с цитированием
Старый 27.05.2012, 13:33   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Научитесь сначала задавать вопросы.
Для данного класса вопросов следует указывать:
- чего хотите добиться,
- что происходит на самом деле,
- чем первое отличается от второго.
s-andriano вне форума Ответить с цитированием
Старый 27.05.2012, 13:55   #6
owl1n
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Научитесь сначала задавать вопросы.
Для данного класса вопросов следует указывать:
- чего хотите добиться,
- что происходит на самом деле,
- чем первое отличается от второго.
Я сказал все так, как есть. Мне надо, что бы происходило действия VK_ESCAPE, т.е. нажатие кнопки Esc. И PostMessage мне не подходит, т.к. мне нужно действие на все окна.
owl1n вне форума Ответить с цитированием
Старый 28.05.2012, 10:47   #7
Новичок!
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 35
По умолчанию

на все окна событие всё равно не может быть, т.к. его его принимает активное окно. И тут два варианта решения:
1)Посылать сообщение только активному окну
Код:
var wnd:hwnd;
begin
wnd:=GetForegroundWindow;
и далее через postmessage

2)посылать postmessage всем окнам
Код:
var wnd:hwnd;
begin
wnd:=getforegroundwindow;
while wnd<>0 do begin
postmessage(...)
wnd:=getnextwindow(wnd,gw_hwndnext);
end;
end;

Последний раз редактировалось Новичок!; 28.05.2012 в 10:47. Причина: орфография
Новичок! вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск