3

私のアプリケーションが基本的に行うべきことは、ALT+を押すと、ハイライトされたテキストをコピーするために (任意のウィンドウで) +操作Jをシミュレートしますが、 +シミュレーションは機能しません。CTRLCCTRLC

[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
}
4

1 に答える 1

6

CTRL+を送信すると、すでに+の修飾子Cが押されているため、これが発生していると思います。ALTALTJ

あなたが置く場合

Thread.Sleep(1000);

キーを送信する直前に、ALT+を放す時間がJあり、その後CTRL+Cが機能します。

また、ホットキーがいつ解放されるかを確認する予定がある場合は、これを確認してください。

于 2013-03-09T07:39:43.963 に答える