Python脚本速成

23_自动获取句柄

# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
from sc import * # 从 sc文件导入所有的函数等


class GeneratedUI:
    """生成的Tkinter界面"""

    def __init__(self, master=None):
        # 创建主窗口
        self.master = master if master else tk.Tk()
        self.master.title("编写自动获取句柄功能") # 窗口标题
        self.master.geometry("500x350+700+100") # 设置 窗口大小、窗口位置
        self.master.configure(bg='white')

        # 2. 核心:固定窗口大小(宽不可调,高不可调)
        # resizable(width=False, height=False)
        self.master.resizable(False, False) # 固定窗口大小

        # 创建界面组件
        self.组件布局()

        # 设置 按钮图标

        icon = tk.PhotoImage(file="./图片/句柄.png")

        self.master.nametowidget('按钮_取句柄').config(image=icon,compound="center")

        self.master.nametowidget('按钮_取句柄').image = icon



        # 关闭窗口事件 核心:绑定关闭窗口事件
        self.master.protocol("WM_DELETE_WINDOW", self.关窗窗口)

        self.注册大漠()

        # 按钮按住、弹起

        self.master.nametowidget('按钮_取句柄').bind("<ButtonPress-1>", self.取句柄_按住)
        self.master.nametowidget('按钮_取句柄').bind("<ButtonRelease-1>", self.取句柄_弹起)

        # 自动获取窗口句柄 按钮事件
        self.master.nametowidget('按钮_取窗口句柄').config(command=self.取窗口句柄)




    def 取窗口句柄(self):
        窗口句柄 = 窗口_枚举句柄(dms[0], 0, '晚舟归山', '', 57)
        句柄_列表 = 窗口句柄.split(",")
        序号 = 0
        for 句柄 in 句柄_列表: # 把所有句柄,提取出来
            序号 +=1
            self.日志(f'({序号}):{句柄}')

            if 序号 ==1:
                self.master.nametowidget("输入框_窗口句柄").insert(0,str(句柄))



    def 取句柄_按住(self,event):
        event.widget.config(relief="sunken")
        self.日志("开始取句柄!")

        self.master.nametowidget('输入框_窗口句柄').delete(0, tk.END)  # 删除所有内容(从开始到结束)



    def 取句柄_弹起(self,event):
        event.widget.config(relief="raised")

        窗口句柄 = 窗口_取鼠标指向句柄(dms[0])

        if 窗口句柄:
            self.日志(f"获取到的窗口句柄: {窗口句柄}")

            self.master.nametowidget('输入框_窗口句柄').insert(0, str(窗口句柄))  # 在开头插入


        else:
            self.日志(f"获取窗口句柄失败!")




    def 日志(self,text):
        self.master.nametowidget('文本框_日志').insert(tk.END, f"{text}\n")  # 追加文本到(写到末尾) → 文本框_日志

        # 核心:获取最后一行的索引,拆分出行号 'end-1c' 表示最后一个字符的位置(排除Text默认的结束符)
        last_index = self.master.nametowidget('文本框_日志').index('end-1c')
        # 按 '.' 拆分,取第一个部分(行号)并转为整数
        总行数 = int(last_index.split('.')[0])

        if 总行数 ==3000:
            self.master.nametowidget('文本框_日志').delete('1.0',tk.END) # 清空所有



    def 注册大漠(self):

        # with open('./注册码.txt', 'r', encoding='utf8') as f:
        #     注册码信息 = f.read() # 读取文件内的所有内容
        #
        #     if 注册码信息: # 不为空
        #         返回_列表 = 注册码信息.split("\n") # 通过换行符分割
        #
        #         if len(返回_列表)>=2:
        #
        #             注册码 = 返回_列表[0] # 第一个
        #             附加码 = 返回_列表[1]  # 第二个

        注册码,附加码 = 取注册码()

        if 注册码 and 附加码:
            大漠初始化(注册码,附加码)

            if len(dms)>0: # 不为空 表示 大漠初始化成功,也就是成功创建了大漠对象
                self.master.nametowidget('文本框_日志').insert(tk.END, "注册大漠VIP成功!\n")  # 追加文本到(写到末尾) → 文本框_日志
            else:
                self.master.nametowidget('文本框_日志').insert(tk.END, "注册大漠VIP失败!\n")  # 追加文本到(写到末尾) → 文本框_日志

        else:
            弹窗提醒("未读取到注册码信息!")
            return

    def 关窗窗口(self):

        print("开始关闭窗口")

        if len(dms)>0: # 判断 大漠【dms】是否初始化成功
            后台_解绑窗口(dms[0])

        self.master.destroy() # 销毁窗口

        print("结束关闭窗口")

    def 组件布局(self):
        """创建所有界面组件"""

        # 文本框: 文本框_8e35b19a -> text_1
        self.text_1 = tk.Text(
            self.master,
            bg="white",
            fg="black",
            font=('微软雅黑', 10),
            name="文本框_日志"
        )
        self.text_1.place(
            x=17.0,
            y=60.0,
            width=462.0,
            height=273.0
        )

        # 按钮: 按钮_84940ab4 -> btn_1
        self.btn_1 = tk.Button(
            self.master,
            text="",
            bg="#4CAF50",
            fg="white",
            font=('微软雅黑', 10),
            name="按钮_取句柄"
        )
        self.btn_1.place(
            x=16.0,
            y=14,
            width=25,
            height=25
        )

        # 输入框: 输入框_8200ce36 -> entry_1
        self.entry_1 = tk.Entry(
            self.master,
            bg="white",
            fg="black",
            font=('微软雅黑', 10),
            name="输入框_窗口句柄"
        )
        self.entry_1.place(
            x=45.0,
            y=14,
            width=80,
            height=25
        )

        # 按钮: 按钮_04e4bf14 -> btn_2
        self.btn_2 = tk.Button(
            self.master,
            text="取窗口句柄",
            bg="#4CAF50",
            fg="white",
            font=('微软雅黑', 10),
            name="按钮_取窗口句柄"
        )
        self.btn_2.place(
            x=130.0,
            y=14,
            width=82,
            height=25
        )


def main():
    """主函数"""
    root = tk.Tk()
    app = GeneratedUI(root)
    root.mainloop()

if __name__ == "__main__":
    main()