C# 模拟CTRL+;使用Sendkeys的C失败
我对Sendkeys有一个奇怪的问题,我的应用程序基本上应该做的是,当我按下ALT+J时,它会模拟CTRL+C操作(在任何窗口上)来复制一些高亮显示的文本,但是CTRL+C模拟不起作用C# 模拟CTRL+;使用Sendkeys的C失败,c#,registerhotkey,C#,Registerhotkey,我对Sendkeys有一个奇怪的问题,我的应用程序基本上应该做的是,当我按下ALT+J时,它会模拟CTRL+C操作(在任何窗口上)来复制一些高亮显示的文本,但是CTRL+C模拟不起作用 [DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModi
[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);
private void Form1_Load(object sender, EventArgs e)
{
RegisterHotKey(this.Handle,
this.GetType().GetHashCode(), 1, (int)'J'); // Here it's waiting for the ALT+J
}
protected override void WndProc(ref Message m) // Function to c
{
if (m.Msg == 0x0312) // If ALT+J pressed
{
Copier(); // .. Simulate CTRL+C (but doesn't work)
}
base.WndProc(ref m);
}
public void Copier() // Function to simulate the CTRL+C
{
Debug.WriteLine("Ok ");
InputSimulator.SimulateModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_C); // First way
SendKeys.Send("^(c)"); // Second way
}
我认为这是因为当您发送CTRL+C时,您已经按下了ALT+J的ALT修饰符 如果你把
Thread.Sleep(1000);
在发送键之前,您将有时间释放ALT+J,然后CTRL+C将工作
另外,如果您计划检查热键何时释放,请检查。+1我可以复制它<代码>SendKeys.Send(“^{INS}”)代码>无法找到可能的重复项