PyAutoGUI和pywin32
用了这个以后,鼠标键盘也不能做其它事了,
准备在win10新开一个桌面,做其它事情,它就报错
import time
import pyautogui
import win32gui
i = 1
while True:
# hwnd = win32gui.FindWindow(0, '新建文本文档 - 记事本')
hwnd = win32gui.FindWindow(0, '*新建文本文档 - 记事本')# 根据窗口标题,取得窗口句柄,失败返回0
win32gui.SetForegroundWindow(hwnd)# 设定窗口显示在最前面并为活动窗口
pyautogui.typewrite(str(i))# 模拟键盘输入字符
i += 1
time.sleep(3)
# ***win10新建桌面,就报以下错误***
# Traceback(most recent call last):
# File "x:\xxxx\xxx.py", line266, in < module >
# win32gui.SetForegroundWindow(hwnd)# 窗口显示最前面为活动窗口
# pywintypes.error: (0, 'SetForegroundWindow', 'No error message is available')
最开始我用pyautogui识图对比找到'新建文本文档 - 记事本'这个坐标,模拟鼠标左键点击设为活动窗口,然后进行操作;
能在win10新开的一个桌面上独立运行,嫌弃识图对比效率慢,好像鼠标键盘在不同桌面也相互干扰,总是出错
后来我用pywin32来设定活动窗口,取消鼠标操作,直接用pyautogui模拟键盘操作,
这样效率高了,新增电脑桌面做其它事情的时候,直接就挂了报错
百度了一天,也没找到好的方法,
我想实现两个功能:
一是根据python运行输出的结果,对电脑另一个程序进行操作,这只实现了一半(鼠标键盘不能动,动就容易冲突出错)
再就是想让它在后台运行或新开桌面我能做其它事情
请教万能的吾爱大神和各位师兄师姐
谢谢
这个模块并不能释放鼠标事件吧,也就是你运行的脚本相当于你人在操作电脑,只是比手动快而已 bobo2017365 发表于 2022-9-24 21:07
这个模块并不能释放鼠标事件吧,也就是你运行的脚本相当于你人在操作电脑,只是比手动快而已
实现这些功能,有其它的模块推荐吗?谢谢 找下大漠插件吧,听说挺不错,好像是收费的,你可以看看,我没有试过 同一时间,屏幕上只能存在一个鼠标,所以想要自动化操作,如果同时自己在用鼠标做事,肯定会受影响. https://stackoverflow.com/a/58416808:
One thing I've found to work is running the pyautogui script in a virtual machine, which lets it use the virtual mouse & keyboard. This has the twofold benefit of a. allowing you to do other work while the script is running, and b. the virtual mouse & keyboard are not interrupted with the computer going to sleep.
Hope this helps!
在虚拟机中运行pyautoguui脚本,它允许它使用虚拟鼠标和键盘。这具有双重好处:a.允许您在脚本运行时执行其他工作,以及b.虚拟鼠标和键盘不会因计算机进入睡眠状态而中断。 pyautogui 要配合spy软件来做,去学习下spy djrenkk 发表于 2022-9-24 23:41
pyautogui 要配合spy软件来做,去学习下spy
谢谢,我去试试 zhi_huo 发表于 2022-9-24 22:52
https://stackoverflow.com/a/58416808:
One thing I've found to work is running the pyautogui script ...
会考虑这个方法,但有其它的方法更好,在运行程序的时候,会用到本地硬盘上的很多数据,占用内存和CPU比较大,用虚拟机的时候,还要重新配置环境,有点麻烦 djrenkk 发表于 2022-9-24 23:41
pyautogui 要配合spy软件来做,去学习下spy
spy是什么?我百度不到呢?是spy++?用来获取窗口句柄的那个?
名字叫spyxx是不是这个?
如果是这个,我用的更自动的方法来获取句柄,
aa = win32gui.FindWindow(0, '*新建文本文档 - 记事本')直接返回句柄,不用手动查找
然后win32gui.SetForegroundWindow(aa)可以直接代入
pywinauto.Application(backend="uia").connect(handle=aa)也可以直接代入
刚刚试了pywinauto方法也不行,也报错:
pywinauto.timings.TimeoutError
During handling of the above exception, another exception occurred:
****
raise ElementNotFoundError(kwargs)
pywinauto.findwindows.ElementNotFoundError: {'best_match': '*新建文本文档 - 记事本', 'backend': 'uia', 'process': 11360}