111,126
社区成员
发帖
与我相关
我的任务
分享
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
RegisterHotKey(this.Handle, 100, 2, Keys.V);
}
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0312//这个是window消息定义的注册的热键消息
&& (int)m.WParam == 100) //如果是我们注册的那个热键
{
MessageBox.Show("你按了ctrl+v");
}
base.WndProc(ref m);
}
protected override void OnClosing(CancelEventArgs e)
{
UnregisterHotKey(this.Handle, 100);
base.OnClosing(e);
}
[DllImport("user32.dll")]
static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, Keys vk);
[DllImport("user32")]
static extern bool UnregisterHotKey(IntPtr hWnd, int id);
}
/// <summary>
/// 向指定内存地址写入数据
/// </summary>
/// <param name="hProcess">进程句柄</param>
/// <param name="lpBaseAddress">需要写入的地址</param>
/// <param name="lpBuffer">将要写入的数据</param>
/// <param name="nSize">写入长度</param>
/// <param name="lpNumberOfBytesWritten">实际写入长度</param>
/// <returns></returns>
[DllImport("Kernel32.dll")]
private static extern bool WriteProcessMemory(IntPtr hProcess, int lpBaseAddress, int lpBuffer, int nSize, int lpNumberOfBytesWritten);