dev 24.01.31
This commit is contained in:
86
util_func.py
Normal file
86
util_func.py
Normal file
@@ -0,0 +1,86 @@
|
||||
# coding: utf8
|
||||
import os
|
||||
import wmi
|
||||
import json
|
||||
import win32gui
|
||||
import requests
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
from PySide6.QtCore import QDir, QSettings
|
||||
from PySide6.QtGui import QImage, QIcon, QPixmap
|
||||
|
||||
|
||||
def get_isp_name() -> str:
|
||||
req = requests.get("https://ipinfo.io/")
|
||||
if req.status_code == 200:
|
||||
try:
|
||||
data = json.loads(req.content)
|
||||
return data.get("org", "[Not found]")
|
||||
except json.JSONDecodeError:
|
||||
return "[Decode Error]"
|
||||
return "[Return Error]"
|
||||
|
||||
|
||||
def get_win_manufacturer() -> list[str]:
|
||||
w = wmi.WMI()
|
||||
cs_ls = w.Win32_ComputerSystem()
|
||||
if len(cs_ls) > 0:
|
||||
cs = cs_ls[0]
|
||||
return [cs.model, cs.Manufacturer]
|
||||
return []
|
||||
|
||||
|
||||
def get_win_license() -> str:
|
||||
temp_out = str(Path(QDir.tempPath(), "lic.txt"))
|
||||
return_code = subprocess.call(
|
||||
rf'cscript /Nologo /U "C:\Windows\System32\slmgr.vbs" /dlv >{temp_out}',
|
||||
shell=True,
|
||||
)
|
||||
if return_code == 0:
|
||||
with open(temp_out, "r", encoding="utf-16-le") as f:
|
||||
return f.read()
|
||||
return ""
|
||||
|
||||
|
||||
def get_win_installed_software() -> dict[str, str]:
|
||||
|
||||
def gather_software(path: str, software_dict: dict[str, str]):
|
||||
reg = QSettings(path, QSettings.Format.NativeFormat)
|
||||
soft = reg.childGroups()
|
||||
for s in soft:
|
||||
c = QSettings(path + "\\" + s.split("/")[0], QSettings.Format.NativeFormat)
|
||||
name = str(c.value("DisplayName"))
|
||||
if name == "None":
|
||||
continue
|
||||
icon = str(c.value("DisplayIcon"))
|
||||
software_dict[name] = icon
|
||||
|
||||
all_software = {}
|
||||
gather_software(r"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", all_software)
|
||||
gather_software(r"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall", all_software)
|
||||
gather_software(r"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall", all_software)
|
||||
|
||||
return all_software
|
||||
|
||||
|
||||
def extract_win_icon_from_file(icon: str, default: QIcon) -> QIcon:
|
||||
if icon == "None":
|
||||
return default
|
||||
if icon.endswith(",0"):
|
||||
icon = icon[:-2]
|
||||
icon = icon.replace('"', "")
|
||||
icon = icon.replace("'", "")
|
||||
if not os.path.exists(icon):
|
||||
return default
|
||||
if not icon.endswith(("exe", "EXE")):
|
||||
return QIcon(icon)
|
||||
|
||||
large, small = win32gui.ExtractIconEx(icon, 0)
|
||||
if len(small) > 0:
|
||||
win32gui.DestroyIcon(small[0])
|
||||
if len(large) > 0:
|
||||
image = QImage.fromHICON(large[0])
|
||||
return QIcon(QPixmap(image))
|
||||
else:
|
||||
return default
|
||||
|
||||
Reference in New Issue
Block a user