implement launch() function.

Allows launching nvda program at start.
This commit is contained in:
onyx-and-iris 2023-08-23 16:11:32 +01:00
parent d39cc35e79
commit bf66a1d070
3 changed files with 48 additions and 2 deletions

View File

@ -6,8 +6,10 @@ import nvda_voicemeeter
logging.basicConfig(level=logging.DEBUG)
nvda_voicemeeter.launch()
KIND_ID = "potato"
with voicemeeterlib.api(KIND_ID) as vm:
with nvda_voicemeeter.build(f"Voicemeeter {KIND_ID.capitalize()} NVDA", vm) as window:
with nvda_voicemeeter.draw(f"Voicemeeter {KIND_ID.capitalize()} NVDA", vm) as window:
window.run()

View File

@ -1 +1,12 @@
from .window import request_window_object as build
import subprocess as sp
from .cdll import NVDA_PATH
from .window import request_window_object as draw
def launch():
if NVDA_PATH:
sp.Popen([NVDA_PATH], shell=True)
__ALL__ = ["launch", "draw"]

View File

@ -1,8 +1,41 @@
import ctypes as ct
import platform
import winreg
from pathlib import Path
from .errors import NVDAVMError
bits = 64 if ct.sizeof(ct.c_voidp) == 8 else 32
if platform.system() != "Windows":
raise NVDAVMError("Only Windows OS supported")
REG_KEY = "\\".join(
filter(
None,
(
"SOFTWARE",
"WOW6432Node" if bits == 64 else "",
"Microsoft",
"Windows",
"CurrentVersion",
"Uninstall",
"NVDA",
),
)
)
def get_nvdapath():
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"{}".format(REG_KEY)) as nvda_key:
return winreg.QueryValueEx(nvda_key, r"UninstallDirectory")[0]
try:
NVDA_PATH = Path(get_nvdapath()) / "nvda.exe"
except FileNotFoundError as e:
NVDA_PATH = ""
controller_path = Path(__file__).parents[2].resolve() / "controllerClient"
if not controller_path.exists():
controller_path = Path(__file__).parents[3].resolve() / "controllerClient"