![]() |
C#+WinAPI отправка сообщений в окно
У меня возникла проблема.
Не получается отправить в окно сообщение о нажатой кнопке F1 Капаюсь уже в таблицах ассема, в лекциях с инста, но разве в них что-то найдешь после 2-х лет перекладывания с места на место. / Код:
В тестируется все в блокноте. Сообщения о нажатых символах идут. Но если отправить код 112, то напишется буква. Помню, что у системных клавишь 2 кода, но вот хоть убейте, не могу вспомнить второй и как его отправить. Может кто чем поможет? |
какая буква пишется?)
|
На Delphi
Цитата:
|
Key.F1 слать пробовал?
|
Мне же не только F1 отправить нужно. Но и F2, F3, F4 и т.д.
Вообще системные клавиши. |
коды виртуальных клавиш
F1 - F12 (112 - 123), соотвественно Пример отправки F1 Цитата:
|
Цитата:
Вероятно вы просто не заметили. Одно из этих числ было указано в первом топике (112). Если послать сообщение с кодом 112 то окно поймет, что вы ему шлете код символа, который похож на "р", а не как не F1. Попробуйте в блокном отправить код 116 (вроде как F5 должно быть). Если в блокноте появится дата и время, то это действительно F5. Но скорее всего будет символ. У системных клавишь 2 кода. Один совпадает с символом, другой говорит ОС, что была нажата системная клавишь. |
Вообщем проблема может быть еще в том что ты не в то окно шлеш. Попробуй дочернии поперебирать.
|
Окно то. Сообщение о закрытии окна получает то окно, которое я хочу закрыть.
Что качается блокнота. Если я хочу написать символ, то он его пишет. Коды верно воспринимает, а вот системные кнопки нет |
http://www.edgeofnowhere.cc/viewtopic.php?t=396398
|
Похоже на то, что мне нужно. Спасибо, буду дальше махиначить
|
И все же это чуточку не то.
У него такого же рода проблема. Список констант, которые вроде пашут, а вроде и нет. |
Эм...
SendKeys.Send("{F1}"); или я что то не понимаю) |
Что-то тогда не ясно, как отправить это окну, которое в фокусе.
|
Решение найдено.
Вилка прав(а) http://msdn.microsoft.com/en-us/library/ms171548.aspx |
Что-то замучала эта задачка.
Когда идет посылка SendKeys.Send("{F1}"); приходится ждать ответа. А я хочу слать кажду секунду сообщение о нажатой кнопке . |
DDoS какой-то.
надо учитывать что SendKeys отправляет сообщение активному окну. чтобы не ждать "ответа" нужно асинхронно посылать сообщения. |
Неее... можно выставить, что типо окно в фокусе и слать ему сообщения, хотя ты его сам активным не делаешь.
|
Цитата:
Раз ты проверял все на блокноте то небольшой пример, правда на Delphi Код:
procedure TFormMain.Button1Click(Sender: TObject); |
Цитата:
За пару дней до вашего я все же достиг того, что нужно. Помогли на одном форуме. Я что-то совсем про ПОСТ забыл. Даже был вариант самому себе посылать подтверждение, но потом напомнили про ПОСТ. WipAPI только в инсте проходил и ни шагу дальше. Пример кода. Код:
if (hWnd == IntPtr.Zero) |
| Время: 05:35 |