Vb.net में दाएं कंट्रोल + शिफ्ट भेजने के लिए Sendkey का उपयोग कैसे कर सकते हैं ??

मैंने कोशिश की:

SendKeys.Send("^(shift)")

लेकिन इसने मुझे एक जगह दी।

0
user15633380 21 अप्रैल 2021, 15:01

2 जवाब

सबसे बढ़िया उत्तर

कैप्सलॉक को कैसे दबाएं, इसका एक कार्यशील उदाहरण यहां दिया गया है। मुझे लगता है कि आप इसे शिफ्ट + 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

0
UnhandledException-InvalidChar 21 अप्रैल 2021, 21:32

आपको SendKeys विधि पर दस्तावेज़ देखना चाहिए: https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualbasic.devices.keyboard.sendkeys

SHIFT कुंजी के संबंध में:

किसी कुंजी को SHIFT के साथ संयोजित करने के लिए, कुंजी कोड के आगे + (धन चिह्न) लगा दें।

CTRL कुंजी के संबंध में:

CTRL के साथ एक कुंजी को संयोजित करने के लिए, कुंजी कोड से पहले ^ (कैरेट) करें।

अब, SendKeys विशेष रूप से दाएं/बाएं SHIFT या CTRL भेजने का समर्थन नहीं करता है। इसके बजाय, आपको SendMessage API का उपयोग करना होगा और Keys.RControlKey एनम मान भेजना होगा। यहां एक सी # उदाहरण है (आसानी से वीबीएनईटी में परिवर्तित किया जा सकता है):

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

0
David 21 अप्रैल 2021, 17:54