发送密钥&使用AppActivate

时间:2017-11-02 23:00:03

标签: excel vba keyevent sendkeys active-window

方式:

我使用的是SendKeys& amp ;;虚拟键盘,用于将密钥笔划发送到作为应用程序存储在Citrix上的核心管理系统。 VBA代码通过使用AppActivate& amp; 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 个答案:

答案 0 :(得分:0)

我希望你现在已经找到了解决方案。但是,这是我发送Ctrl + L

的方法
SendKeys "(^l)"

希望有所帮助