如何在C#中执行ALT + TAB sendkey事件

时间:2011-08-05 04:15:02

标签: c# keyboard tabs sendkeys alt

我正在尝试使用包含ALT键的sendkey事件,然后按下TAB键。你是如何进行这一行动的,我尝试了很多变化,但我似乎无法找到答案,谢谢。

5 个答案:

答案 0 :(得分:9)

经过MSDN documentation page之后,我想出了这个,似乎对我来说工作得很好:

SendKeys.Send( “%{TAB}”);

答案 1 :(得分:3)

[Windows.Forms.Sendkeys]::SendWait("%{Alt Down}")

[Windows.Forms.Sendkeys]::SendWait("%{TAB}")

[Windows.Forms.Sendkeys]::SendWait("%{Alt Up}")

在我的Powershell中工作!感谢您提示;)

答案 2 :(得分:1)

使用sendkeys PInvoke可以通过发送ALT keydown事件,TAB keydown,然后是TAB keyup,然后发送ALT keyup来实现。还有另一种方法在键上使用ALT修饰符,但我不记得究竟是怎么回事我没用过它。

如果你想做多个标签,可以在保持ALT on keydown的同时交替使用TAB keydown和keyup。

答案 3 :(得分:0)

非常简单:

SendKeys.SendWait("%({tab})");

答案 4 :(得分:0)

我无法使用 SendKeys.Send 来切换程序。 Ricky Lee 的回答 here 对我有用。

using System.Runtime.InteropServices;

[DllImport("user32")]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int
dwExtraInfo);
private const byte VK_MENU = 0x12;
private const byte VK_TAB = 0x09;
private const int KEYEVENTF_EXTENDEDKEY = 0x01;
private const int KEYEVENTF_KEYUP = 0x02;

private void button1_Click(object sender, System.EventArgs e)
{
keybd_event(VK_MENU,0,0,0);
keybd_event(VK_TAB,0,0,0);
System.Threading.Thread.Sleep(1000);
keybd_event(VK_TAB,0,0,0);
System.Threading.Thread.Sleep(1000);
keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
}