我在Windows上编写了一些程序,它们利用PostMessage将击键和鼠标事件发送到目标应用程序。除了可能使用DBus之外,我找不到在Linux上这样做的方法,但是到目前为止我所看到的情况表明,我需要目标应用程序窗口处于焦点位置。
我找到的另一个替代方案是X11 API (keysym.h),但这似乎也需要一个聚焦窗口。
有没有一种方法可以将鼠标/键盘事件发送到Linux上不在焦点的窗口?
有没有一种方法可以拦截Java中的系统密钥,这样事件就不会传播到操作系统?Ctrl+Alt+Del或其他安全相关的组合无关紧要,主要问题是例如Windows键。
正在讨论的程序是一个全屏应用程序,它通过专有协议执行一些远程操作。目前我唯一的想法是通过JNI解决这个问题,而Windows的解决方案似乎很简单,我不确定Linux和MAC OS X。
我更喜欢一些标准的解决方案,也许有一些适合Java游戏的东西。
假设我有一个发现规则:
通过SNMP获得模型号,通过代理<code>F29</code获得system.uname >
假设我现在要创建一个具有以下条件的操作:
Received value contains X456
AND
Received value contains Linux
那能行吗?看起来,Zabbix可能会将第一个接收到的值(比如SNMP命令中的值)与Linux进行比较,而Linux并不匹配。然后整个情况都会失败吗?
我在文档中看到了这一点:
服务检查导致发现事件的发现规则,而发现规则不会同时发生。因此,如果为操作中的服务类型、服务端口或接收值条件配置了
我有一个应用程序,您可以在其中做鼠标右键按下并拖动(以及左键按下并拖动不同的操作)。然而,当在linux上运行时,弹出菜单似乎是由mousePressed而不是mouseReleased触发的。这导致每次我按下鼠标右键执行拖动时,弹出菜单都会被触发(不像窗口,它是mouseReleased)。
你有什么想法来解决这个问题吗?
谢谢。
编辑:发布代码
弹出菜单的代码
// this is called from mousePressed and mouseReleased
if (e.isPopupTrigger() && !e.isConsumed()) {
// sh
我在Linux机器上运行我的测试,在那里使用以下代码,它不能正确地键入文本-
visibleElement.clear();
visibleElement.sendKeys("I am running on linux machine");
在UI中,实际上会键入不同的文本,比如“我在linux机器上运行”、“我在linux机器上运行”等
因此,为了处理这个问题,我使用了javascript,比如-
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("arguments[0].v