Подскажите, как сделать горячую клавишу для включения скрипта

Рейтинг: 0Ответов: 1Опубликовано: 24.06.2023

Подскажите, как сделать горячую клавишу для включения скрипта. Т.е. я хочу упаковать скрипт в .ехе и нада что бы при запуске выскакивали табличка (Нажмите F5 для старта) помогите как это сделать

Ответы

▲ 0
MB_SYSTEMMODAL=0x1000
MB_ICONINFORMATION=0x00000040
MB_RETRYCANCEL=0x5
IDCANCEL=2
VK_F5=0x74
WM_HOTKEY=0x0312

import ctypes, ctypes.wintypes
import threading

user32 = ctypes.windll.user32
HOTKEY_ID = 1
MODIFIERS = 0 # https://learn.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-registerhotkey#fsModifiers
KEY=VK_F5 # https://learn.microsoft.com/ru-ru/windows/win32/inputdev/virtual-key-codes

def msgbox():
    mbox_answer = user32.MessageBoxW(0, "нажмите F5", "прога", MB_SYSTEMMODAL+MB_ICONINFORMATION)
    print("msgbox", mbox_answer)
    return mbox_answer


if not user32.RegisterHotKey(None, HOTKEY_ID, MODIFIERS, KEY):
    print ("Unable to register id", HOTKEY_ID, MODIFIERS, KEY)
    sys.exit(2)

msgbox_thread = threading.Thread(target=msgbox)
msgbox_thread.start()

msg = ctypes.wintypes.MSG()
while user32.GetMessageA (ctypes.byref (msg), None, 0, 0) != 0:
    if msg.message == WM_HOTKEY:
        if msg.wParam == HOTKEY_ID:
            break

user32.UnregisterHotKey (None, HOTKEY_ID)

def runcode():
    print("your code started")

runcode()

MessageBoxW не понятно как убить. Рекомендую вот это безобразие запустить в отдельном процессе и ждать его по join.