2012-08-25 17 views
0

在C#的winform,我有中有一個「靜音模式」的應用程序,在該模式下,它被最小化,並從任務欄隱藏,又名:如何將擊鍵(按鍵)發送到最小化(未聚焦)的表單?

this.WindowState = FormWindowState.Minimized; 
this.ShowInTaskbar = false; 

但在某一點上,我希望該程序的主窗口中按一定的組合鍵在鍵盤上,比如再次顯示了例如Alt鍵 + 按Ctrl ++小號 但我只是不知道該怎麼辦那。

我的解決方法完全不同,如果用戶想要取回窗口,他必須在特定目錄中創建一個名爲'SilentMode.OFF'的文件。 這樣做會回到窗口。 我設法通過我的應用程序中的計時器來完成此任務,計時器會檢查該文件是否在該目錄中創建,如果是,則顯示該窗口。 這不是一個真正的專業做事方式。

我的問:我如何與最小化窗口進行通信? 我怎麼發送它,並使其響應我希望它響應的密鑰?

我嘗試了一些事件,如請假事件和其他一些,但沒有真正的工作。

任何提示將有很大的幫助,謝謝。

+1

我想你會發現如何使用[這] [1],並且還[此] [2] [1]:http://stackoverflow.com/questions/8734453/detect-keypression-when-minimized-and-trayicon [2]:http://stackoverflow.com/questions/11752254/global-windows-key-press –

回答

-1

可以作出這樣的方法:

[DllImport("user32.dll")] 
static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey); 

private void WaitForHotKeys() 
{ 
     if(GetAsyncKeyState(Keys.Alt) != 0 && GetAsyncKeyState(Keys.Control) != 0 && 
      GetAsyncKeyState(Keys.Shift) != 0 && GetAsyncKeyState(Keys.S) != 0) 
     { 
      this.WindowState = FormWindowState.Normal; 
      this.ShowInTaskbar = true; 
     }  
} 

,並添加你的加載方法:

Thread myThread = new Thread(new ThreadStart(WaitForHotKeys)); 
myThread.Start();