显卡型号检测--急,求救

tigertooth 2010-08-09 11:17:51
小弟突遇一问题,在使用客户端前需要先进行显卡检测,因为很多低版本的显卡不支持。。而我对硬件很弱智的。。对于显卡检测小弟了解太少,目前想到的办法是去检测显卡的标示符。。遇到2个问题:
1 我用的dx的接口,能够直接获得显卡设备的信息,大家可以查查GetadapterIdentity,但是我希望能尽量用api函数或者其他的,不要用到dx的,更不要查注册表的,win7下不靠谱。
2 得出那个标示符后解析很有问题,前3个ID没问题,但第4个参数就解析不出来了,因为他是个char内型,而我们需要的是个16进制的数字代码。。很诡异,我怎么转化都得不到
...全文
209 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
FancyMouse 2010-08-09
  • 打赏
  • 举报
回复
既然用dx接口那不用dx的检测函数干啥?
jackyjkchen 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tigertooth 的回复:]
如果只是判断显卡的名字可以起到显卡检测的作用吗?如N卡9600GT什么之类的名字,还是说显卡检测需要把驱动也检测了才能起到正常运行客户端的作用
[/Quote]
这要看你们需求的严谨程度了,有时候名字系统认了,但驱动可能安装有误。

如果仅仅是检查硬件兼容性,名字应该够了
jackyjkchen 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tigertooth 的回复:]
那上面的兄弟,你是怎么显示那个显卡的ID号的。。就是23EA-123-123123-1231-123这样一串的那东西,我解析不出来,看的时候是5段,但我解析出来只有4段。。
[/Quote]
只要数据在变量内存中不存在得不到的,应该是你代码细节上的问题吧……

不过有时候字符串结束符造成的截断要考虑下
tigertooth 2010-08-09
  • 打赏
  • 举报
回复
如果只是判断显卡的名字可以起到显卡检测的作用吗?如N卡9600GT什么之类的名字,还是说显卡检测需要把驱动也检测了才能起到正常运行客户端的作用
tigertooth 2010-08-09
  • 打赏
  • 举报
回复
那上面的兄弟,你是怎么显示那个显卡的ID号的。。就是23EA-123-123123-1231-123这样一串的那东西,我解析不出来,看的时候是5段,但我解析出来只有4段。。
jackyjkchen 2010-08-09
  • 打赏
  • 举报
回复
API直接找好像挺困难,我都是用WMI或者DX
tigertooth 2010-08-09
  • 打赏
  • 举报
回复
GUID是一个结构体,里面的有一个char型的成员,用它就可以.
struct {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID;

StringFromCLSID
StringFromGUID2
StringFromIID
以上三个都可以,自己用CString::Format或者sprintf做一个也不是难事
sprintf(buf, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", guid.data1, guid.data2, guid.data3, guid.data4[1],guid.data4[0], guid.data4[7], guid.data4[6], guid.data4[5], guid.data4[4], guid.data4[3], guid.data4[2]);
-----------
刚找的,不知道好用不,试试,可以解析guid就好

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧