【问题标题】:"Closing the internet connection" to another computer python 2.7“关闭互联网连接”到另一台计算机 python 2.7
【发布时间】:2019-02-11 23:03:16
【问题描述】:

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

因为我不能只是让客户关闭互联网(因为那样我们将无法与他沟通)
我想运行一个线程。当处于活动状态时(当服务器向客户端发送“close_internet”时),线程会运行一个 while true 函数来关闭所有 浏览器(从而“关闭”其互联网连接)。我将列出线程将主动关闭的已知浏览器(不是全部)。 这行代码按名称关闭任何进程:

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】:

尝试使用 subprocess 模块。我认为您不需要线程来执行此任务。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2013-10-30
    • 1970-01-01
    相关资源
    最近更新 更多