Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET使用SendKeys.Send_Vb.net_Sendkeys - Fatal编程技术网

VB.NET使用SendKeys.Send

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

如何在vb.net中使用Sendkey发送控件+shift

我试过:

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将光标方向改为从右向左。