python - 用os.system打开程序卡在CMD窗口上怎么办?
怪我咯
怪我咯 2017-04-18 09:03:12
0
2
489

这是一个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'),
仍然出现以上问题。希望大家给点意见。

怪我咯
怪我咯

走同样的路,发现不同的人生

Antworte allen (2)
左手右手慢动作

问题在于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)
    黄舟

    由于os.system实际上是会创建一个cmd.exe进程,然后有这个进程在创建qq进程。 为了避免出现cmd.exe流程,可以直接使用subprocess之类的模块直接打开qq即可。

      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage
      Über uns Haftungsausschluss Sitemap
      Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!