十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这么难的问题才5分?给你思路:VB.NET改变鼠标形状的唯一方法就是加载图片,但是因为你要求“横向和纵向都到达PictureBox的边界”,也就是说,这个图片必须跟着鼠标移动而变化,显然这是无法做到的。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、成都小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了荔城免费建站欢迎大家使用!
因此,可以先将鼠标指针隐藏,然后根据鼠标的当前位置,在PictureBox中画十字线,鼠标移动后,将前面画的线擦除,然后在新位置重新画。
为了不擦除PictureBox中已有的图像,在画十字线之前,先保存十字线所覆盖像素点的值,擦除的时候,恢复这些值就可以了。
锁住屏幕的思路:
1.创建一个透明度为1的窗体(透明度0的话会让窗体消失),覆盖屏幕,并用Timer不断置顶(防止如任务管理器之类的置顶窗口在这个之上)
2.锁住键盘~~就是屏蔽键盘 这个你搜索一下就可以了 网上都有
3.锁住鼠标:可以理解为 隐藏鼠标 反正窗体上面什么都没有 不隐藏也可以:)
4.Open Environ$("WinDir") "\system32\taskmgr.exe" For Binary As #1
,用于锁定任务管理器……(不能屏蔽Ctrl+Alt+Delete所以只能这么干了)这样任务管理器开不了了(除非已经打开)
一般来说这样就可以了……
当然建议留一个后路否则只能重启啦……
改变鼠标位置或让鼠标消失。
Shift + 方向键 ,选择 从当前光标至移动后光标所在位置的所有文本
Ctrl+Shift+左右方向键,选择 从当前光标至下一(上一)单词首(尾)
Shift + Alt + 方向键,选择 由当前光标与 移动后光标所构成的矩形的区域内所有文本
Ctrl + 单击鼠标左键, 选择 单击位置的整个单词
Shift + 单击鼠标左键,选择 从当前光标至 鼠标单击位置区间的所有文本
Shift + Home(End), 选择 从当前光标至 行首(尾)的所有文本
几乎找不到真正VB.NET的api,都是自己将VB的api改成VB.NET的api,我的理解是声明中对应输入是H的地方保留Long,其他的Long改成Integer,既然VB.NET连MSDN都找不到较全的api说明,不保证api的用法在VB.NET其他版本中适用。
给你个好玩的例子,包括鼠标的隐藏(Ctrl_↓)、显示(Ctrl_↑),移动、点击
在Form1上放上2个TextBox,其中TextBox1.Multiline = True,并且面积大些,2个Button,运行后在TextBox1中点击一下会记录位置,移开鼠标,点击移动或点击Button,可模拟在TextBox1中的点击
Public Class Form1
Public My_MousePosition As Point
'模拟鼠标移动、点击
Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
'定义光标的位置
Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" (ByVal x As Integer, ByVal y As Integer) As Integer
'鼠标的隐藏
Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As Integer) As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Multiline = True
Button1.Text = "点击"
Button2.Text = "移动"
Me.KeyPreview = True
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.Control And e.KeyCode = Keys.Down Then ShowCursor(0)
If e.Control And e.KeyCode = Keys.Up Then ShowCursor(1)
End Sub
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
TextBox2.Text = MousePosition.X " " MousePosition.Y
End Sub
Private Sub TextBox1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseClick
My_MousePosition = MousePosition
TextBox1.Text = My_MousePosition.X " " My_MousePosition.Y vbCrLf
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SetCursorPos(My_MousePosition.X, My_MousePosition.Y)
mouse_event(H2, 0, 0, 0, 0)
mouse_event(H4, 0, 0, 0, 0)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SetCursorPos(My_MousePosition.X, My_MousePosition.Y)
End Sub
End Class
其中
mouse_event Lib "user32" (ByVal dwFlags As Long
的dwFlags的代码是
Const MOUSEEVENTF_LEFTDOWN = H2
Const MOUSEEVENTF_LEFTUP = H4
Const MOUSEEVENTF_MIDDLEDOWN = H20
Const MOUSEEVENTF_MIDDLEUP = H40
Const MOUSEEVENTF_MOVE = H1
Const MOUSEEVENTF_ABSOLUTE = H8000
Const MOUSEEVENTF_RIGHTDOWN = H8
Const MOUSEEVENTF_RIGHTUP = H10
很简单,你怎么不先问我,还在这提问。用api函数,钩子,设置成全局钩子,然后对钩取来的message消息不做处理,也不返回,这样屏蔽了键盘了。钩子函数api好像是什么hook的那个,还有钩子函数的返回函数,以整个自定义函数的指针作参数