据我们所知,python控制鼠标可以用ctype和winapi来进行。但是对于一个初学者,比如我,看winapi还不如杀了我。这个时候我发现了一个别人写好的库,我就拿来用一用了。
0.安装:
cmd->easy_install PyMouse。注意大小写。
1、详细:
from pymouse import PyMouse
m = PyMouse()
m.position()
##获取鼠标现在位置,根据每个人浏览器的不同而数值不同,你可以把鼠标放在最右上角,按F5查看。当然得加pirnt。我显示的
##是(1898L, 13L)
第一个是宽,第二个是高。
m.move(x,y)##把鼠标移动坐标x,y。
一开始我把X,Y的值都加了‘’号,就像这样:
x = '1898L'
结果MOVE完打印出来的都是
<bound method PyMouse.position of <pymouse.windows.PyMouse object at 0x02945D70>>
而且鼠标还跳到了右下角!
后来百度谷歌挠破奶子,无奈的把‘’去了,变成
x = 1898L
结果成了!嘻嘻。
m.click(x,y,[1/2/3])##鼠标点击
鼠标点击,会自动移动到那个xy坐标。第三个参数可以不填默认为1.1是点击的鼠标左键,2是右键,3是中建。
m.press(x,y)
这个和click差不多。但是click就相当于你鼠标按下去了立刻松开,而press就是鼠标按紧了不松开。
我是用IE浏览器才看出不同的,而火狐浏览器总是点不了网页的内容。很奇怪这是为什么?
m.release(x,y)
释放press之后的鼠标。用IE去press和release链接的话就可以观察鼠标的变化了。
3.总结:
由于我英语水平比较差,所以只在中文页面查找关于pymouse的用法。感觉挺悲哀的。所以找到的就这么点,这是写给初次接触pymouse和我一样的人。有什么不对请您纠正谢谢。
4.更改:
我打开了pymouse里面的__init__.py文件。查看了源码,发现了一些:
m.screen_size()
获取当前屏幕大小的像素。返回2个整数的元组。
move(x,y)的源码其实很简单:
windll.user32.SetCursorPos(x,y)
就这么一句话。
position()
class POINT(Structure):
_fields_ = [("x", c_ulong),
("y", c_ulong)]
def position(self):
pt = POINT()
windll.user32.GetCursorPos(byref(pt))##byref地址传递。
return pt.x, pt.y
windll.User.GetCursorPos得到的鼠标地址,传递到pt,也就是POINT上,然后再返回x,y
a = []
a.append(position())
print a
结果是
>>> ================================ RESTART ================================
>>>
[(1226L, 695L)]
>>>
screen_size():
def screen_size(self):
width = GetSystemMetrics(0)
height = GetSystemMetrics(1)
return width, height
0 'X Size of screen
1 'Y Size of screen
结果:
>>> ================================ RESTART ================================
>>>
1920 1080
>>>