微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VB.NET 使用 SendKeys.Send

如何解决VB.NET 使用 SendKeys.Send

vb.net中如何使用Sendkey发送right Control + shift??

我试过了:

SendKeys.Send("^(shift)")

但它给了我一个空间。

解决方法

您应该查阅有关 SendKeys 方法的文档:https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualbasic.devices.keyboard.sendkeys

关于 SHIFT 键:

要将键与 SHIFT 组合在一起,请在键代码前加上 +(加号)。

关于 CTRL 键:

要将键与 CTRL 组合在一起,请在键代码前加上 ^(脱字符号)。

现在,SendKeys 不支持专门发送右/左 SHIFTCTRL。相反,您需要使用 SendMessage API 并发送 Keys.RControlKey 枚举值。这是一个 C# 示例(可以轻松转换为 VB.NET):

using System.Runtime.InteropServices;  
using System.Diagnostics;  
 
private const int WM_KEYDOWN = 0x100;  
 
[DllImport("user32.dll",CharSet = CharSet.Auto,SetLastError = false)]  
static extern IntPtr SendMessage(IntPtr hWnd,int Msg,int wParam,int lParam);  

private void button1_Click(object sender,EventArgs e)  
{  
    Keys key = Keys.RShiftKey;//Right shift key  
    SendMessage(Process.GetCurrentProcess().MainWindowHandle,WM_KEYDOWN,(int)key,1);  
}  
 
protected override void DefWndProc(ref Message m)  
{  
    if (m.Msg == WM_KEYDOWN)  
        MessageBox.Show(m.WParam.ToString());  
 
    base.DefWndProc(ref m);  
}

来自 MSDN 论坛的原始链接:https://social.msdn.microsoft.com/Forums/en-US/dd6406e8-b6bf-4166-82a0-6d533def38a5/how-to-send-leftright-shift-key?forum=csharpgeneral#5734fe34-407d-4edc-ae41-9b1eaa12bb23-isAnswer

,

这是一个有关如何按下 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,KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP,0)

    End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。