Отправить ключи и 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» казался многообещающим, но при запуске я получаю сообщение об ошибке «Переполнение».

Код (пока):

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 в системное приложение или есть ли лучший способ сделать это.

Спасибо!


person Steven    schedule 02.11.2017    source источник


Ответы (1)


Надеюсь, вы уже нашли решение. Однако вот что я делаю, чтобы отправить Ctrl + L

SendKeys "(^l)"

надеюсь, это поможет

person Master Uv Puppetz    schedule 15.03.2018