c# 活动窗口 键盘监听
///
/// 監視クラス
///
class HotKey
{
[DllImport("user32.dll ", SetLastError = true)]
public static extern bool RegisterHotKey(
IntPtr hWnd,
int id,
KeyModifiers fsModifiers,
Keys vk
);
[DllImport("user32.dll ", SetLastError = true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd,
int id
);
[Flags()]
public enum KeyModifiers
{
None = 0,
Alt = 1,
Ctrl = 2,
Shift = 4,
WindowsKey = 8
}
}
///
/// キーボードの監視の呼応メソッド
///
///
protected override void WndProc(ref Message m)
{
const int WM_HOTKEY = 0x0312;
switch (m.Msg)
{
case WM_HOTKEY:
switch (m.WParam.ToInt32())
{
case 100:
this.axFramerControl1.Save();
break;
}
break;
}
base.WndProc(ref m);
}
///
/// ウィンドウがアクティブでないとき、ホットキーの監視をクローズする。
///
///
///
private void Form1_Deactivate(object sender, EventArgs e)
{
HotKey.UnregisterHotKey(this.Handle, 100);
}
///
/// ウィンドウがアクティブとき、ホットキーの監視をオープンする。
///
///
///
private void Form1_Activated(object sender, EventArgs e)
{
HotKey.RegisterHotKey(this.Handle, 100, HotKey.KeyModifiers.Ctrl, Keys.S);
}