繁体   English   中英

如何使控制台应用程序侦听来自其他进程的按键?

[英]How to make Console App listen for keypresses from other processes?

我是C#编程的新手,我正在尝试编写一个将在后台运行的控制台应用程序,并在按下某个键时执行操作(理想情况下,我想知道如何为任何键执行此操作,但是,如果这是不可能,然后是一个特定的键)。

这是我想要的想法(请原谅并随意纠正任何不良编码,因为我刚刚开始)。

public static void Main(string[] args)
{
    while(true)
    {
         ConsoleKeyInfo cki = Console.ReadKey();
         if( cki.Key == ConsoleKey.R )
         {
              Console.WriteLine("Run me");
         }
     }
 }

以上似乎可行,但仅限于控制台应用程序是焦点。 即使应用程序不是焦点,我也希望它发生。

我做过一些研究并阅读有关注册“热键”的内容,但也读到这是危险的,以防另一个应用程序需要该密钥?

我也在这里阅读了类似的问题,但它们似乎只涉及Windows Forms而不仅仅是Console Apps。

任何人都可以帮助解决这个问题吗?

你需要使用

[DllImport("user32", SetLastError = true)]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);
[DllImport("user32", SetLastError = true)]
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);

但要使其在控制台上运行,您需要创建隐藏的表单,以便为您处理消息。 看看这堂课 它完全符合你的要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM