.Net下的鼠标键盘模拟技术实战
在这里大家可能会被需要调用如此多的API接口函数所吓到。是的相对于第一,二节来说这节用到了比较多的API接口,不过稍微耐心的看一下这些API其实很多都是成对出现的,参数也差不多并没有看起来这么的吓人。下面我说明一下如何去使用这些API接口。首先,我们需要知道鼠标和键盘的USB设备在windows的系统上都被称为人体学接口设备,并且每个设备都有唯一性两个编号VID和PID,可在驱动设备的详细信息中可以看到。所以我们可以通过这两个编号来查找指定的设备驱动。
public static HIDDevice FindDevice(int nVid, int nPid, Type oType)总结:
{
string strPath = string.Empty;
// 创建查找字符串
string strSearch = string.Format("vid_{0:x4}&pid_{1:x4}", nVid, nPid);
Guid gHid = HIDGuid;
// 获取所有HID设备信息的列表
IntPtr hInfoSet = SetupDiGetClassDevs(ref gHid, null, IntPtr.Zero,
DIGCF_DEVICEINTERFACE | DIGCF_PRESENT);
try
{
// 分配一个设备信息接口数据块
DeviceInterfaceData oInterface = new DeviceInterfaceData();
oInterface.Size = Marshal.SizeOf(oInterface);
// 查找每个已连接到系统的设备
int nIndex = 0;
while (SetupDiEnumDeviceInterfaces(hInfoSet, 0, ref gHid, (uint)nIndex, ref oInterface))
{
// 获取设备的路径
string strDevicePath = GetDevicePath(hInfoSet, ref oInterface);
if (strDevicePath.IndexOf(strSearch) >= 0)
{
// 创建一个设备对象
HIDDevice oNewDevice = (HIDDevice)Activator.CreateInstance(oType);
// 使用路径来初始化
oNewDevice.Initialise(strDevicePath);
return oNewDevice;
}
nIndex++;
}
}
catch (Exception ex)
{
throw HIDDeviceException.GenerateError(ex.ToString());
}
finally
{
// 释放所有的设备信息资源
SetupDiDestroyDeviceInfoList(hInfoSet);
}
return null;
}
本文主要列举了鼠标和键盘模拟的一些技术,提供了如何在.Net框架下使用windows的原生API接口和在什么样的需求下使用什么样的技术来实现鼠标和键盘的模拟功能。本文没有列举所有的源代码,只希望这篇文章能起到一个抛砖引玉的作用,使大家对鼠标和键盘模拟开发技术有一个整体了解!
0
相关文章