[英]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.