lizy169 发表于 2022-9-24 20:50

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 20:50

这个模块并不能释放鼠标事件吧,也就是你运行的脚本相当于你人在操作电脑,只是比手动快而已

lizy169 发表于 2022-9-24 21:16

bobo2017365 发表于 2022-9-24 21:07
这个模块并不能释放鼠标事件吧,也就是你运行的脚本相当于你人在操作电脑,只是比手动快而已

实现这些功能,有其它的模块推荐吗?谢谢

bobo2017365 发表于 2022-9-24 21:26

找下大漠插件吧,听说挺不错,好像是收费的,你可以看看,我没有试过

wihn 发表于 2022-9-24 21:52

同一时间,屏幕上只能存在一个鼠标,所以想要自动化操作,如果同时自己在用鼠标做事,肯定会受影响.

zhi_huo 发表于 2022-9-24 22:52

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.虚拟鼠标和键盘不会因计算机进入睡眠状态而中断。

djrenkk 发表于 2022-9-24 23:41

pyautogui 要配合spy软件来做,去学习下spy

lizy169 发表于 2022-9-25 00:08

djrenkk 发表于 2022-9-24 23:41
pyautogui 要配合spy软件来做,去学习下spy

谢谢,我去试试

lizy169 发表于 2022-9-25 00:11

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比较大,用虚拟机的时候,还要重新配置环境,有点麻烦

lizy169 发表于 2022-9-25 00:34

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}

页: [1] 2 3
查看完整版本: PyAutoGUI和pywin32