长按你可以用计时器来实现啊,写个例子:
成都创新互联专业为企业提供天台网站建设、天台做网站、天台网站设计、天台网站制作等企业网站建设、网页设计与制作、天台企业网站模板建站服务,十余年天台做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
Private blCtrl As Boolean = False
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.LControlKey Then blCtrl = True
End Sub
Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
If e.KeyCode = Keys.LControlKey Then blCtrl = False
End Sub
然后你可以在计时器里检测blCtrl的状态来确定,不知道你的具体情况是什么样的
总之是用一个布尔变量来记录按键状态,配合计时器来达到你想要的功能
很简单,加入全局变量中有一个变量,mousedown事件中设为1,在mouseup事件中置为0。这样就能实现你说的功能。
以下参考
Private Sub 天平左移按钮_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles 天平左移按钮.PreviewMouseDown
a=true
End Sub
Private Sub 天平左移按钮_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)Handles 天平左移按钮.PreviewMouseUp
a=false
End Sub
SetCursorPos(old_x,old_y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
SetCursorPos(pt_x,pt_y);
最简单的就是把属性改一下,效果跟无框的差不多。
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle
Me.ControlBox = False
Me.MaximizeBox = False
Me.Text = ""
至于hook的问题,它确实是比系统慢了一步得到消息,当前线程或全局的都一样,不过你可以先拦截Windows键或者Up键其中一键来阻拦组合键。