安装依赖
1 | install-package SuperWebSocket |
图片传输
C#获取屏幕二进制数据
1 | using System.IO; |
我们使用单独的线程不停发送图片
1 | private void SendPic() |
Web端接收显示
1 | socket.onmessage = (evt) => { |
鼠标事件传递
Web鼠标事件
获取鼠标所在元素内的位置
1 | get_pos (e, box) { |
注意
这里返回的值是0-1。
元素监听事件
1 | init_mouse_event () { |
注意
这是用来禁用右键菜单
1 | myimg.addEventListener('contextmenu', function (e) { |
C#模拟鼠标事件
在C#中触发鼠标事件:
SendInput(推荐)
工具类
1 | namespace z_remote_control.Utils |
调用
模拟鼠标左键点击后移动框选
1 | Task.Run( |
滚轮滚动
1 | //向上滚动 |
误区
移动不能使用下面的这种方式,这种方式是相对于当前位置进行移动,而不是移动到某个坐标。
1 | const uint MOUSEEVENTF_MOVE = 0x0001; |
mouse_event
工具类
1 | namespace z_remote_control.Utils |
调用
模拟鼠标左键点击后移动框选
1 | Task.Run( |
鼠标中键点击
1 | Task.Run( |
滚轮滚动
1 | //向上滚动 |
误区
移动不要使用下面的这种方式
这种方式是相对于当前位置进行移动,而不是移动到某个坐标。
1 | private const uint MOUSEEVENTF_MOVE = 0x0001; |
对比
SendInput 和 mouse_event 都可以用于模拟鼠标事件
它们的主要区别在于:
- SendInput 是 Windows 操作系统提供的 API,而 mouse_event 是 Win32 API。
- SendInput 是较新的 API,可以用于模拟更多种类的输入设备(如键盘、鼠标、触摸屏等),而 mouse_event 只能模拟鼠标事件。
- SendInput 的精度比 mouse_event 更高,可以模拟出更精确的鼠标操作。
- SendInput 可以通过异步方式模拟鼠标事件,而 mouse_event 只能同步方式模拟。
- mouse_event 函数则更加简单易用,它只能模拟鼠标相关的输入操作,包括鼠标移动、鼠标单击、双击、右击等。
因此,如果需要模拟多种输入设备事件或需要精确模拟鼠标操作,建议使用 SendInput。
如果只需要模拟鼠标事件并且需求不是很高,则可以使用 mouse_event。