吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1816|回复: 20
上一主题 下一主题
收起左侧

[求助] PyAutoGUI和pywin32

[复制链接]
跳转到指定楼层
楼主
lizy169 发表于 2022-9-24 20:50 回帖奖励
25吾爱币
用了这个以后,
鼠标键盘也不能做其它事了,
准备在win10新开一个桌面,做其它事情,它就报错

[Python] 纯文本查看 复制代码
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", line  266, 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
这个模块并不能释放鼠标事件吧,也就是你运行的脚本相当于你人在操作电脑,只是比手动快而已

免费评分

参与人数 1吾爱币 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

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

实现这些功能,有其它的模块推荐吗?谢谢
4#
bobo2017365 发表于 2022-9-24 21:26
找下大漠插件吧,听说挺不错,好像是收费的,你可以看看,我没有试过
5#
wihn 发表于 2022-9-24 21:52
同一时间,屏幕上只能存在一个鼠标,所以想要自动化操作,如果同时自己在用鼠标做事,肯定会受影响.

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
lizy169 + 1 + 1 谢谢@Thanks!

查看全部评分

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

免费评分

参与人数 1热心值 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

7#
djrenkk 发表于 2022-9-24 23:41
pyautogui 要配合spy软件来做,去学习下spy
8#
 楼主| lizy169 发表于 2022-9-25 00:08 |楼主
djrenkk 发表于 2022-9-24 23:41
pyautogui 要配合spy软件来做,去学习下spy

谢谢,我去试试
9#
 楼主| 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比较大,用虚拟机的时候,还要重新配置环境,有点麻烦
10#
 楼主| 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}

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-18 14:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表