冒險島079登錄器 PY 網頁版源碼

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
from flask import Flask,render_template
from flask import request
import json
from threading import Thread
import os
import subprocess
import time

def async2(func):
    def wrapper(*args, **kwargs):
        thr = Thread(target = func, args = args, kwargs = kwargs)
        thr.start()
    return wrapper

'''
加載網頁
'''
class MainWindow(QMainWindow):

    windowMinimumed = pyqtSignal()

    def __init__(self):
        super(MainWindow, self).__init__()
        self.setWindowTitle('079沉浸冒險島登器')  #窗口標題
        self.setGeometry(200,130,900,500)  #窗口的大小和位置設置
        self.browser=QWebEngineView()
        #加載外部的web界面
        self.browser.load(QUrl('http://118.24.13.206:5000/mxd_deq2'))
        self.setCentralWidget(self.browser)
        run_web_server()

    '''
    重寫關閉窗口按鈕事件重新
    '''
    def closeEvent(self,event):
        z_popen("taskkill /pid 5000 -t -f")
        z_popen("TASKKILL /F /IM 079沉浸冒險島登器.exe /T")
        z_popen("TASKKILL /F /IM MapleStory.exe /T")
        z_popen("TASKKILL /F /IM python.exe /T")

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.m_flag = True
            self.m_Position = event.globalPos() - self.pos()  # 獲取鼠標相對窗口的位置
            event.accept()
            self.setCursor(QCursor(Qt.OpenHandCursor))  # 更改鼠標圖標

    def mouseMoveEvent(self, QMouseEvent):
        if Qt.LeftButton and self.m_flag:
            self.move(QMouseEvent.globalPos() - self.m_Position)  # 更改窗口位置
            QMouseEvent.accept()

    def mouseReleaseEvent(self, QMouseEvent):
        self.m_flag = False
        self.setCursor(QCursor(Qt.ArrowCursor))




#-------------本地web接口----------------
@async2
def run_web_server():
    '''
       tasklist
       taskkill /pid 9396 -t
       '''

    def z_popen(cmd):
        try:
            p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            lines = p.stdout.readlines()
            status = p.wait()
            return [line.decode('gbk') for line in lines]
            # taks_list = os.popen(cmd)
            # return [item for item in taks_list.read().split("\n")]
        except Exception as ex:
            pass
    #----------------------------
    app = Flask(__name__)
    # 啓動遊戲
    def start_game():
        ocmd = "MapleStory.exe 128.24.13.206 3339"
        subprocess.Popen(ocmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        # status = p.wait()
        time.sleep(1)
        open_game()

    '''
    打開遊戲
    '''
    def open_game():
        try:
            time.sleep(1)
            # 關閉第一個彈窗頁面
            cmd_text = z_popen("tasklist")
            for item in cmd_text:
                if "MapleStory.exe" in item:
                    data_list = [x for x in item.split(" ") if x]
                    n_cmd = "taskkill /pid %s -t" % (data_list[1])
                    z_popen(n_cmd)
                    break
            time.sleep(2)
        except Exception as ex:
            sys.exit(0)

    #運行遊戲
    @app.route('/run_game', methods=['GET', 'POST'])
    def run_game():
        if request.method == 'GET':
            print("運行遊戲")
            data={}
            start_game()
            data["msg"]=True
            return json.dumps(data,ensure_ascii=False)
        else:
            return "請求方法錯誤!"
    #關閉窗口
    @app.route('/close_ck', methods=['GET', 'POST'])
    def close_ck():
        if request.method == 'GET':
            z_popen("TASKKILL /F /IM 079沉浸冒險島登器.exe /T")
            z_popen("TASKKILL /F /IM python.exe /T")
            # win.on_pushButton_clicked()
            data = {}
            data["msg"] = True
            return json.dumps(data, ensure_ascii=False)
        else:
            return "請求方法錯誤!"
    #防爆內存
    @app.route('/fangbaoneircun', methods=['GET', 'POST'])
    def fangbaoneircun():
        if request.method == 'GET':
            z_popen("內存釋放器 .exe")
            data = {}
            data["msg"] = True
            return json.dumps(data, ensure_ascii=False)
        else:
            return "請求方法錯誤!"
    #預留的萬能執行命令端口
    @app.route('/universal', methods=['GET', 'POST'])
    def universal():
        if request.method == 'GET':
            cmd_str = request.args.get("cmd_str")
            z_popen(cmd_str)
            data = {}
            data["msg"] = True
            return json.dumps(data, ensure_ascii=False)
        else:
            return "請求方法錯誤!"
    #-----------------------------------------
    app.run(port=5000)

if __name__ == '__main__':

    def z_popen(cmd):
        try:
            p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            lines = p.stdout.readlines()
            status = p.wait()
            return [line.decode('gbk') for line in lines]
        except Exception as ex:
            pass
    #--------------------------
    app=QApplication(sys.argv)
    win=MainWindow()
    win.show()
    app.exit(app.exec_())

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章