Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 796
от 07.10.2008, 00:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 248, Экспертов: 20
В номере:Вопросов: 1, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 145692: Уважаемые эксперты! Пожалуйста подскажите: Необходимо автоматизировать работу с некой програмой, написанной для Windows. Для этого используется оператор SendKeys, который сначала активирует окно с этой программой, а потом имитирует нажатия на к...

Вопрос № 145.692
Уважаемые эксперты!
Пожалуйста подскажите:
Необходимо автоматизировать работу с некой програмой, написанной для Windows. Для этого используется оператор SendKeys, который сначала активирует окно с этой программой, а потом имитирует нажатия на клавиши в определенной последовательности в этой программе.
Проблема в том, что нужно симитировать комбинацию клавиш (CTRL) и ("+" на NumPad). Знак "+" с основной клавиатуры в этой комбинации не срабатывает.

Вопрос: можно ли как-то имитировать, что данная клавиша нажата именно на NumPad?
Можно ли имитировать програмным способом нажатие клавиши контекстного меню, или нажатие на правую кнопку мыши (это бы также решило проблему)?
И, наконец, может быть есть какой-то другой путь автоматизации действий, выполняемых в такого рода случаях?
Отправлен: 01.10.2008, 23:52
Вопрос задал: Gareev007 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Владимир (C4tnt)
Здравствуйте, Gareev007!

Для имитации нажатий спец. кнопок пользуйтесь такими кодами:
SHIFT: +
CTRL: ^
ALT: %
этот значок должен стоять перед обозначением нажимаемой кнопки (пример "^(")
если нужна более сложная комбинация - названия кнопок после кода можно объединять в скобки.

И коды специальных клавиш на всякий случай:

Key - Code

BACKSPACE - {BACKSPACE}, {BS}, or {BKSP}
BREAK - {BREAK}
CAPS LOCK - {CAPSLOCK}
DEL or DELETE - {DELETE} or {DEL}
DOWN ARROW - {DOWN}
END - {END}
ENTER - {ENTER}or ~
ESC - {ESC}
HELP - {HELP}
HOME - {HOME}
INS or INSERT - {INSERT} or {INS}
LEFT ARROW - {LEFT}
NUM LOCK - {NUMLOCK}
PAGE DOWN - {PGDN}
PAGE UP - {PGUP}
RIGHT ARROW - {RIGHT}
SCROLL LOCK - {SCROLLLOCK}
TAB - {TAB}
UP ARROW - {UP}
F1 - {F1}
F2 - {F2}
F3 - {F3}
F4 - {F4}
F5 - {F5}
F6 - {F6}
F7 - {F7}
F8 - {F8}
F9 - {F9}
F10 - {F10}
F11 - {F11}
F12 - {F12}
F13 - {F13}
F14 - {F14}
F15 - {F15}
F16 - {F16}

Keypad add - {ADD}
Keypad subtract - {SUBTRACT}
Keypad multiply - {MULTIPLY}
Keypad divide - {DIVIDE}


---------
Теперь к нашим ответам осталось лишь найти вопросы
Ответ отправил: Владимир (C4tnt) (статус: 5-ый класс)
Ответ отправлен: 02.10.2008, 00:40

Отвечает: PsySex
Здравствуйте, Gareev007!
Можно "нажимать" кнопки используя API. Код для формы.
Код:
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const KEYEVENTF_KEYUP = &H2
Const VK_RBUTTON = &H2
Const VK_ADD = &H6B
Const VK_CONTROL = &H11

Private Sub Press_Keys()
'пример нажатия на CTRL+"+"
keybd_event VK_CONTROL, 0, 0, 0 'нажимаем CTRL
keybd_event VK_ADD, 0, 0, 0 'нажимаем + на доп клаве
keybd_event VK_ADD, 0, KEYEVENTF_KEYUP, 0 'отпускаем + на доп клаве
keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0 'отпускаем CTRL
'пример нажатия на кнопку мыши
'keybd_event VK_RBUTTON, 0, 0, 0 'нажимаем правую кнопку мыши
'keybd_event VK_RBUTTON, 0, KEYEVENTF_KEYUP, 0 'отпускаем правую кнопку мыши
End Sub

---
Полный список констант кнопок можно найти в API Viewer, который идет вместе с VB6 или в любом справочнике по API Win32.
---------
Bom Shankar!
Ответ отправил: PsySex (статус: Специалист)
Ответ отправлен: 02.10.2008, 01:35


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.3 RC 2 от 09.09.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное