python - 用os.system打开程序卡在CMD窗口上怎么办?
本文介绍了python - 用os.system打开程序卡在CMD窗口上怎么办?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
这是一个Windos自动登录QQ的一段代码,但是有个问题。(win10, python2.7)
import os
import win32api
import win32con
import time
from ctypes import *
os.system("D:\qq\Bin\QQ.exe")
time.sleep(0.5)
windll.user32.SetCursorPos(969,583)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0,0,0)
其中,
os.system("D:\qq\Bin\QQ.exe")
time.sleep(0.5)
windll.user32.SetCursorPos(969,583)
这一步是打开QQ,并把鼠标指在账号输入的地方。
可是CMD打开QQ后,CMD窗口依然停留在桌面上,导致接下来的'移动鼠标'不能运行,我手动关闭CMD窗口程序才能继续。请问大家有什么好方法让CMD窗口消失吗?
直接在CMD里用"D:qqBinQQ.exe" & exit可以实现打开qq并退出CMD,
于是我尝试修改成os.system(' "D:qqBinQQ.exe" and exit'),
仍然出现以上问题。希望大家给点意见。
解决方案
问题在于os.system
是阻塞的, 一定要上一步完成你才能做下一步 你是要在打开QQ的同时 去调用鼠标 所以二者矛盾
改用subprocess
import subprocess
import win32api
import win32con
import time
from ctypes import *
qq_exe = r"D:\qq\Bin\QQ.exe"
subprocess.Popen([qq_exe])
time.sleep(5)//由于非阻塞 sleep时间要增大 或者可以调用其他方法 探测qq的窗口存在吗
windll.user32.SetCursorPos(969, 583)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
这篇关于python - 用os.system打开程序卡在CMD窗口上怎么办?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文