-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathForceAutoHDR.py
154 lines (130 loc) · 5.97 KB
/
ForceAutoHDR.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
import os.path
import threading
import winreg
import customtkinter
from tkinter import messagebox, filedialog
import ctypes
from PIL import Image
try:
ctypes.windll.shcore.SetProcessDpiAwareness(2)
except AttributeError:
ctypes.windll.user32.SetProcessDPIAware(True)
def add_exe_to_reg():
global keys_drop
exe_path = filedialog.askopenfilename(title="Select EXE", filetypes=[("Executable files", "*.exe")])
exe_name = os.path.basename(exe_path)
if exe_name == "":
messagebox.showerror(title="Error.", message="Select EXE to Add.")
return
base_path = r"Software\Microsoft\Direct3D"
key_name = exe_name.replace(".exe", "")
registry_path = fr"{base_path}\{key_name}"
key = None
try:
key = winreg.CreateKeyEx(winreg.HKEY_CURRENT_USER, registry_path, 0, winreg.KEY_SET_VALUE)
value_name_str = "Name"
winreg.SetValueEx(key, value_name_str, 0, winreg.REG_SZ, f"{key_name}.exe")
value_name_str = "D3DBehaviors"
winreg.SetValueEx(key, value_name_str, 0, winreg.REG_SZ,
"BufferUpgradeOverride=1;BufferUpgradeEnable10Bit=1")
messagebox.showinfo(title="Done.", message="EXE Name Added to Registry.")
keys_drop.configure(values=show_keys())
try:
keys_drop.set(value=show_keys()[0])
except IndexError:
keys_drop.set(value="No Games Found")
except OSError as e:
messagebox.showerror(title="Error", message=f"Error creating registry key: {e}")
if e.winerror == 87:
messagebox.showerror(title="Error",
message="The parameter might be incorrect. "
"Check if the registry path follows the expected format.")
messagebox.showerror(title="Error", message=f"Registry Path: {registry_path}")
else:
messagebox.showerror(title="Error", message="Unexpected error.")
finally:
if key is not None:
winreg.CloseKey(key)
def show_list_in_message_box(mylist):
message = '\n'.join(map(str, mylist))
messagebox.showinfo("AutoHDR Forced", message)
def show_keys():
path = r"Software\Microsoft\Direct3D"
try:
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, path, 0, winreg.KEY_READ | winreg.KEY_WOW64_64KEY) as key:
index = 0
keys = []
while True:
try:
subkey_name = winreg.EnumKey(key, index)
keys.append(subkey_name)
index += 1
except OSError:
break
except FileNotFoundError:
keypath = r"Software\Microsoft"
with winreg.CreateKey(winreg.HKEY_CURRENT_USER, keypath) as key:
winreg.CreateKey(key, 'Direct3D')
keys = []
except OSError as os_exception:
messagebox.showerror(title="Error", message=f"Error accessing registry: {os_exception}")
keys = []
return keys
def is_admin():
return ctypes.windll.shell32.IsUserAnAdmin()
def delete_registry_key(key_name):
global keys_drop
path = r"Software\Microsoft\Direct3D"
i = messagebox.askyesno(title="Warning.",
message=f"Are you sure you want to delete key in path: {path}\\{key_name}")
if not i:
return
else:
try:
if is_admin():
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, path, 0, winreg.KEY_SET_VALUE) as key:
winreg.DeleteKey(key, key_name)
messagebox.showinfo(title="Done.",
message=f"Registry key '{key_name}' in path '{path}' deleted successfully.")
keys_drop.configure(values=show_keys())
try:
keys_drop.set(value=show_keys()[0])
except IndexError:
keys_drop.set(value="No Games Found")
else:
messagebox.showerror(title="Error",
message="Run the script with administrator privileges to modify the registry.")
except FileNotFoundError:
messagebox.showerror(title="Error", message=fr"Registry path not found: {path}/{key_name}")
except PermissionError:
(messagebox.showerror
(title="Error",
message=f"Permission error: Unable to delete key in '{path}'. Ensure you have sufficient privileges."))
def do_popup(event, frame):
try:
frame.tk_popup(event.x_root, event.y_root)
finally:
frame.grab_release()
customtkinter.set_appearance_mode("light") # Modes: Computer (default), light, dark
customtkinter.set_default_color_theme("dark-blue") # Themes: blue (default), dark-blue, green
app = customtkinter.CTk()
app.geometry("400x240")
app.title("ForceAutoHDR v1.0.0.4")
app.iconbitmap(r"Resources\hdr.ico")
blank_image = Image.new('RGB', (1, 1))
keys_drop = customtkinter.CTkOptionMenu(master=app, values=show_keys())
try:
keys_drop.set(value=show_keys()[0])
except IndexError:
keys_drop.set(value="No Games Found")
keys_drop.place(relx=0.5, rely=0.2, anchor=customtkinter.CENTER)
add_button = customtkinter.CTkButton(master=app, text="Add Game EXE",
command=lambda: threading.Thread(target=lambda: add_exe_to_reg(),
daemon=True).start())
add_button.place(relx=0.5, rely=0.65, anchor=customtkinter.CENTER)
delete_button = customtkinter.CTkButton(master=app, text="Delete Game EXE",
command=lambda: threading.Thread(
target=lambda: delete_registry_key(keys_drop.get()),
daemon=True).start())
delete_button.place(relx=0.5, rely=0.80, anchor=customtkinter.CENTER)
app.mainloop()