有没有办法来调用python中的leftclick?

我只有Python 2.6。 我可以做到这一点,而不使用外部库? 我只想在当前光标的任何位置执行左键单击。

好的,首先你必须知道如何通过ctypes打开user32,这很简单 :

 from ctypes import * user32 = windll.user32 

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

假设你使用SendInput ,你将发送一个MOUSEEVENTF_LEFTDOWN然后是一个MOUSEEVENTF_LEFTUP ,除了dwFlags之外的所有参数都是0。

那么,你怎么称呼这个? 那么,这里的C API:

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

LPINPUT意味着你有一个指向INPUT结构数组的指针。 由于INPUT结构本身具有MOUSEINPUTKBDINPUTHARDWAREINPUT的联合, MOUSEINPUT还需要定义这些结构(尽管可以通过定义第一个和假装其他结构不存在来解决,因为第一个是唯一的你需要一个)。

所以,与ctypes做这个步骤是:

  • 定义MOUSEINPUTINPUTStructure
  • 加载user32 windll。
  • 设置user32.SendInputargtypes
  • dwFlags= MOUSEEVENTF_LEFTDOWNINPUT实例创建你的第一个MOUSEINPUT实例。
  • 调用user32.SendInput(1, [myinput], len(INPUT))user32.SendInput(1, addressof(myinput), len(INPUT))或其他(取决于你如何定义argtypes )。
  • 使用dwFlags= MOUSEEVENTF_LEFTINPUT实例创建第二个MOUSEINPUT实例。
  • 再次调用user32.SendInput()

最后一个注意事项:在Vista及更高版本上,您必须拥有正确的“完整性级别”来执行此操作。 例如,一个普通的应用程序不能发送一个点击“提升”的应用程序(如安装程序)。 希望这不是你的问题。 如果是这样,你需要阅读UIPI和UAC …如果最糟糕的是最糟糕的,你可能需要回到更低层次的技巧。

这是足够的,还是你需要帮助这个特定的部分?