如何使用键盘输入打开程序?

How to open a program using keyboard input?

我的项目是制作一个程序,当您在后台玩游戏或其他程序时,您可以 运行。 当你按下某个键时,你的记事本应该打开,并在你再次按下同一个键后关闭。

我已经设法用子进程打开记事本并且工作正常但我不知道只有在按下某个键时才打开它。 感谢您的帮助!

编辑: 我已经尝试过的:

import subprocess
import keyboard

if keyboard.is_pressed('k'):
    subprocess.Popen('C:\Windows\System32\notepad.exe')

input()

这里只是没有检测到任何键盘输入,最后的input()使得程序不会立即关闭

import subprocess
import keyboard

keyboard.add_hotkey('ctrl+k', print,args=("hello", "test"))

input()

在这里,如果我按“ctrl+k it”,将打印 hello test,这意味着热键工作正常。当我将这部分“print,args=("hello", "test")"切换为"subprocess.Popen('C:\Windows\System32\notepad.exe')"(它应该打开程序而不是打印 hello test)记事本打开在我 运行 程序之后,当我按下“ctrl+k”时,立即出现一个大错误。

问题是您在开始时只检查一次密钥 'k'。如果你想让程序正常工作,那么你应该试试这个:

import time
import subprocess
import keyboard
while True:
    if keyboard.is_pressed('k'):
        subprocess.Popen('C:\Windows\System32\notepad.exe')
        time.sleep(5)

-我用的时间让你5秒只能打开一次程序(如果你好奇,看看没有它会发生什么)-

下面是一个更复杂但仍然有效的示例。使用此代码,您的程序将始终监听键盘,而不仅仅是在您专注于输入时,因此在您的情况下可能更实用

from pynput import keyboard
import subprocess
import threading

class MyException(Exception): pass

class Listening:
    """Is allways waiting for the keyboard input"""
    def __init__(self):
        self.notepad_open = False # to know the state
        with keyboard.Listener(
                on_press=self.on_press) as listener:
            try:
                listener.join()
            except:
                pass
    
    def on_press(self, key):
        try:
            if key.char == "k":
                if not self.notepad_open:
                    self.subprocess = \
                        subprocess.Popen('C:\Windows\System32\notepad.exe')
                    self.notepad_open = True # update state
                else:
                    self.subprocess.kill()
                    self.notepad_open = False # update state
        except: # special key was pressed
            pass

thread = threading.Thread(target=lambda: Listening())
thread.start()