gpt4 book ai didi

python - 有没有办法在 python 中调用左键单击?

转载 作者:可可西里 更新时间:2023-11-01 11:34:56 24 4
gpt4 key购买 nike

我只有 python 2.6。我可以在不使用外部库的情况下做到这一点吗?我只想在光标当前所在的位置执行左键单击。

最佳答案

OK,首先你要知道如何通过ctypes打开user32 windll,也就是trivial :

from ctypes import *
user32 = windll.user32

接下来,你要调用的Win32函数大概是SendInput ,尽管您可能想查看 mouse_event 和可能的 SendMessage(以及 WM_* 消息对应于鼠标单击的文档)以进行比较和对比。

假设您使用 SendInput,您将发送一个 MOUSEEVENTF_LEFTDOWN,然后发送一个 MOUSEEVENTF_LEFTUP,所有参数均为 0除了 dwFlags

那么,你怎么调用它呢?那么,这是 C API:

UINT WINAPI SendInput(
_In_ UINT nInputs,
_In_ LPINPUT pInputs,
_In_ int cbSize
);

LPINPUT 意味着您有一个指向 INPUT 数组的指针结构。由于 INPUT 结构本身具有 MOUSEINPUTKBDINPUTHARDWAREINPUT 的联合,因此您还需要定义那些(尽管你可以只定义第一个并假装其他的不存在,因为第一个是你唯一需要的)。

因此,使用 ctypes 执行此操作的步骤是:

  • 定义 Structure s MOUSEINPUTINPUT .
  • 加载 user32 windll。
  • 设置argtypes对于 user32.SendInput
  • 创建您的第一个 MOUSEINPUT 实例,使用 dwFlags= MOUSEEVENTF_LEFTDOWNINPUT 实例。
  • 调用 user32.SendInput(1, [myinput], len(INPUT))user32.SendInput(1, addressof(myinput), len(INPUT))或其他(取决于您如何定义 argtypes)。
  • 使用 dwFlags= MOUSEEVENTF_LEFT 创建您的第二个 MOUSEINPUT 实例,以及与之配套的 INPUT 实例。
  • 再次调用 user32.SendInput()

最后一点:在 Vista 及更高版本上,您必须具有正确的“完整性级别”才能执行此操作。例如,普通应用程序无法将点击发送到“提升的”应用程序(例如,安装程序)。希望这对您来说不是问题。如果是,您需要阅读有关 UIPI 和 UAC 的信息……如果最坏的情况发生,您可能需要回退到较低级别的技巧。

这就够了吗,还是您需要这方面的某些特定部分的帮助?

关于python - 有没有办法在 python 中调用左键单击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13998610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com