SendKeys.Send("^v");只有第一次成功?
请看ProcessHotkey函数,本意是每次按下对应热键时模拟发送Ctrl+V,在当前光标处粘贴,可是发现只有第一次有效,跟踪发现每次按下热键都会到这个函数,可是后来的SendKeys.Send("^v");貌似就没用了,换成MessageBox.Show("Here am I");却每次都会成功;什么问题~~?
public partial class Form1 : Form
{
[DllImport("user32.dll")]
public static extern UInt32 RegisterHotKey(IntPtr hWnd, UInt32 id, UInt32 fsModifiers, Keys vk);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool UnregisterHotKey( IntPtr hWnd, int id );
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
RegisterHotKey(Handle, 888, 3, Keys.D1);
}
protected override void WndProc(ref Message m)
{
const int WM_HOTKEY = 0x0312;//按快捷键
switch (m.Msg)
{
case WM_HOTKEY:
ProcessHotkey();//调用主处理程序
break;
}
base.WndProc(ref m);
}
private void ProcessHotkey()
{
//Clipboard.SetText("Come on Man");
//SendKeys.Send("^v");
MessageBox.Show("Here am I");
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
UnregisterHotKey(Handle, 888);
}
}