首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

庆祝老婆生日,发布《C#枚举硬件设备(升级版)》源码解决办法

2011-12-27 
庆祝老婆生日,发布《C#枚举硬件设备(升级版)》源码先取设备类型:C# code/// summary/// 设备类型/// /sum

庆祝老婆生日,发布《C#枚举硬件设备(升级版)》源码
先取设备类型:

C# code
    /// <summary>    /// 设备类型    /// </summary>    class DeviceClasses    {        public static Guid ClassesGuid;        public const int MAX_SIZE_DEVICE_DESCRIPTION = 1000;        public const int CR_SUCCESS = 0x00000000;        public const int CR_NO_SUCH_VALUE = 0x00000025;        public const int CR_INVALID_DATA = 0x0000001F;        private const int DIGCF_PRESENT = 0x00000002;        private const int DIOCR_INSTALLER = 0x00000001;        private const int MAXIMUM_ALLOWED = 0x02000000;        public const int DMI_MASK = 0x00000001;        public const int DMI_BKCOLOR = 0x00000002;        public const int DMI_USERECT = 0x00000004;        [StructLayout(LayoutKind.Sequential)]        class SP_DEVINFO_DATA        {            public int cbSize;            public Guid ClassGuid;            public int DevInst;            public ulong Reserved;        }        [DllImport("cfgmgr32.dll")]        private static extern UInt32 CM_Enumerate_Classes(UInt32 ClassIndex, ref Guid ClassGuid, UInt32 Params);        [DllImport("setupapi.dll")]        private static extern Boolean SetupDiClassNameFromGuidA(ref Guid ClassGuid, StringBuilder ClassName, UInt32 ClassNameSize, ref UInt32 RequiredSize);        [DllImport("setupapi.dll")]        private static extern IntPtr SetupDiGetClassDevsA(ref Guid ClassGuid, UInt32 Enumerator, IntPtr hwndParent, UInt32 Flags);        [DllImport("setupapi.dll")]        private static extern Boolean SetupDiDestroyDeviceInfoList(IntPtr DeviceInfoSet);        [DllImport("setupapi.dll")]        private static extern IntPtr SetupDiOpenClassRegKeyExA(ref Guid ClassGuid, UInt32 samDesired, int Flags, IntPtr MachineName, UInt32 Reserved);        [DllImport("setupapi.dll")]        private static extern Boolean SetupDiEnumDeviceInfo(IntPtr DeviceInfoSet, UInt32 MemberIndex, SP_DEVINFO_DATA DeviceInfoData);        [DllImport("advapi32.dll")]        private static extern UInt32 RegQueryValueA(IntPtr KeyClass, UInt32 SubKey, StringBuilder ClassDescription, ref UInt32 sizeB);        /// <summary>        /// 设备类型图标信息        /// </summary>        [StructLayout(LayoutKind.Sequential)]        public class SP_CLASSIMAGELIST_DATA        {            public int cbSize;            public ImageList ImageList;            public ulong Reserved;        }        public struct RECT        {            long left;            long top;            long right;            long bottom;        }        /// <summary>        /// 载入图片        /// </summary>        /// <param name="hInstance"></param>        /// <param name="Reserved"></param>        /// <returns></returns>        [DllImport("user32.dll")]        public static extern int LoadBitmapW(int hInstance, ulong Reserved);        /// <summary>        /// 获取图标        /// </summary>        /// <param name="ClassImageListData"></param>        /// <returns></returns>        [DllImport("setupapi.dll")]        public static extern Boolean SetupDiGetClassImageList(out SP_CLASSIMAGELIST_DATA ClassImageListData);        [DllImport("setupapi.dll")]        public static extern int SetupDiDrawMiniIcon(Graphics hdc, RECT rc, int MiniIconIndex, int Flags);        [DllImport("setupapi.dll")]        public static extern bool SetupDiGetClassBitmapIndex(Guid ClassGuid, out int MiniIconIndex);        [DllImport("setupapi.dll")]        public static extern int SetupDiLoadClassIcon(ref Guid classGuid, out IntPtr hIcon, out int index);        /// <summary>        /// 枚举设备类型        /// </summary>        /// <param name="ClassIndex"></param>        /// <param name="ClassName"></param>        /// <param name="ClassDescription"></param>        /// <param name="DevicePresent"></param>        /// <returns></returns>        public static int EnumerateClasses(UInt32 ClassIndex, StringBuilder ClassName, StringBuilder ClassDescription, ref bool DevicePresent)        {            Guid ClassGuid = Guid.Empty;            IntPtr NewDeviceInfoSet;            UInt32 result;            SP_DEVINFO_DATA DeviceInfoData = new SP_DEVINFO_DATA();            bool resNam = false;            UInt32 RequiredSize = 0;            result = CM_Enumerate_Classes(ClassIndex, ref ClassGuid, 0);            DevicePresent = false;            SP_CLASSIMAGELIST_DATA imagelist = new SP_CLASSIMAGELIST_DATA();            if (result != CR_SUCCESS)            {                return (int)result;            }            resNam = SetupDiClassNameFromGuidA(ref ClassGuid, ClassName, RequiredSize, ref RequiredSize);            if (RequiredSize > 0)            {                ClassName.Capacity = (int)RequiredSize;                resNam = SetupDiClassNameFromGuidA(ref ClassGuid, ClassName, RequiredSize, ref RequiredSize);            }            NewDeviceInfoSet = SetupDiGetClassDevsA(ref ClassGuid, 0, IntPtr.Zero, DIGCF_PRESENT);            if (NewDeviceInfoSet.ToInt32() == -1)            {                DevicePresent = false;                return 0;            }            UInt32 numD = 0;            DeviceInfoData.cbSize = 28;            DeviceInfoData.DevInst = 0;            DeviceInfoData.ClassGuid = System.Guid.Empty;            DeviceInfoData.Reserved = 0;            Boolean res1 = SetupDiEnumDeviceInfo(            NewDeviceInfoSet,            numD,            DeviceInfoData);            if (!res1)            {                DevicePresent = false;                return 0;            }            SetupDiDestroyDeviceInfoList(NewDeviceInfoSet);            IntPtr KeyClass = SetupDiOpenClassRegKeyExA(                ref ClassGuid, MAXIMUM_ALLOWED, DIOCR_INSTALLER, IntPtr.Zero, 0);            if (KeyClass.ToInt32() == -1)            {                DevicePresent = false;                return 0;            }            UInt32 sizeB = MAX_SIZE_DEVICE_DESCRIPTION;            ClassDescription.Capacity = MAX_SIZE_DEVICE_DESCRIPTION;            UInt32 res = RegQueryValueA(KeyClass, 0, ClassDescription, ref sizeB);            if (res != 0) ClassDescription = new StringBuilder(""); //No device description            DevicePresent = true;            ClassesGuid = DeviceInfoData.ClassGuid;            return 0;        }    } 


http://download.csdn.net/source/1871029

[解决办法]
jf:楼主强大 啊
[解决办法]
谢谢分享
[解决办法]
jf
[解决办法]
http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/68.gif
[解决办法]
接代码并顺便接分
[解决办法]
珍藏
[解决办法]
生日快乐
支持
[解决办法]
狠了 JF
[解决办法]
up!!

HP!!
[解决办法]
捧场!







【原创家庭记账簿1.1.1,简单实用,欢迎工薪阶层、家庭主妇下载使用
http://download.csdn.net/source/1849003】
[解决办法]
生日快乐!!!感谢分享!!!学习ing.....
[解决办法]
生日快乐..收藏.
[解决办法]
生日快乐

支持一下
[解决办法]
生日快乐
顺便jf
[解决办法]
生日快乐 幸福的一对
[解决办法]
生日快乐是必须的


代码很好,很强大
[解决办法]
祝福...
[解决办法]


送上祝福

接到分

学到甴曱(yóu yuē )


[解决办法]
超级好
[解决办法]
路过哈哈
[解决办法]
jf
xiexie 
非常感谢
分分
[解决办法]
哇 恭喜 ! 都31楼了, 好象还来得不晚吧
[解决办法]
路过
[解决办法]
aaaaaaaaaaaaaaaaa
[解决办法]
UP
[解决办法]
才子佳人。
[解决办法]
老大这个很牛啊,谢谢老大
[解决办法]
楼主真是强,谢谢分享!学习了,顺祝楼主之lover生日快乐,祝你们永远幸福
[解决办法]
mark
[解决办法]
學習順便拿分!
[解决办法]
 
每天回帖即可获得10分可用分!

[解决办法]
为了 可用分 努力回帖!
[解决办法]
生日快乐,迟来的祝福。代码收藏。
[解决办法]

探讨
生日快乐,迟来的祝福。代码收藏。

[解决办法]
学习
[解决办法]
收了,也送去祝福!~
[解决办法]
楼主我把这个收藏了
[解决办法]
顶!!祝生日快乐!
[解决办法]
非常感谢
[解决办法]
谢谢哈。
[解决办法]
谢谢分享~~
[解决办法]
祝福 祝福 楼主好幸福的人啊
[解决办法]
接代码并顺便接分
[解决办法]
很好,多谢了

[解决办法]
生日快乐。。。。
[解决办法]
学习了!
[解决办法]
看看
[解决办法]
收藏了,学习
[解决办法]
不错
[解决办法]
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
[解决办法]
没收了。。。。。。嘿嘿
[解决办法]
祝嫂子生日快乐
[解决办法]
祝贺,接分
[解决办法]
生日快乐
[解决办法]
jf
[解决办法]
up,谢谢蟑螂
[解决办法]
来晚了,UP
[解决办法]
不错
[解决办法]
太强了!
[解决办法]
很好很强大。
[解决办法]
哇( ⊙o⊙ )哇
[解决办法]
这个好,学习了
[解决办法]
UP
[解决办法]
不错哦,谢谢分享~

[解决办法]
收藏!
------解决方案--------------------


收藏
[解决办法]
很好很强大
[解决办法]
Ding 很强大
[解决办法]
学习接分
生日快乐
[解决办法]
路过哈哈
[解决办法]
好东西啊
[解决办法]
楼主好人啊,生日快乐
[解决办法]
祝老婆生日快乐!
[解决办法]

[解决办法]
羡慕啊
[解决办法]
楼主很牛呀,好好学习啦!
谢谢,嗯的!
[解决办法]
祝lz de lp 生日快樂!
[解决办法]
这生日好,呵呵,快乐!

支持一下
[解决办法]
up , happy birthday!
[解决办法]



快了
[解决办法]
祝lz老婆生日快乐
[解决办法]

[解决办法]
z祝福
[解决办法]

[解决办法]
快乐!
[解决办法]
MARK
[解决办法]
生日快了,顺便接分学习
[解决办法]
生日快了,顺便接分。。。。。
[解决办法]
mark

热点排行