“关闭互联网连接”到另一台计算机python 2.7

问题描述 投票:0回答:1

我需要在py 2.7中编写一个函数 当它处于活动状态时,它会关闭所有与客户端互联网的连接(它是服务器 - 客户端套接字连接)

因为我不能让客户关闭互联网(因为那时我们将无法与他沟通) 我想要运行一个帖子。当激活时(当服务器向客户端发送“close_internet”时)该线程运行一个真正的函数,关闭所有浏览器(从而“关闭”它的互联网连接)。我将有一个已知的浏览器列表(不是全部)线程将主动关闭。这行代码按名称关闭任何进程:

import os
import threading


def close_internet():
    while 1:
        try:
            os.system('taskkill /f /im MicrosoftEdge.exe')
        except:
            pass

threading.Thread(target=close_internet, args=()).start()

当我运行此代码时,它确实有效,当我打开它时关闭资源管理器(资源管理器仅用于测试,您可以更改为chrome.exe或firefox.exe) 但是,在控制台中,它会一直打印一些可怕的错误:

ERROR: The process "MicrosoftEdge.exe" not found.
ERROR: The process "MicrosoftEdge.exe" not found.
ERROR: The process "MicrosoftEdge.exe" not found.
ERROR: The process "MicrosoftEdge.exe" not found.
ERROR: The process "MicrosoftEdge.exe" not found.
ERROR: The process "MicrosoftEdge.exe" not found.

我能做什么?我只需要这个程序在后台工作,用户不会注意到这些错误。当我没有打开资源管理器时,错误出现(并不奇怪)。 当我打开它,它工作正常并打印:

ERROR: The process "MicrosoftEdge.exe" not found.
ERROR: The process "MicrosoftEdge.exe" not found.
SUCCESS: The process "MicrosoftEdge.exe" with PID 10808 has been terminated. # <-- this line
ERROR: The process "MicrosoftEdge.exe" not found.

该功能在客户端编程!

我该如何解决? 其次,这是以名称关闭流程的正确方法吗?它有效吗?或者是否有更有效的方法来关闭一个过程(也许使用它的PID使它更快......)我想听听你的建议。

谢谢!

windows python-2.7 operating-system
1个回答
0
投票

尝试使用子进程模块。我不认为你需要线程来完成这项任务。

这是我用来打开Windows资源管理器并突出显示文件的代码。

subprocess.Popen(r'explorer /select, %s%s'%(self.cwd, ofile))

应该很容易修改您的任务。此代码还假设Edge已打开且名称为MicrosoftEdge.exe是进程名称。什么也不做,看看你是否可以使用python获取正在运行的进程列表,浏览该列表并检查要关闭的应用程序是否已经打开。 Here是一个链接,其中包含有关获取在Windows上运行的进程列表的一些信息。

© www.soinside.com 2019 - 2024. All rights reserved.