VB.NET用全局热键启动SendKeys.send文字全变空白

VB.NET用全局热键启动SendKeys.send文字全变空白,用按钮启动就没问题就没问题图片说明

  Public Const WM_HOTKEY = &H312
    Public Const MOD_ALT = &H1
    Public Const MOD_CONTROL = &H2
    Public Const MOD_SHIFT = &H4
    Public Const GWL_WNDPROC = (-4)
Public Declare Auto Function RegisterHotKey Lib "user32.dll" Alias _
    "RegisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean

Public Declare Auto Function UnRegisterHotKey Lib "user32.dll" Alias _
    "UnregisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer) As Boolean

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    '注册全局热键
    RegisterHotKey(Handle, 0, MOD_CONTROL, Asc("T")) '第一个热键 Ctrl+T
    RegisterHotKey(Handle, 1, Nothing, Keys.F4) '第二个热键 F4
End Sub

Private Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
    '注销全局热键
    UnRegisterHotKey(Handle, 0)
    UnRegisterHotKey(Handle, 1)
End Sub

Protected Overrides Sub WndProc(ByRef m As Message)
    If m.Msg = WM_HOTKEY Then
        SendKeys.Send("123")
        SendKeys.Send("{ENTER}")
        SendKeys.Send("123")
        SendKeys.Send("{ENTER}")
        SendKeys.Send("123")
        SendKeys.Send("{ENTER}")
        SendKeys.Send("123")
    End If
    MyBase.WndProc(m)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    MsgBox("1")
    Threading.Thread.Sleep(2000)
    SendKeys.Send("123")
    SendKeys.Send("{ENTER}")
    SendKeys.Send("123")
    SendKeys.Send("{ENTER}")
    SendKeys.Send("123")
    SendKeys.Send("{ENTER}")
    SendKeys.Send("123")

发送到电脑里所有能接受文字的文本输入框都是空白,包括EXCEL,TXT文件。热键是CTRL+T

你发送到哪里去了,是当前窗口还是别的程序?你的热键设置的是什么?