kodu buradan veya dm atabilirmisiniz
tabiki 2 dakika beklemeni isterim
kodu buradan veya dm atabilirmisiniz
import os
import sys
import ctypes
import time
import shutil
import subprocess
import threading
from pathlib import Path
import psutil
import customtkinter as ctk
from tkinter import messagebox
try:
import win32con
import win32api
import win32process
except Exception:
win32con = None
win32api = None
win32process = None
SYSTEM_PROCESS_NAMES = {
"System", "Registry", "smss.exe", "csrss.exe", "wininit.exe",
"winlogon.exe", "services.exe", "lsass.exe", "explorer.exe",
"svchost.exe", "conhost.exe", "dwm.exe", "spoolsv.exe"
}
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except Exception:
return False
def run_command(cmd, capture=False, timeout=15):
try:
if capture:
out = subprocess.check_output(cmd, universal_newlines=True, stderr=subprocess.STDOUT, timeout=timeout)
return True, out
else:
subprocess.check_call(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, timeout=timeout)
return True, None
except subprocess.CalledProcessError as e:
return False, getattr(e, "output", str(e))
except Exception as e:
return False, str(e)
def set_power_plan_high_performance(l0g):
ok, out = run_command(["powercfg", "-l"], capture=True)
if not ok:
l0g("Power plan sorgulanamadı: " + (out or "bilinmeyen hata"))
return
target_guid = None
for line in out.splitlines():
low = line.lower()
if "ultimate performance" in low or "high performance" in low:
parts = line.split("Power Scheme GUID:")
if len(parts) > 1:
guid = parts[1].split()[0].strip()
target_guid = guid
break
if target_guid:
ok2, _ = run_command(["powercfg", "/setactive", target_guid])
if ok2:
l0g("Power plan yüksek performans olarak ayarlandı.")
else:
l0g("Power plan ayarlanamadı.")
else:
l0g("High/Ultimate Performance planı bulunamadı; manuel ayar önerilir.")
def flush_dns(l0g):
ok, _ = run_command(["ipconfig", "/flushdns"])
if ok:
l0g("DNS önbelleği temizlendi.")
else:
l0g("DNS temizleme başarısız olabilir.")
def clear_temp_folders(l0g, limit_delete=10000):
tmp_paths = [os.getenv("TEMP"), os.getenv("TMP"), str(Path.home() / "AppData" / "Local" / "Temp")]
removed = 0
for p in tmp_paths:
if not p:
continue
try:
for item in Path(p).iterdir():
if removed >= limit_delete:
break
try:
if item.is_file():
item.unlink()
removed += 1
elif item.is_dir():
shutil.rmtree(item, ignore_errors=True)
removed += 1
except Exception:
continue
l0g(f"{p} temizlenmeye çalışıldı.")
except Exception as e:
l0g(f"{p} erişilemedi veya temizlenemedi: {str(e)}")
l0g(f"Yaklaşık {removed} geçici dosya kaldırılmaya çalışıldı veya atlandı.")
def stop_service(service_name, l0g):
ok, _ = run_command(["sc", "stop", service_name])
if ok:
l0g(f"{service_name} servisi durduruldu (isteğe bağlı olarak yeniden başlatılabilir).")
else:
l0g(f"{service_name} servisi durdurulamadı veya zaten duruyor.")
def list_user_processes(limit=80):
procs = []
for proc in psutil.process_iter(["pid", "name", "username", "cpu_percent", "memory_info"]):
try:
name = proc.info.get("name") or ""
if not name:
continue
if name in SYSTEM_PROCESS_NAMES:
continue
mem = 0
mi = proc.info.get("memory_info")
if mi:
mem = getattr(mi, "rss", 0)
procs.append({
"pid": proc.info.get("pid"),
"name": name,
"user": proc.info.get("username"),
"cpu": proc.info.get("cpu_percent"),
"mem": mem
})
except Exception:
continue
procs.sort(key=lambda x: x["mem"], reverse=True)
return procs[:limit]
def kill_process(pid, l0g):
try:
p = psutil.Process(pid)
if p.name() in SYSTEM_PROCESS_NAMES:
l0g(f"PID {pid} atlandı: sistem süreci.")
return False
p.kill()
l0g(f"PID {pid} ({p.name()}) kapatıldı.")
return True
except psutil.NoSuchProcess:
l0g(f"PID {pid} bulunamadı.")
return False
except psutil.AccessDenied:
l0g(f"PID {pid} kapatılamadı: izin reddedildi.")
return False
except Exception as e:
l0g(f"PID {pid} kapatılamadı: {str(e)}")
return False
def set_process_priority(pid, level, l0g):
if not win32process or not win32api:
l0g("pywin32 yok; öncelik ayarlanamadı.")
return False
try:
handle = win32api.OpenProcess(win32con.PROCESS_ALL_ACCESS, False, int(pid))
level_map = {
"normal": win32process.NORMAL_PRIORITY_CLASS,
"high": win32process.HIGH_PRIORITY_CLASS,
"realtime": win32process.REALTIME_PRIORITY_CLASS
}
lvl = level_map.get(level, win32process.NORMAL_PRIORITY_CLASS)
win32process.SetPriorityClass(handle, lvl)
l0g(f"PID {pid} önceliği {level} olarak ayarlandı.")
return True
except Exception as e:
l0g(f"PID {pid} öncelik ayarlanamadı: {str(e)}")
return False
class BoostApp(ctk.CTk):
def __init__(self):
super().__init__()
self.title("PC Boost - Clean")
self.geometry("900x560")
ctk.set_appearance_mode("dark")
ctk.set_default_color_theme("blue")
left = ctk.CTkFrame(self, width=340)
left.pack(side="left", fill="y", padx=12, pady=12)
ctk.CTkLabel(left, text="Hızlandırma Araçları", font=ctk.CTkFont(size=18, weight="bold")).pack(pady=(6,12))
self.boost_btn = ctk.CTkButton(left, text="One-Click Boost", command=self.run_boost, width=300)
self.boost_btn.pack(pady=6)
self.safe_mode_var = ctk.CTkCheckBox(left, text="Güvenli Mod (agresif olmayan)", command=lambda: None)
self.safe_mode_var.select()
self.safe_mode_var.pack(pady=6)
ctk.CTkLabel(left, text="Kapatılacak süreç adları (virgülle):").pack(pady=(12,4))
self.kill_entry = ctk.CTkEntry(left, width=300, placeholder_text="örnek: spotify, discord, chrome")
self.kill_entry.pack()
self.kill_btn = ctk.CTkButton(left, text="Seçili Süreçleri Kapat", command=self.kill_custom)
self.kill_btn.pack(pady=8)
ctk.CTkLabel(left, text="Çalışan süreçler (yüksek RAM):").pack(pady=(12,6))
self.proc_listbox = ctk.CTkComboBox(left, values=["Listelenecek..."], width=300)
self.proc_listbox.pack()
self.refresh_proc_btn = ctk.CTkButton(left, text="Yenile", command=self.refresh_proc_list)
self.refresh_proc_btn.pack(pady=6)
prio_frame = ctk.CTkFrame(left)
prio_frame.pack(pady=8)
self.prio_combo = ctk.CTkComboBox(prio_frame, values=["normal", "high", "realtime"], width=140)
self.prio_combo.set("high")
self.prio_combo.pack(side="left", padx=(0,8))
self.set_prio_btn = ctk.CTkButton(prio_frame, text="Öncelik Ver", command=self.set_selected_priority)
self.set_prio_btn.pack(side="left")
right = ctk.CTkFrame(self)
right.pack(side="right", expand=True, fill="both", padx=12, pady=12)
ctk.CTkLabel(right, text="l0g / Durum", font=ctk.CTkFont(size=16, weight="bold")).pack(pady=(6,8))
self.logbox = ctk.CTkTextbox(right, width=520, height=460)
self.logbox.pack(expand=True, fill="both", padx=6, pady=6)
footer = ctk.CTkLabel(self, text=("Yönetici: VAR" if is_admin() else "Yönetici: YOK - bazı özellikler kısıtlı."))
footer.pack(side="bottom", pady=6)
self.refresh_proc_list()
self.l0g("Başlangıç hazır.")
def l0g(self, text):
now = time.strftime("%H:%M:%S")
self.logbox.insert("end", f"[{now}] {text}\n")
self.logbox.see("end")
def run_boost(self):
self.boost_btn.configure(state="disabled")
self.l0g("One-Click Boost başlıyor...")
thread = threading.Thread(target=self._do_boost)
thread.daemon = True
thread.start()
def _do_boost(self):
try:
set_power_plan_high_performance(self.l0g)
time.sleep(0.5)
flush_dns(self.l0g)
time.sleep(0.4)
clear_temp_folders(self.l0g)
time.sleep(0.4)
if self.safe_mode_var.get() == 0:
stop_service("WSearch", self.l0g)
else:
self.l0g("Güvenli mod açık; servis değişiklikleri uygulanmadı.")
self.l0g("Boost tamamlandı. Oyunu açtıktan sonra oyunun PID'ini seçip öncelik verebilirsin.")
except Exception as e:
self.l0g("Boost sırasında hata: " + str(e))
finally:
self.boost_btn.configure(state="normal")
def kill_custom(self):
raw = self.kill_entry.get().strip()
if not raw:
messagebox.showinfo("Uyarı", "Önce süreç adlarını girin (virgülle).")
return
names = [x.strip().lower() for x in raw.split(",") if x.strip()]
self.l0g("Kapatılacak isimler: " + ", ".join(names))
thread = threading.Thread(target=lambda: self._kill_by_names(names))
thread.daemon = True
thread.start()
def _kill_by_names(self, names):
for proc in psutil.process_iter(["pid", "name"]):
try:
pname = (proc.info.get("name") or "").lower()
if any(n in pname for n in names):
if proc.info.get("name") in SYSTEM_PROCESS_NAMES:
self.l0g(f"Atlandı: {proc.info.get('name')}")
continue
try:
proc.kill()
self.l0g(f"Kapatıldı: {proc.info.get('name')} (PID {proc.pid})")
except Exception as e:
self.l0g(f"Kapatılamadı: {proc.info.get('name')} - {str(e)}")
except Exception:
continue
self.refresh_proc_list()
def refresh_proc_list(self):
self.l0g("Süreçler listeleniyor...")
procs = list_user_processes()
values = []
for p in procs:
mem_mb = round(p["mem"] / (1024 * 1024), 1) if p["mem"] else 0
values.append(f"{p['pid']} | {p['name']} | {mem_mb}MB")
if not values:
values = ["(Hiç süreç listelenemedi)"]
self.proc_listbox.configure(values=values)
self.proc_listbox.set(values[0])
def set_selected_priority(self):
selected = self.proc_listbox.get()
if not selected or "|" not in selected:
messagebox.showinfo("Uyarı", "Önce süreç seçin.")
return
pid = int(selected.split("|")[0].strip())
pr = self.prio_combo.get()
confirm = messagebox.askyesno("Onay", f"PID {pid} için öncelik {pr} olarak ayarlansın mı? (Realtime risklidir)")
if not confirm:
return
thread = threading.Thread(target=lambda: set_process_priority(pid, pr, self.l0g))
thread.daemon = True
thread.start()
def main():
if os.name != "nt":
print("Bu program yalnızca Windows içindir.")
return
app = BoostApp()
app.mainloop()
if __name__ == "__main__":
main()