查找串行鼠标使用的端口 [英] Find com-port used by serial mouse

查看:102
本文介绍了查找串行鼠标使用的端口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何查找串行鼠标占用的端口





这是我在 C#中检测鼠标的方法(此
* https://superuser.com/questions/414280/how-do-i-view-a-list-of-devices-from-the-command -line-in-windows



希望获得帮助


How to find which com-port is occupied by serial mouse

Here is how I detect mouse in C# (adapted code from this answer)

var info = IntPtr.Zero;
try
{
    var guid = new Guid("{4d36e96f-e325-11ce-bfc1-08002be10318}"); // mouses
    info = SetupDiGetClassDevsW(ref guid, null, IntPtr.Zero, 0);
    if ((int)info == -1) // INVALID_HANDLE_VALUE
        throw new Exception(string.Format("Error({0}) SetupDiGetClassDevsW", Marshal.GetLastWin32Error()));
    // enumerate mouses
    var device = new SP_DEVINFO_DATA();
    device.cbSize = (UInt32)Marshal.SizeOf(device);
    for (uint i = 0; ; i++)
    {
        // get device info
        if (!SetupDiEnumDeviceInfo(info, i, out device))
        {
            var error = Marshal.GetLastWin32Error();
            if (error == 259) // ERROR_NO_MORE_ITEMS
                break;
            else
                throw new Exception(string.Format("Error({0}) SetupDiEnumDeviceInfo", error));
        }
        string id = GetStringPropertyForDevice(info, device, 1); // SPDRP_HARDWAREID
        if (id != null && id.Contains("*PNP0F09")) // Microsoft BallPoint Serial Mouse
        {
            // ...
            // here I want to check com-port, how?
            // ...
        }
    }
}
finally
{
    if (info != IntPtr.Zero)
        SetupDiDestroyDeviceInfoList(info);
}

Edit

Removing C# tag. Looking for general info (any language).

解决方案

You can use Process Monitor from SysInternalSuite and open device manager then find out from where does the device manager getting its values

I tried it on USB Mouse and was able to get (on USB Input Device) as shown below 1. Open Mouse Properties (From Control Panel) 2. Open ProcMon 3. Click on the target icon and choose the mouse properties window 4. From the Mouse Properties window open the Hardware tab 5. In ProcMon Click on File-> Captuer Events 6. In ProcMon Edit->Find and look for "com" without quotation mark 7. Double click the found row (If you where able to find it)

Another solution would be to get device information using device manager command line utility devcon and parse the information from the output stream

More information on devcon: * http://support.microsoft.com/kb/311272 * https://superuser.com/questions/414280/how-do-i-view-a-list-of-devices-from-the-command-line-in-windows

Hope this help

这篇关于查找串行鼠标使用的端口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆