Отправить ключи и AppActivate
Метод:
Я использую комбинацию SendKeys и Virtual Keyboard для отправки нажатий клавиш в основную систему администрирования, которая хранится в Citrix как приложение. Код VBA идентифицирует приложение с помощью методов AppActivate & Application.ActiveWindow.
Цель:
Моя цель состоит в том, чтобы пользователь вводил данные в электронную таблицу Excel и отправлял данные в основную систему администрирования, используя VBA вместо ввода вручную пользователем.
Проблема:
У меня много проблем, но на данный момент я пытаюсь отправить Ctrl + f в основное приложение системы администрирования. Кажется, он не распознает удар, однако отправка f в одиночку или ввод "keybd_event VK_RETURN, mvk, 0, 0", похоже, работает. Кроме того, "keybd_event VK_CONTROL, mvk, 0, 0" показалось многообещающим, но я получаю ошибку "Overflow" при запуске.
Код (пока):
Option Explicit
Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte,
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare PtrSafe Function MapVirtualKey Lib "user32" Alias "
MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Private Const VK_RETURN = &HD
Private Const VK_CONTROL = &HD11
Private Const KEYEVENTF_KEYUP = &H2
Sub pleasework5()
Dim keys As String
Dim wsh As Object
Dim mvk As Double
Set wsh = CreateObject("WScript.Shell")
mvk = MapVirtualKey(VK_RETURN, 0)
AppActivate ("application name") 'use form to enter username
Application.ActiveWindow.Activate
Application.Wait Now() + TimeValue("00:00:05")
'keybd_event VK_CONTROL, mvk, 0, 0
wsh.SendKeys ("^f"), True
Пожалуйста, дайте мне знать, как отправить Ctrl + F в системное приложение или если есть лучший способ сделать это.
Спасибо!
1 ответ
Я надеюсь, что вы уже нашли решение. Тем не менее, вот что я делаю, чтобы отправить Ctrl + L
SendKeys "(^l)"
надеюсь, это поможет