ABAP 能否像 pynput 一样监听键盘和鼠标,一次讲清 SAP 端与 Windows 端的能力边界
我们今天讨论的场景很具体,一段运行在 Windows 上的 Python 程序,通过pynput.keyboard.Listener和pynput.mouse.Listener,即使窗口没有获得焦点,也能持续接收键盘按下、键盘释放、鼠标移动、鼠标单击和滚轮滚动等事件。程序还可以反过来控制鼠标位置、模拟单击或者模拟键盘输入。把同样的问题放到 ABAP 里,很自然会产生一个想法,SAP 是否也提供了某个类似pynput的类,只需注册几个事件处理方法,便可以监听本机全部键盘和鼠标活动。直接给出结论,标准 ABAP 中没有与pynput对等的工具。无论是传统的 SAP ABAP On-Premise,还是 SAP BTP ABAP environment 中的 ABAP Cloud,都没有面向操作系统全局键盘和鼠标的监听器,也没有可以直接安装 Windows 全局键盘钩子和鼠标钩子的 ABAP API。这里的关键差异并不在于 ABAP 语法是否足够强大,而在于代码运行的位置完全不同。pynput是运行在桌面操作系统用户会话中的 Python 库,它会选择与当前平台匹配的底层实现。在 Windows 上,它使用win32后端,可以控制和监控键盘、鼠标或触控板。ABAP 程序通常运行在 Application Server ABAP 的工作进程中,属于应用层,而键盘、鼠标和桌面窗口属于表现层。SAP 官方对 AS ABAP 的架构说明同样强调了表现层、应用层和数据库层的分离。这就像我们在机房里运行一段服务器程序,它可以处理订单、查询数据