electron 带有鼠标事件的奇怪属性

xwbd5t1u  于 2023-05-04  发布在  Electron
关注(0)|答案(1)|浏览(292)
from pynput.mouse import Listener

def on_click(x, y, button, pressed):
    if pressed:
        print(f"Click detected")

def run_listener():
    with Listener(on_click=on_click) as listener:
        listener.join()

run_listener()

我有一个简单的python程序,可以捕获屏幕上的点击,在运行它时,我打开了任务管理器,注意到当鼠标在任务管理器上时,根本无法检测到点击,这个属性让我质疑发生了什么以及如何发生,我没有找到任何关于为什么会发生这种情况的东西,例如,出于安全原因,我想在电子应用程序中复制此操作,但显然这比看起来更困难。也许有一些方法可以阻止电子内部的全局鼠标事件(来自系统),或者类似的东西。
我对它做了一些研究,发现windows这样做是为了确保安全,让恶意应用程序知道点击移动的模式来做坏事或类似的事情。即使知道这一点,我也不能说这真的是因为这个,即使这样,我也不能复制这个属性。

at0kjp5o

at0kjp5o1#

在Electron中,您可以使用以下命令停止鼠标检测(在浏览器中,而不是系统中):

win.setIgnoreMouseEvents(true)

https://www.electronjs.org/docs/latest/api/browser-window
...但是你描述的任务管理器的拦截很可能来自Windows钩子。
钩子是一种机制,应用程序可以通过它拦截事件,如消息、鼠标操作和击键。拦截特定类型事件的函数称为钩子子程。钩子子程可以作用于它接收到的每个事件,然后修改或丢弃该事件。
https://learn.microsoft.com/en-us/windows/win32/winmsg/about-hooks

相关问题