使用C#+socket实现用移动设备控制的虚拟手柄

本文介绍了如何通过C#和socket技术实现移动设备控制的虚拟手柄,利用socket连接和USER32.DLL的keybd_event函数处理按键事件。在移动设备上发送操作码,电脑端接收并模拟键盘输入,支持组合键。同时讲解了按键的按下与释放逻辑,以及socket通信的实现步骤。
摘要由CSDN通过智能技术生成

近期在和同学玩死神vs火影,以怀念小时候,突然觉得用键盘玩的不够畅快,因此萌生了写一个虚拟手柄的念头。

我的思路是在移动设备(iOS、Android)上实现手柄,在电脑上监听,利用socket建立持久连接,通过移动设备向电脑上的监听软件发送操作码,通过操作码来处理事件。

有关socket的服务端,建立在一个服务器上,让移动设备和电脑分别连接,建立信道,在服务器上使用python建立socket客户端与在移动设备上使用socket十分便利,这里不讲述,本文的重点是实现电脑上根据键值实现的按键事件,包括组合键的处理。

我们假设虚拟手柄有4+6个键,分别是上下左右,1-6功能键,发送的操作码码分别为0~9,当所有按键松开,发送的操作码为-1。

为了实现按键操作,需要借助USER32.DLL的keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo)函数,第一个参数是键码,第二个和第四个填0即可,第三个代表是按下按键还是松开,0表示按下,2表示松开。

由于C#无法直接调用那些宏,因此键码输入数字来实现,键码对应表如下:

虚拟键码   对应值  对应键
VK_LBUTTON 1 鼠标左键
VK_RBUTTON 2 鼠标右键
VK_CANCEL 3 Cancel
VK_MBUTTON 4 鼠标中键
VK_XBUTTON1 5 
VK_XBUTTON2 6 
VK_BACK 8 Backspace
VK_TAB 9 Tab
VK_CLEAR 12 Clear
VK_RETURN 13 Enter
VK_SHIFT 16 Shift
VK_CONTROL 17 Ctrl
VK_MENU 18 Alt
VK_PAUSE 19 Pause
VK_CAPITAL 20 Caps Lock
VK_KANA 21 
VK_HANGUL 21 
VK_JUNJA 23 
VK_FINAL 24 
VK_HANJA 25 
VK_KANJI 25* 
VK_ESCAPE 27 Esc
VK_CONVERT 28 
VK_NONCONVERT 29 
VK_ACCEPT 30 
VK_MODECHANGE 31 
VK_SPACE 32 Space
VK_PRIOR 33 Page Up
VK_NEXT  34 Page Down
VK_END                 35 End
VK_HOME 36 Home
VK_LEFT   37 Left Arrow
VK_UP                 38 Up Arrow
VK_RIGHT 39 Right Arrow
VK_DOWN 40 Down Arrow
VK_SELECT 41 Select
VK_PRINT 42 Print
VK_EXECUTE 43 Execute
VK_SNAPSHOT 44 Snapshot
VK_INSERT 45 Insert
VK_DELETE 46 Delete
VK_HELP  47 Help
 48 0
 49 1
 50 2
 51 3
 52 4
 53 5
 54 6
 55 7
 56 8
 57 9
 65 A
 66 B
 67 C
 68 D
 69 E
 70 F
 71 G
 72 H
 73 I
 74 J
 75 K
 76 L
 77 M
 78 N
 79 O
 80 P
 81 Q
 82 R
 83 S
 84 T
 85 U
 86 V
 87 W
 88 X
 89 Y
 90 Z
VK_LWIN 91 
VK_RWIN 92 
VK_APPS 93 
VK_SLEEP 95 
VK_NUMPAD0 96 小键盘 0
VK_NUMPAD1 97 小键盘 1
VK_NUMPAD2 98 小键盘 2
VK_NUMPAD3 99 小键盘 3
VK_NUMPAD4 100 小键盘 4
VK_NUMPAD5 101 小键盘 5
VK_NUMPAD6 102 小键盘 6
VK_NUMPAD7 103 小键盘 7
VK_NUMPAD8 104 小键盘 8
VK_NUMPAD9 105 小键盘 9
VK_MULTIPLY 106 小键盘 *
VK_ADD 107 小键盘 +
VK_SEPARATOR 108 小键盘 Enter
VK_SUBTRACT 109 小键盘 -
VK_DECIMAL 110 小键盘 .
VK_DIVIDE 111 小键盘 /
VK_F1 112 F1
VK_F2 113 F2
VK_F3 114 F3
VK_F4 115 F4
VK_F5 116 F5
VK_F6 117 F6
V
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值