VB.NET使用SendKeys.Send
如何在vb.net中使用Sendkey发送右控件+shift 我试过:VB.NET使用SendKeys.Send,vb.net,sendkeys,Vb.net,Sendkeys,如何在vb.net中使用Sendkey发送右控件+shift 我试过: SendKeys.Send("^(shift)") 但是它给了我一个空间。您应该查阅有关SendKeys方法的文档: 关于SHIFT键: 要将键与SHIFT组合,请在键代码前面加上+(加号) 关于CTRL键: 要将键与CTRL组合,请在键代码前面加上^(插入符号) 现在,SendKeys不支持专门发送右/左SHIFT或CTRL。相反,您需要使用SendMessageAPI并发送Keys.RControl
SendKeys.Send("^(shift)")
但是它给了我一个空间。您应该查阅有关SendKeys方法的文档: 关于
SHIFT
键:
要将键与SHIFT组合,请在键代码前面加上+(加号)
关于CTRL
键:
要将键与CTRL组合,请在键代码前面加上^(插入符号)
现在,SendKeys不支持专门发送右/左SHIFT
或CTRL
。相反,您需要使用SendMessage
API并发送Keys.RControlKey
enum值。下面是一个C#示例(可以轻松转换为VB.NET):
使用System.Runtime.InteropServices;
使用系统诊断;
私有常量int WM_KEYDOWN=0x100;
[DllImport(“user32.dll”,CharSet=CharSet.Auto,SetLastError=false)]
静态外部IntPtr SendMessage(IntPtr hWnd、int Msg、int wParam、int lParam);
私有无效按钮1\u单击(对象发送者,事件参数e)
{
Keys key=Keys.rshift key;//右移键
SendMessage(Process.GetCurrentProcess().MainWindowHandle,WM_KEYDOWN,(int)键,1);
}
受保护的覆盖无效DefWndProc(参考消息m)
{
如果(m.Msg==WM_KEYDOWN)
Show(m.WParam.ToString());
基准偏差偏差(参考m);
}
MSDN论坛的原始链接:以下是一个如何按下CapsLock的工作示例。我想您可以使用shift+ctrl来计算:
Private Declare Sub keybd_event Lib "user32" ( _
ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Integer, _
ByVal dwExtraInfo As Integer _
)
Private Const VK_CAPITAL As Integer = &H14
Private Const KEYEVENTF_EXTENDEDKEY As Integer = &H1
Private Const KEYEVENTF_KEYUP As Integer = &H2
Private Sub TestKey()
' Toggle CapsLock
' Simulate the Key Press
keybd_event(VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0)
' Simulate the Key Release
keybd_event(VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
End Sub
CTRL和SHIFT不是都是
^+
?(shift)
是从哪里来的?除了我上面的评论之外,如果您特别需要发送RCTRL
,那么您可能必须使用Win32的SendMessage
(在user32.dll
)和WM\u向下键
消息。我想按向右ctrl+shift将光标方向改为从右向左。