main.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. is_frozen = getattr(sys, 'frozen', False)
  52. config_name = "config.prod.ini" if is_frozen else "config.dev.ini"
  53. if "--prod" in sys.argv:
  54. config_name = "config.prod.ini"
  55. if "--dev" in sys.argv:
  56. config_name = "config.dev.ini"
  57. if getattr(sys, 'frozen', False):
  58. config_path = os.path.join(sys._MEIPASS, config_name)
  59. else:
  60. config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), config_name)
  61. config = load_config(config_path)
  62. window = MainWindow(config)
  63. window.show()
  64. sys.exit(app.exec())
  65. if __name__ == "__main__":
  66. main()