
这个挺复杂的。如果你能让软件固定位置不动。可以使用pyhook,其中有一个按鼠标按键的功能。通常可以用来做游戏的自动工具。
如果再想进一步,需要分析你的程序是什么做的。如果是WEB APP,需要知道它用什么浏览器内核,也调用相应的插件点击。 如果是传统WNDOWS程序,可以使用win32 api,通过获得窗口句柄 ,并通过迭代查询找到控件的句柄,最后用发送消息,获取消息的办法来控制它。
另外还有一类程序,比如flash之类的。用这些方法都不成了。因为它内部的代码不公开。如果一定要进一步研发。可以试着反编译出action script。然后想办法替换其中的逻辑。再使用java script去控制其中的逻辑,实现自动化处理。
不知道你解决了没,最近正好研究python。
hwnd=win32guiFindWindow()这个获取窗体句柄,大概都会用;
ctrl=win32guiFindWindowEx(hwnd,None,'窗口类名',‘标题文本’)已知控件类名或控件名时获取控件句柄,这个标题文本不一定存在,所以使用None默认值获取的是该窗口类名中第一个顺位的控件句柄。
你使用b=win32guiGetDlgItem(edit,资源ID)最终结果是获取的是句柄,这里的资源ID其实是spy++中的窗口ID,句柄是可变的,窗口ID是不可变的。这里似乎错了,你这样子大概获取的是控件中的子项(控件有子项的话,比如Combox中的edit框),我猜的,没试过。b=win32guiGetDlgItem(hwnd,窗口ID)是已知ID下获取某控件句柄
如果你想获取某个控件的ID则ctrlid=win32guiGetDlgCtrlID(ctrl)这是一只某控件句柄的情况下获取该控件在应用程序中的窗口ID。
如果不知控件句柄的情况下大概可以试试spy++获取窗口ID,把窗口ID(这个是16进制的)转化成10进制带进b=win32guiGetDlgItem(hwnd,窗口ID)大概也可以得到控件句柄。
其实就是三个函数之间的转化
ctrl=win32guiFindWindowEx(hwnd,None,'edit',None)控件句柄
ctrlid=win32guiGetDlgCtrlID(ctrl)控件的窗口id
ctrl2=win32guiGetDlgItem(hwnd,ctrlid)控件句柄
print "%x" %ctrllist
print "%x" %ctrlid
print "%x" %ctrl
输出,看一下数据与spy++是否一致。然后ctrl=ctrl2
为了方便,我们可以将文件直接拖到QLineEdit或者其他控件中来获取文件路径,这样就不需要实现Button,还要一步步打开文件路径,效率比较低。
实现拖拽文件的步骤如下:
首先我们需要先将控件设置成下图的属性(一般不需要设置,默认是打开的)。
然后新建"MyWidgetpy"文件,重写相应控件的类。
最后,在QT Designer中新建"Promote"。
输入类名和头文件名,这里的类名和头文件要和之前新建的py文件名和重写的类名一致。
重新点击控件,右键选择下图的选项,如果其他同类的控件也需要这个功能,也可设置。
完成以上步骤后,重新加载UI即可。
以上就是关于python需要什么库 才能帮我按下其它程序交互界面的按钮全部的内容,包括:python需要什么库 才能帮我按下其它程序交互界面的按钮、python pywin32 里面 *** 作窗体,获取窗体里面的数据,在函数GetDlgItem函数中,怎么获取第二个参数的值、【Python】拖拽文件的实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)