使用ctypes在Python中进行右键单击

8

我是完全的Python新手,不懂编程术语。我想使用Python在特定位置进行简单的点击操作。我已经使用ctypes实现了左键单击:

>>> import ctypes
>>> ctypes.windll.user32.SetCursorPos(x,y), ctypes.windll.user32.mouse_event(2,0,0,0,0), ctypes.windll.user32.mouse_event(4,0,0,0,0)

有没有一种类似的方法可以进行右键点击?
1个回答

9
以下是您在mouse_event中使用的常量:
MOUSE_LEFTDOWN = 0x0002     # left button down 
MOUSE_LEFTUP = 0x0004       # left button up 
MOUSE_RIGHTDOWN = 0x0008    # right button down 
MOUSE_RIGHTUP = 0x0010      # right button up 
MOUSE_MIDDLEDOWN = 0x0020   # middle button down 
MOUSE_MIDDLEUP = 0x0040     # middle button up 

在你的代码中,你发送了两个事件:MOUSE_LEFTDOWNMOUSE_LEFTUP。这模拟了一个“点击”操作。
现在,如果要进行右键单击,则以类似的方式发送 MOUSE_RIGHTDOWNMOUSE_RIGHTUP

所以对于向右下方移动,我使用(8,0,0,0,0),向右上方移动使用(10,0,0,0,0)? - Robert Thackeray
1
100x10是两个不同的东西。前者是十进制,表示十,后者是十六进制,表示十六。除此之外,是的,这将调用右键。 - UltraInstinct
我刚刚输入了以下代码 >>> import ctypes
user32=ctypes.windll.user32 user32.SetCursorPos(650,135), user32.mouse_event(8,0,0,0,0), user32.mouse_event(10,0,0,0,0),但它没有右键单击?
- Robert Thackeray
1
就像我告诉你的那样,它不会起作用。请尝试使用16(或0x10)而不是10 - UltraInstinct
@Robert Thackeray:你看到并理解了关于十六进制和十进制数字的评论吗? - martineau
@RobertThackeray 很高兴能帮到你。请了解十进制和十六进制表示之间的区别,这将有助于你长期发展 :) - UltraInstinct

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接