簡體   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