powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Экранная клавиатура
27 сообщений из 27, показаны все 2 страниц
Экранная клавиатура
    #37546408
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как работает стандартная виндоувская экранная клавиатура? напишите, кто что знает об этой программе, нужно послать текстовому полю имитацию нажатия как экранная клавиатура[spoiler]мои наблюдения: во время нажатия экранная клавиатура не получает фокус, не забирает фокус у текстового поля, что очень и очень необычно. программы, которые не реагируют на keybd_event, mouse_event, перемещение мыши, sendkeys, WM_KEYDOWN, WM_CHAR свободно разрешают нажатия с экранной клавиатуры в чём же секрет?./spoiler]

Модератор: Тема перенесена из форума "Visual Basic".
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37546670
qwerty_odin_takoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Below273, SendMessage, SetWindowLong...
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37546714
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty_odin_takoy,

расскажите а роли SetWindowLong и вообще поподробнее об экранной клавиатуре. как ни старался, не мог создать такую программу на vb6... плз
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37546727
qwerty_odin_takoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Below273, открой какой нибудь API справочник, да посмотри.
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37546760
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty_odin_takoy,

я читал несколько статей про обе функции. sendmessage+WM_KEYDOWN или sendmessage+WM_CHAR игнорируются посторонней программой. экранная клавиатура работает как-то по-другому. а чем мне поможет установка флагов окна, я не представляю. прокомментируете?
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37546806
qwerty_odin_takoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Below273, вам нужно посмотреть в отладчике экранную клавиатуру.
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37546916
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty_odin_takoy,

как посмотреть в отладчике экранную клавиатуру?
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37546948
Фотография С0ВЕСТЬ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Below273qwerty_odin_takoy,
как посмотреть в отладчике экранную клавиатуру?

Хотя бы подключать процессы умеешь?
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37546953
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С0ВЕСТЬ,

т.е. подключать процессы? знаю, нублю, объясните плз_)
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37546955
Фотография С0ВЕСТЬ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Below273С0ВЕСТЬ,
т.е. подключать процессы? знаю, нублю, объясните плз_)

http://weblogs.asp.net/mikebosch/archive/2008/06/20/debugging-running-processes-in-visual-studio.aspx
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37546968
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С0ВЕСТЬ,

ммм... не понятно... подскажите, как экранной клавиатуре удаётся эмулировать нажатия клавиш, перепробовал всё
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37547105
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Below273подскажите, как экранной клавиатуре удаётся эмулировать нажатия клавиш, перепробовал всё sendkeys
http://yandex.ru/yandsearch?text=sendkeys+source&lr=10950
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37547834
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNose,

Above273программы, которые не реагируют на keybd_event, mouse_event, перемещение мыши, sendkeys , WM_KEYDOWN, WM_CHAR свободно разрешают нажатия с экранной клавиатуры в чём же секрет?
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37547862
qwerty_odin_takoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Below273, а вы точно по адресу сообщения посылаете? может хендл не тот
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37548098
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty_odin_takoy,

хендл правильный, сообщение правильное, работает на блокноте и в большинстве программ. но в игре, в которую надо послать имитацию нажатия клавиш, защита от таких штучек. блокируется всё, что пробовал, а экранная клавиатура работает
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37548105
qwerty_odin_takoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Below273, а может игра не дура - разрешает принимать только от экранной клавиатуры?
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37548239
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty_odin_takoy,

да, я тоже так думал. уже пробовал http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=894342&msg=11625159
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37548841
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мож игра клавиатуру через DirectX обслуживает?
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37548890
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

т.е.?
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37549040
Фотография С0ВЕСТЬ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Below273Изопропил,

т.е.?

ты не знаешь, что такое DirectX ?
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37550327
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С0ВЕСТЬBelow273Изопропил,

т.е.?

ты не знаешь, что такое DirectX ?

знаю, что он нужен. и то, что что он обновляется в самый неподходящий момент) и врят ли тут дело в каком-то директикс, т.к. даже ЭК не может посылать нажатия игре, если нажатия на ЭК осуществляются программно. нет идей...
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37550390
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут нужна самая низкоуровневая функция для имитирования нажатия клавиш. самая высокоуровневая - sendkeys - блокируется с лёгкостью с полным завершением используемой программы и среды разработки. api функции просто игнорируются(причём не только в игре, а имитации нажатия вообще не происходит). нужна функция, близкая к машинному коду, чтобы даже винда туго понимала, имитация это или сигналы от реального устройства
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37551046
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну машинный код не нужен, а DDK почитать придётся
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37552066
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

укажите плз верное направление. 1) как игре удаётся блокировать даже api функции 2) как экранная клавиатура эту защиту обходит 3) как эту защиту обойти мне
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37554112
SoftParanoik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть две базовые функции API для подобных фокусов:

keybd_event - имитирует нажатие любой клавиши клавиатуры и посылает сообщение во входную очередь приложения

AttachThreadInput - позволяет перенаправить клавиатурный ввод во входную очередь другого приложения (окна)

Подробности в MSDN
...
Рейтинг: 0 / 0
Экранная клавиатура
    #37554490
qwerty_odin_takoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SoftParanoikkeybd_event
У автора не работает.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Экранная клавиатура
    #38070164
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646276%28v=vs.85%29.aspx
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
lParam

    The repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table.
    Bits	Meaning
    0-15	The repeat count for the current message. The value is the number of times the keystroke is autorepeated as a result of the user holding down the key. If the keystroke is held long enough, multiple messages are sent. However, the repeat count is not cumulative.
    16-23	The scan code. The value depends on the OEM.
    24	Indicates whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.
    25-28	Reserved; do not use.
    29	The context code. The value is 1 if the ALT key is held down while the key is pressed; otherwise, the value is 0.
    30	The previous key state. The value is 1 if the key is down before the message is sent, or it is 0 if the key is up.
    31	The transition state. The value is 1 if the key is being released, or it is 0 if the key is being pressed.
вот набрал последовательно а, стрл+а, шифт+а, алт+а
альта нет вообще, а биты (24 + 29 и другие) не меняются. я правыми стрл, шифт и альт пользовался.
259 выводил, чтобы показать, как мои биты выводятся.

почему?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
application 'Каркасное приложение' started (259:'00000001 00000011')
WM_KEYUP: 13: '(null)'


     button pressed( WM_CHAR): 97/a 1 30

!!! 30,  30, add/alt/pb/b (0/0/0/0/0), code: 30/''
bits: '00000000 00011110': b15/b14/p13/b12-9/b8 (0/0/0/0/0), code:30/''
bits2: '00000000 00011110'
WM_KEYUP: 65: '(null)'

                button pressed( WM_CHAR): 1/ 1 30

!!! 30,  30, add/alt/pb/b (0/0/0/0/0), code: 30/''
bits: '00000000 00011110': b15/b14/p13/b12-9/b8 (0/0/0/0/0), code:30/''
bits2: '00000000 00011110'
WM_KEYUP: 65: '(null)'
WM_KEYUP: 17: '(null)'

               button pressed( WM_CHAR): 65/A 1 30

!!! 30,  30, add/alt/pb/b (0/0/0/0/0), code: 30/''
bits: '00000000 00011110': b15/b14/p13/b12-9/b8 (0/0/0/0/0), code:30/''
bits2: '00000000 00011110'
WM_KEYUP: 65: '(null)'
WM_KEYUP: 16: '(null)'
WM_KEYUP: 18: '(null)'
application stoped


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
struct TWM_CHAR {
  unsigned    code:8;
  unsigned    add:1;
  unsigned    sys:4;
  unsigned    alt:1;
  unsigned    pb:1;
  unsigned    p :1;
};

union SH_WM_CHAR
{
	ushort    sh;
	TWM_CHAR  map;
};


TWM_CHAR getMap(ushort prm){
  SH_WM_CHAR ret;

  ret.sh=prm;
  fprintf(out, "!!! %hd,  %hd, add/alt/pb/b (%hd/%hd/%hd/%hd/%hd), code: %hd/'%c'\n",
                      prm, ret.sh, 
                                     (ushort) ret.map.add, 
                                         (ushort)ret.map.alt, 
                                             (ushort)ret.map.pb, 
                                                (ushort)ret.map.p, 
                                                   (ushort)ret.map.sys, 
                                                     (ushort) ret.map.code, 
                                                                 ret.map.code);



  return ret.map;
}




LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
{
  int result;
  uchar  buf[20]; memset(buf, 20, 0);
  uchar but = wParam;
  ushort h = HIWORD(lParam);
  ushort l = LOWORD(lParam);
  TWM_CHAR  map;
  ushort *psh = (ushort*) ↦
  const uchar *nm = 0;


	switch(uMessage)
	{
	case WM_CHAR: // нажатие клавиши.


		fprintf(out, "button pressed( WM_CHAR): %d/%c The repeat count: %hd 16-31:%hd\n", 
                      wParam, but, l, h);
	  ;
	  map= getMap(h);
//                                   31  /30/ 29/28-25/24                        16-23
           fprintf(out, "bits: '%s': b15/b14/p13/b12-9/b8 (%hd/%hd/%hd/%hd/%hd), scan-code:%hd/'%c'\n"
                                  ,stoa(h, buf) 
                                   ,(ushort)map.p 
                                     ,(ushort)map.pb 
                                       ,(ushort)map.alt 
                                         ,(ushort)map.sys 
                                           ,(ushort) map.add 
                                             ,(ushort)   map.code 
                                              , (uchar) map.code);

           fprintf(out, "bits2: '%s'\n", stoa(*psh, buf)); 

		break;
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Экранная клавиатура
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]