# -*- 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.组件布局()
# 全局变量
self.已绑定 = False
# 设置 按钮图标
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.取窗口句柄)
# 绑定窗口 按钮事件
self.master.nametowidget('按钮_绑定窗口').config(command=self.绑定窗口)
# 解绑窗口 按钮事件
self.master.nametowidget('按钮_解绑窗口').config(command=self.解绑窗口)
# 测试功能 按钮事件
self.master.nametowidget('按钮_测试功能').config(command=self.测试功能)
def 测试功能(self):
if self.已绑定 == False: # 没有绑定窗口
弹窗提醒("温馨提示:请先绑定窗口句柄!")
return # 如果不绑定窗口,就不让代码往下执行
self.日志("开始测试功能!")
当前x,当前y = 取人物当前坐标(dms[0],5,580,146,598,"fdfdfd-050505",1,0) # 手动
if 当前x != -1 and 当前y != -1:
self.日志(f'当前坐标【手动字库】:{当前x},{当前y}')
else:
self.日志(f'当前坐标【手动字库】,获取失败!')
当前x,当前y = 取人物当前坐标(dms[0], 5, 580, 146, 598, "fdfdfd-050505", 1, 0) # 系统
if 当前x != -1 and 当前y != -1:
self.日志(f'当前坐标【系统字库】:{当前x},{当前y}')
else:
self.日志(f'当前坐标【系统字库】,获取失败!')
def 绑定窗口(self):
self.日志("开始绑定窗口!")
窗口句柄 = self.master.nametowidget('输入框_窗口句柄').get().strip() # strip 表示删除首、尾空
if not 窗口句柄:
弹窗提醒("警告:请先获取窗口句柄!")
return
返回_绑定 = 后台_绑定窗口(dms[0], int(窗口句柄), 'gdi', 'dx2', 'dx', 0)
if 返回_绑定 == 1:
self.已绑定 = True
self.日志("绑定窗口成功!")
print("绑定窗口成功!")
else:
self.已绑定 = False
self.日志("绑定窗口失败!")
print("绑定窗口失败!")
def 解绑窗口(self):
self.日志("解绑窗口!")
返回_解绑 = 后台_解绑窗口(dms[0])
if 返回_解绑 ==1:
self.日志("解绑窗口成功!")
else:
self.日志("解绑窗口失败!")
self.已绑定 = False
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") # 追加文本到(写到末尾) → 文本框_日志
返回_手动 = 文字_置字库(dms[0], 0, "./数字_手动字库.txt") # 手动
if 返回_手动 ==1:
self.日志("设置【手动字库】成功!")
else:
self.日志("设置【手动字库】失败!")
返回_系统 = 文字_置字库(dms[0], 1, "./数字_系统字库.txt") # 系统
if 返回_系统 == 1:
self.日志("设置【系统字库】成功!")
else:
self.日志("设置【系统字库】失败!")
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=105.0,
width=463.0,
height=223.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
)
# 按钮: 按钮_a7fcc7df -> btn_3
self.btn_3 = tk.Button(
self.master,
text="绑定窗口",
bg="#4CAF50",
fg="white",
font=['微软雅黑', 10],
name="按钮_绑定窗口"
)
self.btn_3.place(
x=222.0,
y=14,
width=100,
height=25
)
# 按钮: 按钮_3dcb43a9 -> btn_4
self.btn_4 = tk.Button(
self.master,
text="解绑窗口",
bg="#4CAF50",
fg="white",
font=['微软雅黑', 10],
name="按钮_解绑窗口"
)
self.btn_4.place(
x=332.0,
y=14,
width=100,
height=25
)
# 按钮: 按钮_347219cb -> btn_5
self.btn_5 = tk.Button(
self.master,
text="测试功能",
bg="#4CAF50",
fg="white",
font=('微软雅黑', 10),
name="按钮_测试功能"
)
self.btn_5.place(
x=20.0,
y=58.0,
width=68,
height=25
)
def main():
"""主函数"""
root = tk.Tk()
app = GeneratedUI(root)
root.mainloop()
if __name__ == "__main__":
main()