C#实现系统热键的功能

it2022-05-09  32

利用windows api方式实现系统热键的功能!主要类设计如下:using System;using System.Windows.Forms; // for Key namespaceusing System.Runtime.InteropServices; namespace 实现系统热键{ /// <summary> /// WIN32 Windows API辅助操作类. /// </summary> public class NativeWIN32 {  public NativeWIN32()  {}  /* ------- using WIN32 Windows API in a C# application ------- */   [DllImport("user32.dll", CharSet=CharSet.Auto)]  static public extern IntPtr GetForegroundWindow(); //    [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]   public struct STRINGBUFFER  {   [MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)]   public string szText;  }   [DllImport("user32.dll", CharSet=CharSet.Auto)]  public static extern int GetWindowText(IntPtr hWnd,  out STRINGBUFFER ClassName, int nMaxCount);   [DllImport("user32.dll", CharSet=CharSet.Auto)]  public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);   [DllImport("user32.dll", CharSet=CharSet.Auto)]  public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, IntPtr lParam);   public const int WM_SYSCOMMAND = 0x0112;  public const int SC_CLOSE = 0xF060;   public delegate bool EnumThreadProc(IntPtr hwnd, IntPtr lParam);   [DllImport("user32.dll", CharSet=CharSet.Auto)]  public static extern bool EnumThreadWindows(int threadId, EnumThreadProc pfnEnum, IntPtr lParam);   [DllImport("user32.dll", CharSet=CharSet.Auto)]  public static extern IntPtr FindWindowEx(IntPtr parent, IntPtr next, string sClassName, IntPtr sWindowTitle); 

  /* ------- using HOTKEYs in a C# application -------   in form load :   bool success = RegisterHotKey(Handle, 100,     KeyModifiers.Control | KeyModifiers.Shift, Keys.J);   in form closing :   UnregisterHotKey(Handle, 100);      protected override void WndProc( ref Message m )  {    const int WM_HOTKEY = 0x0312;        switch(m.Msg)    {     case WM_HOTKEY:       MessageBox.Show("Hotkey pressed");       break;    }     base.WndProc(ref m );  }   ------- using HOTKEYs in a C# application ------- */   [DllImport("user32.dll", SetLastError=true)]  public static extern bool RegisterHotKey( IntPtr hWnd, // handle to window       int id,            // hot key identifier       KeyModifiers fsModifiers,  // key-modifier options       Keys vk            // virtual-key code       );     [DllImport("user32.dll", SetLastError=true)]  public static extern bool UnregisterHotKey( IntPtr hWnd,  // handle to window       int id      // hot key identifier       );   [Flags()]   public enum KeyModifiers  {     None = 0,   Alt = 1,       Control = 2,       Shift = 4,       Windows = 8  } }}

转载于:https://www.cnblogs.com/tuyile006/archive/2006/08/30/490419.html

相关资源:数据结构—成绩单生成器

最新回复(0)