Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Имитация нажатия клавиши

16K
19 мая 2008 года
_HemP_
50 / / 09.03.2008
как программно с помощью VB симитировать нажатие клавиши или комбинации клавиш??
допустим: <Enter> <Tab> <Ctrl+V>
296
19 мая 2008 года
Virtuoso
331 / / 31.07.2005
Пользуйтесь поиском на форуме и в интернете, этого полно. Вот пример из API-Guid:
Код:
Const VK_H = 72
Const VK_E = 69
Const VK_L = 76
Const VK_O = 79
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Sub Form_KeyPress(KeyAscii As Integer)
    'Print the key on the form
    Me.Print Chr$(KeyAscii);
End Sub
Private Sub Form_Paint()
    'KPD-Team 2000
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    'Clear the form
    Me.Cls
    keybd_event VK_H, 0, 0, 0   ' press H
    keybd_event VK_H, 0, KEYEVENTF_KEYUP, 0   ' release H
    keybd_event VK_E, 0, 0, 0  ' press E
    keybd_event VK_E, 0, KEYEVENTF_KEYUP, 0  ' release E
    keybd_event VK_L, 0, 0, 0  ' press L
    keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0  ' release L
    keybd_event VK_L, 0, 0, 0  ' press L
    keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0  ' release L
    keybd_event VK_O, 0, 0, 0  ' press O
    keybd_event VK_O, 0, KEYEVENTF_KEYUP, 0  ' release O
End Sub
5.9K
20 мая 2008 года
SPB-667
119 / / 23.06.2007
можно проще поступить, использовав функцию SendKeys(), например, для текстового окна:

Text1.SetFocus
SendKeys "{Enter}+{Tab}+{Ctrl}+{V}"
16K
21 мая 2008 года
_HemP_
50 / / 09.03.2008
не, последнее не катит, мне надо вставить данные в другую прогу (игру).
а в первом способе, как я понял обрабатывается 4 клавиши:H, E, L, 0.
но вот как ещё бы сочетание клавиш имитировать...
16K
21 мая 2008 года
_HemP_
50 / / 09.03.2008
или же как копировать в буфер обмена данные, а потом их вставить в другой проге (игре)???
16K
21 мая 2008 года
_HemP_
50 / / 09.03.2008
я тут попробовал эту вещь...в принципе во многом работает.
но вот не всегда правильно и очень странно!!!
допустим не имитирует правильно, допустим буквы както очень странно имитирует....
296
22 мая 2008 года
Virtuoso
331 / / 31.07.2005
Ну я не знаю что там не правильного. Вообщем вычисляете код нужной Вам клавиши (есть таблица кодов, но можно вычислить и самому, например в процедуре "KeyDown"). Допустим нужно сочетание "Alt+F4". Код "Alt" - 18, "F4" - 115. Для того, чтобы сделать сочетание, нужно сначала нажать обе клавиши, а потом уже отпустить.
 
Код:
Const VK_ALT = 18
Const VK_F4 = 115
    keybd_event VK_ALT, 0, 0, 0   ' press Alt
    keybd_event VK_F4, 0, 0, 0   ' press F4
    keybd_event VK_ALT, 0, KEYEVENTF_KEYUP, 0   ' release Alt
    keybd_event VK_F4, 0, KEYEVENTF_KEYUP, 0   ' release F4

Должно работать.
16K
22 мая 2008 года
_HemP_
50 / / 09.03.2008
как я понял тут не подействует правильно такая команда:
keybd_event asc("q"), 0, 0, 0
keybd_event asc("q"), 0, KEYEVENTF_KEYUP, 0
тут как я понял какая то другая таблица кодов клавиш.
дайте ссылку на эту таблицу.
и как переводить букву в код, который потом буду вставлять в другом месте?
16K
22 мая 2008 года
_HemP_
50 / / 09.03.2008
дело в том, что мне надо в другой проге вставить строку, которую я загрузил в моей программе.
то есть включается программа, я вставляю текст и своей программы,
имитирую нажатие Tab, фокус в той программе переводиться на другое место для ввода текста, снова вставляю данные, имитирую нажатие Enter и та программа запускается.
296
23 мая 2008 года
Virtuoso
331 / / 31.07.2005
Цитата: _HemP_
keybd_event asc("q"), 0, 0, 0
keybd_event asc("q"), 0, KEYEVENTF_KEYUP, 0


Нет, это не правильно. Так ты получаешь ASCII-код символа, а тебе нужно код клавиши. Т.е. при выполнении твоей задачи тебе надо будет ещё и за раскладкой следить.
Таблица - http://wdh.suncloud.ru/keycodes.htm

Приду с института, попробую написать, то что тебе нужно.

94K
09 августа 2014 года
Дима Васильев
1 / / 09.08.2014
Цитата: Virtuoso
Цитата: _HemP_
keybd_event asc("q"), 0, 0, 0
keybd_event asc("q"), 0, KEYEVENTF_KEYUP, 0


Нет, это не правильно. Так ты получаешь ASCII-код символа, а тебе нужно код клавиши. Т.е. при выполнении твоей задачи тебе надо будет ещё и за раскладкой следить.
Таблица - http://wdh.suncloud.ru/keycodes.htm

Приду с института, попробую написать, то что тебе нужно.


Как имитировать нажатие клавиши Е, с интервалом в 0,1 сек?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог