在vb.net上重叠的键[外部程序的宏项目]

时间:2014-05-03 11:50:18

标签: vb.net macros

我正在制作一个使用F1~F12的VB宏,并且移位+ F1~F12,以及ctrl + F1~F12, 必须在外部程序中工作,例如浏览器, 问题出现了,Shift + F1~F12部分重叠, 它没有工作(在Firefox上),它与firefox的HotKey / ShortCut重叠, (因为它最终变为Shift + F1 + ctrl + v) 有什么想法解决这个问题? :( 我使用的是visual studio 2013。

Public Const MOD_CONTRO As Integer = &H2
Public Const MOD_SHIFT As Integer = &H4
Public Const WM_HOTKEY As Integer = &H312

受保护的覆盖子WndProc(ByRef m As System.Windows.Forms.Message)

 If m.Msg = WM_HOTKEY Then
        Dim id As IntPtr = m.WParam
        Select Case (id.ToString)

            Case "101"
             Clipboard.SetText(System.IO.File.ReadAllText(Application.StartupPath & "\SF1.txt"))
             SendKeys.Send("^" & "v")
            '^This is the problem part, 

 End Select

    End If

    MyBase.WndProc(m)
End Sub

 Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As      

 System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing

    UnregisterHotKey(Me.Handle, 101)
End Sub

Private Sub Home_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    RegisterHotKey(Me.Handle, 101, &H4, Keys.F1)
End Sub

1 个答案:

答案 0 :(得分:0)

这样做解决了这个问题, 作为我从Joiner从这里学到的代码的一部分! shift pressed, and automatically up?(to avoid long press and hold)

私有声明Sub keybd_event Lib“user32”(ByVal bVk As Byte,ByVal bScan As Byte,ByVal dwFlags As Integer,ByVal dwExtraInfo As Integer)

案例“101”                     Clipboard.SetText(System.IO.File.ReadAllText(Application.StartupPath&“\ SF1.txt”))                     keybd_event(& H10,0,& H2,0)                     SendKeys.SendWait(“^”&“v”)