注冊系統熱鍵
系統熱鍵用在像彈出窗口殺手這種應用程序非常有用,Ctrl+Shift+J是缺省熱鍵。
說道實現,我們繼續用RegisterHotkey(HWND hWnd, int id, UINT fsModifiers, UINT
vkey)完成,代碼如下:
一般的,注冊熱鍵要以下幾步:
/* ------- using HOTKEYs in a C# application -------
-- code snippet by James J Thompson --
在Form的load 中 : Ctrl+Shift+J
bool success = RegisterHotKey(Handle,
100,
KeyModifiers.Control | KeyModifiers.Shift,
Keys.J);
在form的closing中:
UnregisterHotKey(Handle, 100);
如何處理熱鍵:
當我們按下熱鍵以後,流程是這樣:首先用HWND GetForegroundWindow()來得到窗體,然後要抓出窗體的標題,GetWindowText(HWND
hwnd, /*out*/LPTSTR lpString, int nMaxCount)。
具體如下:
protected void ProcessHotkey()
{
IntPtr hwnd = NativeWIN32.GetForegroundWindow();
if (!hwnd.Equals(IntPtr.Zero))
{
NativeWIN32.STRINGBUFFER sWindowTitle;
NativeWIN32.GetWindowText(hwnd, out sWindowTitle, 256);
if (sWindowTitle.szText.Length>0)
AddWindowTitle( sWindowTitle.szText ); // add to the ListView (Form)
}
}