发送到Citrix应用程序时,在Python脚本中模拟硬件按键(SendKeys不起作用)

发送到Citrix应用程序时,在Python脚本中模拟硬件按键(SendKeys不起作用),python,c,vb.net,keyboard,citrix,Python,C,Vb.net,Keyboard,Citrix,在过去的两天里,我花了很多时间试图找出如何向运行在Citrix上的应用程序发送Ctrl空格。我的脚本是基于Python的,我尝试了各种解决方案,从SendKeys到Pywin32和SendInput(),以及这些文章中概述的解决方案,以及我很久以前关闭的其他解决方案: 问题是这些似乎都在发送文本或模拟按键,Citrix无法识别。看起来我需要做的是模拟硬件按键,而不是直接发送到应用程序。许多解决方案都是C语言(或类似语言),我对此一无所知 有人有基于Python的解决方案吗?还是在Python中

在过去的两天里,我花了很多时间试图找出如何向运行在Citrix上的应用程序发送Ctrl空格。我的脚本是基于Python的,我尝试了各种解决方案,从SendKeys到Pywin32和SendInput(),以及这些文章中概述的解决方案,以及我很久以前关闭的其他解决方案:

问题是这些似乎都在发送文本或模拟按键,Citrix无法识别。看起来我需要做的是模拟硬件按键,而不是直接发送到应用程序。许多解决方案都是C语言(或类似语言),我对此一无所知

有人有基于Python的解决方案吗?还是在Python中包含C或VB.NET代码的方法?列出了一个VB解决方案,该解决方案可能有效,也可能无效,但我不确定如何将其功能导入到基于Python的脚本中

任何建议都将不胜感激

编辑:为了强调直接硬件操作而不是模拟按键的需要,我向Citrix应用程序发送了以下命令:

        SendInput(Keyboard(VK_RETURN))
        SendInput(Keyboard(VK_RETURN, KEYEVENTF_KEYUP))
        SendInput(Keyboard(VK_CAPITAL))
        SendInput(Keyboard(KEY_L))
        SendInput(Keyboard(KEY_L, KEYEVENTF_KEYUP))
        SendInput(Keyboard(VK_CAPITAL, KEYEVENTF_KEYUP))
        SendInput(Keyboard(KEY_0))
        SendInput(Keyboard(KEY_0, KEYEVENTF_KEYUP))
        SendInput(Keyboard(VK_SPACE))
        SendInput(Keyboard(VK_SPACE, KEYEVENTF_KEYUP))
        SendInput(Keyboard(KEY_A))
        SendInput(Keyboard(KEY_A, KEYEVENTF_KEYUP))
        SendInput(Keyboard(VK_BACK))
        SendInput(Keyboard(VK_BACK, KEYEVENTF_KEYUP))
        SendInput(Keyboard(VK_CONTROL))
        SendInput(Keyboard(KEY_A))
        SendInput(Keyboard(KEY_A, KEYEVENTF_KEYUP))
        SendInput(Keyboard(VK_CONTROL, KEYEVENTF_KEYUP))
        SendInput(Keyboard(VK_LCONTROL))
        SendInput(Keyboard(KEY_V))
        SendInput(Keyboard(KEY_V, KEYEVENTF_KEYUP))
        SendInput(Keyboard(VK_CONTROL, KEYEVENTF_KEYUP))
        SendInput(Keyboard(VK_RETURN))
        SendInput(Keyboard(VK_RETURN, KEYEVENTF_KEYUP))

我在应用程序中得到了以下输出:=tbd7w\=

我终于找到了一些有用的东西:

这将成功地向Citrix应用程序发送击键(包括修改器)。如上所述发送CTRL-SPACE就像键盘一样简单。发送('CTRL-SPACE')。希望这对别人有帮助