社区
硬件/系统
帖子详情
Win9X系统下如何获取主机的所有显卡型号和显卡显存大小?
CYBERDREAM
2004-07-14 01:57:39
在Win9X系统中怎样才能获取所有的显卡类型 以及显存大小啊? 通过注册表或是通过API或是通过DirectDraw都可以.
通过IdirectDraw接口的GetCaps()方法对有的显卡不能取出显存的大小值 ,所以询问有没有其它的准确可靠的方法?
...全文
221
8
打赏
收藏
Win9X系统下如何获取主机的所有显卡型号和显卡显存大小?
在Win9X系统中怎样才能获取所有的显卡类型 以及显存大小啊? 通过注册表或是通过API或是通过DirectDraw都可以. 通过IdirectDraw接口的GetCaps()方法对有的显卡不能取出显存的大小值 ,所以询问有没有其它的准确可靠的方法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
CYBERDREAM
2004-07-15
打赏
举报
回复
to taianmonkey() :
該方法試過,對有的顯卡就取不出來顯存大小, 函數執行成功,但返回的顯存是0
dream989
2004-07-14
打赏
举报
回复
mark
lanstar200
2004-07-14
打赏
举报
回复
MARK
taianmonkey
2004-07-14
打赏
举报
回复
获取显存大小:
#include <ddraw.h>
#pragma comment(lib, "guids.lib")
LPDIRECTDRAW2 lpdd;
HRESULT ddrval;
CoInitialize(NULL);
ddrval = CoCreateInstance(CLSID_DirectDraw,
NULL, CLSCTX_ALL, IID_IDirectDraw2, (void**)&lpdd);
if(!FAILED(ddrval))
{
ddrval = IDirectDraw2_Initialize(lpdd, NULL);
}
DDCAPS ddcaps;
ddcaps.dwSize = sizeof DDCAPS;
lpdd->GetCaps(&ddcaps, NULL);
lpdd->Release();
DWORD dwMem = ddcaps.dwVidMemTotal;
int iMem = dwMem/1024/1024;
CString strMem;
strMem.Format(_T("display memory is %d MB"),iMem);
AfxMessageBox(strMem);
CoUninitialize();
CYBERDREAM
2004-07-14
打赏
举报
回复
To gracezhu(eutom) :
Win9x系統對WMI好像支持的還很不好啊 ,還需要安裝一個WMI的安裝包才可以使用WMI功能吧?
CYBERDREAM
2004-07-14
打赏
举报
回复
謝謝上面的各位, 代碼我之前就看過,也試過,在Win9x系統可以嗎?呵呵 ,至少是不可能讀取出顯存信息的
Kudeet
2004-07-14
打赏
举报
回复
作者:xstring (麻雀)
问:如何列出系统中安装的显卡。
答:
以下方法是通过注册表来得到的。每个显卡会安装一个kernel service,这些服务都会在Video这个Group内,然后枚举每个service下面的设备加在一起就可以了。
代码如下:
/*
* enum-vc.cpp - 列出系统中的显卡
*
* 作者: xstring@csdn
* 日期: 2004.04.17
*
* 说明:
* 如果你要得到每个显卡的更多硬件信息, 请自己查看程序中所涉及到
* 的注册表位置。
*/
#define _WIN32_WINNT 0x400
#define STRICT
#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <tchar.h>
#include <locale.h>
#include <windows.h>
#pragma warning (disable : 4786)
#include <list>
#include <string>
#pragma comment (lib, "advapi32.lib")
#pragma comment (lib, "user32.lib")
#ifdef _UNICODE
typedef std::wstring string;
#else
typedef std::string string;
#endif
void print_msg (LPCTSTR api, DWORD error)
{
LPTSTR str = NULL;
FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, error, 0, (LPTSTR)&str, 0, 0);
_tprintf (TEXT ("%s 调用失败,错误代码: %u\n %s\n"),
api, error, str);
LocalFree (str);
};
#define CHECK_ERROR(apiname) if (error != ERROR_SUCCESS) { api = TEXT (apiname); goto failed; }
int main (void)
{
HKEY keyServ = NULL;
HKEY keyEnum = NULL;
HKEY key = NULL;
HKEY key2 = NULL;
DWORD error = 0;
LPCTSTR api = NULL;
DWORD type, count, size, i, iServ;
std::list <string> save;
setlocale (LC_ALL, ".ACP");
error = RegOpenKeyEx (HKEY_LOCAL_MACHINE,
TEXT ("SYSTEM\\CurrentControlSet\\Services"),
0, KEY_READ, &keyServ);
CHECK_ERROR ("RegOpenKeyEx");
error = RegOpenKeyEx (HKEY_LOCAL_MACHINE,
TEXT ("SYSTEM\\CurrentControlSet\\Enum"),
0, KEY_READ, &keyEnum);
CHECK_ERROR ("RegOpenKeyEx");
i = 0;
for (iServ=0;;++iServ)
{
TCHAR name [0x200];
size = 0x200;
error = RegEnumKeyEx (keyServ, iServ, name, &size,
NULL, NULL, NULL, NULL);
if (error == ERROR_NO_MORE_ITEMS)
break;
CHECK_ERROR ("RegEnumKeyEx");
error = RegOpenKeyEx (keyServ, name, 0, KEY_READ, &key);
CHECK_ERROR ("RegOpenKeyEx");
size = 0x200;
error = RegQueryValueEx (key, TEXT ("Group"),
0, &type, (LPBYTE)name, &size);
if (error == ERROR_FILE_NOT_FOUND)
{ // 键不存在
RegCloseKey (key);
continue;
};
CHECK_ERROR ("RegQueryValueEx");
if (_tcscmp (TEXT ("Video"), name) != 0)
{ // 不是显卡的内核驱动
RegCloseKey (key);
continue;
};
error = RegOpenKeyEx (key, TEXT ("Enum"),
0, KEY_READ, &key2);
CHECK_ERROR ("RegOpenKeyEx");
RegCloseKey (key);
key = key2;
size = sizeof (count);
error = RegQueryValueEx (key, TEXT ("Count"),
0, &type, (LPBYTE)&count, &size);
CHECK_ERROR ("RegQueryValueEx");
for (i=0;i<count;++i)
{
TCHAR sz [0x200];
TCHAR name [0x40];
wsprintf (name, TEXT ("%d"), i);
size = sizeof (sz);
error = RegQueryValueEx (key, name,
0, &type, (LPBYTE)sz, &size);
CHECK_ERROR ("RegQueryValueEx");
error = RegOpenKeyEx (keyEnum, sz,
0, KEY_READ, &key2);
CHECK_ERROR ("RegOpenKeyEx");
size = sizeof (sz);
error = RegQueryValueEx (key2, TEXT ("FriendlyName"),
0, &type, (LPBYTE)sz, &size);
if (error == ERROR_FILE_NOT_FOUND)
{
size = sizeof (sz);
error = RegQueryValueEx (key2, TEXT ("DeviceDesc"),
0, &type, (LPBYTE)sz, &size);
};
CHECK_ERROR ("RegQueryValueEx");
save.push_back (sz);
RegCloseKey (key2);
key2 = NULL;
};
RegCloseKey (key);
key = NULL;
};
RegCloseKey (keyEnum);
RegCloseKey (keyServ);
if (true)
{
std::list <string>::iterator it, end;
it = save.begin ();
end = save.end ();
_tprintf (TEXT("您的系统上共有 %u 块显卡: \n\n"), save.size ());
for (i=0;it!=end;++it)
_tprintf (TEXT (" 显卡 %d: - %s\n"), i++, it->c_str ());
}
return 0;
failed:
if (keyServ)
RegCloseKey (keyServ);
if (keyEnum)
RegCloseKey (keyEnum);
if (key)
RegCloseKey (key);
if (key2)
RegCloseKey (key2);
print_msg (api, error);
return error;
};
在我的系统上运行结果如下:
您的系统上共有 1 块显卡:
显卡 0: - NVIDIA GeForce4 Ti 4200 with AGP8X
gracezhu
2004-07-14
打赏
举报
回复
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=188129
电脑分身克隆软件
版本: 更新
Win
7x64可设IP与汉化 发行时间: 2011年 制作发行: IBIK 地区: 俄罗斯 语言: 简体中文 简介:ASTER是一个程序(只有一个程序!),它允许多个用户同时独立工作,如果他们每个人有自己的PC与一台计算机。...
rst内存检测
要求最好用独立
显卡
主板,如果使用集成
显卡
,由于有 几兆内存会划给
显存
所以不能全测到。 (2).检测过程中,软件会回写信息资料,请勿检测过程中拔出。 (3).本软件可选版本IDE,SATA,电子盘,U盘,网络PXE,版定制。 ...
多媒体教室培训.pptx
多媒体计算机组成 硬件:CPU、内存、硬盘、主板、
显卡
、其他外设 软件:
WIN
7操作
系统
、OFFICE、电子白板软件、视频音频播放器……等 多媒体教室培训全文共29页,当前为第6页。 多媒体讲台 是一种将讲台与电脑、多媒
clover引导黑苹果(微星MSI-B360M、i5-8500、AMD-RX580(4G))
clover引导黑苹果
主机
配置: 1、主板:微星B360M 2、CPU:Intel i5-8500 ...4、网卡:推荐使用BCM94360CD或者BCM943602CS,我使用的BCM94360CS2,同时支持黑苹果和
win
10 5、内存:我使用的金士顿骇客神条8G一条
B365ITX-Hackintosh-OC:华擎B365ITX黑苹果OC配置
由于新版本bootstrap已被弃用,若更新后OC引导丢失,请进
win
|pe
系统
使用easyuefi或者bootice重新将引导定位至:EFI\BOOT\BOOTx64.efi。 已知问题 无 安装和问题参考 配置里提供【单核显配置】、【核
硬件/系统
2,640
社区成员
17,239
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章