2015-09-04 87 views
-1

我写了一个在autohotkey技术工具箱,但很多AV软件已经开始杀死写在autohotkey的东西,所以我在VB重做它.net 我已经能够获得大部分的东西完成,但几乎所有使用我的工具箱的人都使用的工具之一是禁用鼠标的热键。我们正在远程使用logmein,它只是阻止客户杀死病毒清除工具等东西。如何禁用鼠标使用Visual Basic

我发现了一种方法来禁用鼠标和键盘使用VB.net,但它完全禁用它而不是只为客户,我只是希望它禁用鼠标不是键盘太,因为当它杀死两个热键,使他们再次不起作用大声笑。

这是我一直在使用的代码。

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer 
Private Declare Function BlockInput Lib "user32" Alias "BlockInput" (ByVal fBlock As Integer) As Integer 
Private Declare Function ShowCursor Lib "user32" (ByVal lShow As Long) As Long 
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
    Timer1.Enabled = True 
    Timer1.Interval = 1 
    Dim mkey As Boolean 
    Dim dkey As Boolean 
    Dim ekey As Boolean 
    mkey = GetAsyncKeyState(Keys.M) 
    dkey = GetAsyncKeyState(Keys.D) 
    ekey = GetAsyncKeyState(Keys.E) 
    If mkey And dkey = True Then 
     BlockInput(1) 
     ShowCursor(0) 
    End If 

    If mkey And ekey = True Then 
     BlockInput(0) 
     ShowCursor(1) 
    End If 
End Sub 
+1

不要在'Declare'指令使用'Integer'和'Long'(或P /调用)。相反,使用'Int32'(或适当的其他尺寸)。很多你的声明是错误的。 –

+0

@BenVoigt这是完全正确的(+1) –

回答

1
Private Declare Function BlockInput Lib "user32" Alias "BlockInput" (ByVal fBlock As Integer) As Integer 

要启用

BlockInput 1 

要禁用

BlockInput 0 
+0

dwb这就是它现在所做的,它阻止所有输入,所以你不能有一个热键来禁用和另一个启用,也不允许通过远程软件的行动来覆盖它。 –

+0

任何人都可以给我任何其他方式,因为这种方式不会做我所需要的,它会禁用键盘以及鼠标。 –