<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何通過網(wǎng)頁超鏈接控制電腦應(yīng)用程序

          共 2952字,需瀏覽 6分鐘

           ·

          2022-03-08 13:41

          點擊關(guān)注“Python數(shù)據(jù)分析實例

          設(shè)為“置頂或星標”,送達干貨不錯過!c141e3dc71a7fead18d4a46e2af89ac8.webp

          大家好,我是Brook!


          今日主題:如何通過手機網(wǎng)頁超鏈接控制電腦應(yīng)用程序


          繼上一篇:用Python實現(xiàn)手機實時監(jiān)控電腦資源


          我們通過手機端可以管理電腦進程資源,上一篇推文已經(jīng)實現(xiàn)對電腦進程資源查看,本次介紹如何實現(xiàn)對電腦應(yīng)用程序的啟停管理


          如何開發(fā)手機管理電腦系統(tǒng)應(yīng)用?

          1、系統(tǒng)信息監(jiān)控psutil模塊,獲取監(jiān)控應(yīng)用指標(這里主要包括進程pid、應(yīng)用名稱name、內(nèi)存信息memory_info等,具體其他參數(shù)獲取可查看文檔手冊,生成data.json數(shù)據(jù)供后續(xù)網(wǎng)頁模板用。

          2、利用Flask生成展示網(wǎng)頁,首先準備展示模板template.html,加載數(shù)據(jù)映射到對應(yīng)的模板中輸出展示網(wǎng)頁。

          3、通過點擊手機網(wǎng)頁需要關(guān)閉的應(yīng)用程序超鏈接,傳參進程名name到指定的路由函數(shù)執(zhí)行調(diào)用殺掉進程樹函數(shù)模塊來關(guān)閉進程。當然也可以利用websocket實現(xiàn),更方便體驗更佳,后期進一步分享。

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

          #?獲取系統(tǒng)進程列表
          def?find_procs():
          ????pass
          ????return

          @app.route('/kill_proL/',methods=['GET'])
          def?kill_proL(name):
          ????PID?=?kill_proc.get_procs_pid(str(name))
          ????kill_proc.execute_kill_proc(PID)
          ????print('{0}進程已關(guān)閉'.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?+=?""
          ????????content?+=?f"{i?+?1}"
          ????????content?+=?f"{name}"
          ????????#content?+=?f"{name}"
          ????????content?+=?f"{memory_info}"
          ????????content?+=?""
          ????????........
          ????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
          #?獲取系統(tǒng)進程列表
          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)

          #執(zhí)行關(guān)閉應(yīng)用
          def?execute_kill_proc(PID):
          ????kill_proc_tree(PID,sig=signal.SIGTERM,include_parent=True)


          注:

          1、關(guān)掉進程還可以用系統(tǒng)自帶模塊ntsd--系統(tǒng)調(diào)試工具基本上除了WINDOWS系統(tǒng)自己的管理進程,ntsd都可以殺掉。
          def?execute_cmd_command(PID):
          ????os.system("ntsd?-c?q?-p?PID".format(PID))

          593b76c54c7c9256ce44cf86805c1626.webp

          2、通過進程PID來關(guān)閉進程

          建立程序名稱和PID字典,通過傳參應(yīng)用名稱得到相應(yīng)的PID,然后利用PID關(guān)閉應(yīng)用。應(yīng)用程序PID啟動時是隨機的,不能指定pid啟用程序,因此采用網(wǎng)頁鏈接調(diào)用本地exe程序。

          1)啟動注冊表:win+r——regedit,打開注冊表

          e61d0d33f902f7631cbcd785772a137f.webp

          2)建立私有協(xié)議:在HKEY_CLASSES_ROOT下建立一個自己的協(xié)議名稱,右鍵新建項,如myProject,下面繼續(xù)按照以下結(jié)構(gòu)創(chuàng)建項;

          0a0f0288c6f188270ef0473484f11cca.webp

          3)首先myProject項,建立URL Protocol項,并設(shè)定默認數(shù)據(jù);

          f03925337fadacda39987c525a854204.webp

          其次DefaultIcon項,設(shè)置成需要執(zhí)行應(yīng)用全路徑,演示的是百度網(wǎng)盤的開啟;

          fe25ba5c2e010b90d6011d404bbc91e5.webp

          最后command項,設(shè)定數(shù)據(jù)為exe文件全路徑+參數(shù),這里%1就是傳遞給exe的參數(shù),exe文件接收到該參數(shù)并執(zhí)行。0表示完整執(zhí)行路徑,1表示網(wǎng)頁傳過來的字符串。

          f3d1ce091e047d42f9cab408278a2857.webp

          3、網(wǎng)絡(luò)安全問題

          如果用于生產(chǎn)環(huán)境,還需網(wǎng)絡(luò)安全因素。


          網(wǎng)頁實現(xiàn)效果


          同樣在同一個局域網(wǎng)內(nèi)手機端點擊應(yīng)用名稱即可遠程管理應(yīng)用。


          d6efb0a00b97240c899cd3a508dd35ba.webp


          瀏覽 38
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青娱乐色色 | 亚洲天堂中文字幕 | 青青自拍视频免费观看 | 做爱小视频网址在线观看 | 黄色一级操逼视频 |