使用 windows 多媒体 (winmm.dll) 获取设备(操纵杆)GUID
Get device (joystick) guid with windows multimedia (winmm.dll)
我尝试实现与非托管代码和 c# 的互操作。
我决定为此使用 winmm.dll。
需要获取操纵杆唯一的 guid 并识别设备状态(连接或未连接)
经过一些调查,我相信找到了应该执行此操作的函数 (joyGetDevCapsA)。但是不清楚应该传递什么值作为 int id 参数
public static class InputControllerInteroperator
{
private const string WINMM_NATIVE_LIBRARY = "winmm.dll";
private const CallingConvention CALLING_CONVENTION = CallingConvention.StdCall;
[DllImport(WINMM_NATIVE_LIBRARY, CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
public static extern int joyGetPosEx(int uJoyID, ref JOYINFOEX pji);
[DllImport(WINMM_NATIVE_LIBRARY, CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
public static extern int joyGetPos(int uJoyID, ref JOYINFO pji);
[DllImport(WINMM_NATIVE_LIBRARY, CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
public static extern int joyGetNumDevs();
[DllImport(WINMM_NATIVE_LIBRARY, CallingConvention = CALLING_CONVENTION, EntryPoint = "joyGetDevCaps"), SuppressUnmanagedCodeSecurity]
public static extern int joyGetDevCapsA(int id, ref JOYCAPS lpCaps, int uSize);
}
关于 winmm API for C# thought internet 的信息不多,所以如果有人有经验请分享。
问:如何检测当前是否已连接摇杆并获取设备唯一Guid?
根据 @Hans Passant (https://whosebug.com/users/17034/hans-passant) 的评论,问题如下:
没有guid,没有连接状态。特定的操纵杆用一个简单的单位标识。 0是第一个摇杆,1是第二个,依此类推
对我有用
我尝试实现与非托管代码和 c# 的互操作。
我决定为此使用 winmm.dll。
需要获取操纵杆唯一的 guid 并识别设备状态(连接或未连接)
经过一些调查,我相信找到了应该执行此操作的函数 (joyGetDevCapsA)。但是不清楚应该传递什么值作为 int id 参数
public static class InputControllerInteroperator
{
private const string WINMM_NATIVE_LIBRARY = "winmm.dll";
private const CallingConvention CALLING_CONVENTION = CallingConvention.StdCall;
[DllImport(WINMM_NATIVE_LIBRARY, CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
public static extern int joyGetPosEx(int uJoyID, ref JOYINFOEX pji);
[DllImport(WINMM_NATIVE_LIBRARY, CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
public static extern int joyGetPos(int uJoyID, ref JOYINFO pji);
[DllImport(WINMM_NATIVE_LIBRARY, CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
public static extern int joyGetNumDevs();
[DllImport(WINMM_NATIVE_LIBRARY, CallingConvention = CALLING_CONVENTION, EntryPoint = "joyGetDevCaps"), SuppressUnmanagedCodeSecurity]
public static extern int joyGetDevCapsA(int id, ref JOYCAPS lpCaps, int uSize);
}
关于 winmm API for C# thought internet 的信息不多,所以如果有人有经验请分享。
问:如何检测当前是否已连接摇杆并获取设备唯一Guid?
根据 @Hans Passant (https://whosebug.com/users/17034/hans-passant) 的评论,问题如下:
没有guid,没有连接状态。特定的操纵杆用一个简单的单位标识。 0是第一个摇杆,1是第二个,依此类推
对我有用