main.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/usr/bin/env python3
  2. import sys
  3. import os
  4. import json
  5. from PySide6.QtWidgets import QApplication
  6. from qt_material import apply_stylesheet
  7. from hookvision.config_loader import load_config
  8. from hookvision.main_window import MainWindow
  9. import logging
  10. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
  11. def _autostart_diag():
  12. import winreg
  13. log = []
  14. log.append(f"sys.executable = {sys.executable}")
  15. log.append(f"sys.platform = {sys.platform}")
  16. log.append(f"frozen = {getattr(sys, 'frozen', False)}")
  17. config_dir = os.path.join(os.environ.get("APPDATA", os.path.expanduser("~")), "HookVision")
  18. config_path = os.path.join(config_dir, "autostart.json")
  19. log.append(f"config_path = {config_path}")
  20. try:
  21. os.makedirs(config_dir, exist_ok=True)
  22. with open(config_path, "w", encoding="utf-8") as f:
  23. json.dump({"enabled": True}, f)
  24. with open(config_path, "r", encoding="utf-8") as f:
  25. data = json.load(f)
  26. log.append(f"JSON OK: {data}")
  27. os.remove(config_path)
  28. except Exception as e:
  29. log.append(f"JSON FAIL: {e}")
  30. key = r"Software\Microsoft\Windows\CurrentVersion\Run"
  31. try:
  32. with winreg.OpenKey(winreg.HKEY_CURRENT_USER, key, 0, winreg.KEY_SET_VALUE) as rk:
  33. winreg.SetValueEx(rk, "HookVision", 0, winreg.REG_SZ, sys.executable)
  34. with winreg.OpenKey(winreg.HKEY_CURRENT_USER, key, 0, winreg.KEY_READ) as rk:
  35. val, _ = winreg.QueryValueEx(rk, "HookVision")
  36. log.append(f"Registry OK: {val}")
  37. with winreg.OpenKey(winreg.HKEY_CURRENT_USER, key, 0, winreg.KEY_SET_VALUE) as rk:
  38. winreg.DeleteValue(rk, "HookVision")
  39. except Exception as e:
  40. log.append(f"Registry FAIL: {e}")
  41. msg = "\n".join(log)
  42. print(msg)
  43. with open("autostart_diag.txt", "w", encoding="utf-8") as f:
  44. f.write(msg)
  45. def main():
  46. if "--autostart-test" in sys.argv:
  47. _autostart_diag()
  48. return
  49. app = QApplication(sys.argv)
  50. apply_stylesheet(app, theme='dark_teal.xml')
  51. if getattr(sys, 'frozen', False):
  52. config_path = os.path.join(sys._MEIPASS, 'config.ini')
  53. else:
  54. config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'config.ini')
  55. config = load_config(config_path)
  56. window = MainWindow(config)
  57. window.show()
  58. sys.exit(app.exec())
  59. if __name__ == "__main__":
  60. main()