如何通过网页超链接控制电脑应用程序

今日主题:如何通过手机网页超链接控制电脑应用程序

继上一篇:用Python实现手机实时监控电脑资源

我们通过手机端可以管理电脑进程资源,上一篇推文已经实现对电脑进程资源查看,本次介绍如何实现对电脑应用程序的启停管理。

如何开发手机管理电脑系统应用?

1、系统信息监控psutil模块,获取监控应用指标(这里主要包括进程pid、应用名称name、内存信息memory_info等,具体其他参数获取可查看文档手册。),生成data.json数据供后续网页模板用。

2、利用Flask生成展示网页,首先准备展示模板template.html,加载数据映射到对应的模板中输出展示网页。

3、通过点击手机网页需要关闭的应用程序超链接,传参进程名name到指定的路由函数执行调用杀掉进程树函数模块来关闭进程。当然也可以利用websocket实现,更方便体验更佳,后期进一步分享。

from flask import Flask,request,redirect
import psutil
import json
import string
import by_pid_kill_proc as kill_proc
app = Flask(__name__)

# 获取系统进程列表
def find_procs():
    pass
    return

@app.route('/kill_proL/<name>',methods=['GET'])
def kill_proL(name):
    PID = kill_proc.get_procs_pid(str(name))
    kill_proc.execute_kill_proc(PID)
    print('{0}进程已关闭'.format(name))
    Show_html() #刷新存活进程列表
    return redirect("http://192.168.0.2:8888") #重新加载页面

@app.route('/')
def Show_html():
        ........
    content = ""
    for i, (name,memory_info) in enumerate(data.items()):
        content += "<tr>"
        content += f"<td>{i + 1}</td>"
        content += f"<td><a href='/kill_proL/{name}'>{name}</a></td>"
        #content += f"<td><a href='myProject://name'>{name}</a></td>"
        content += f"<td>{memory_info}</td>"
        content += "</tr>"
        ........
    return output_html


if __name__=="__main__":
    app.run(host="0.0.0.0",port=8888)

具体杀掉进程树by_pid_kill_proc.py模块代码如下

import os
import  pandas as pd
import signal
import psutil
# 获取系统进程列表
def get_procs_pid(pro_name=None):
    Listname=[]
    Listpid=[]
    for proc in psutil.process_iter():
        try:
            pinfo = proc.as_dict(attrs=['pid', 'name'])
            Listname.append(pinfo.get('name'))
            Listpid.append(pinfo.get('pid'))
        except psutil.NoSuchProcess:
            pass
    L={"name":Listname,"pid":Listpid}
    df=pd.DataFrame(L)
    k_v=df.set_index('name')['pid'].to_dict()
    #获取进程pid
    pid=k_v[pro_name]
    return pid
    
#杀掉进程树
def kill_proc_tree(pid,sig=signal.SIGTERM,include_parent=True,timeout=None,on_terminate=None):
    if pid ==os.getpid():
        raise RuntimeError("I refuse to kill myself")
    parent =psutil.Process(pid)
    children=parent.children(recursive=True)

    if include_parent:
        children.append(parent)
    for p in children:
        p.send_signal(sig)
    gone,alive =psutil.wait_procs(children,timeout=timeout,callback=on_terminate)
    return (gone,alive)

#执行关闭应用
def execute_kill_proc(PID):
    kill_proc_tree(PID,sig=signal.SIGTERM,include_parent=True)

注:

1、关掉进程还可以用系统自带模块ntsd–系统调试工具

基本上除了WINDOWS系统自己的管理进程,ntsd都可以杀掉。

def execute_cmd_command(PID):
    os.system("ntsd -c q -p PID".format(PID))

2、通过进程PID来关闭进程

建立程序名称和PID字典,通过传参应用名称得到相应的PID,然后利用PID关闭应用。应用程序PID启动时是随机的,不能指定pid启用程序,因此采用网页超链接调用本地exe程序。

1)启动注册表:win+r——regedit,打开注册表

2)建立私有协议:在HKEY_CLASSES_ROOT下建立一个自己的协议名称,右键新建项,如myProject,下面继续按照以下结构创建项;

3)首先myProject项,建立URL Protocol项,并设定默认数据;

其次DefaultIcon项,设置成需要执行应用全路径,演示的是百度网盘的开启;

最后command项,设定数据为exe文件全路径+参数,这里%1就是传递给exe的参数,exe文件接收到该参数并执行。0表示完整执行路径,1表示网页传过来的字符串。

3、网络安全问题

如果用于生产环境,还需网络安全因素。

网页实现效果

同样在同一个局域网内手机端点击应用名称即可远程管理应用。

结合上一篇推文,文中包含全部源码,快动手搭建一个手机端网页超链接控制管理电脑系统资源的小应用吧!

AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。QQ、微信在线,随时响应!V:Jiabcdefh

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值