Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать количество памяти видеокарты????


Страницы:   1 2

gektorrr ©   (2006-04-16 15:32:00) 

Как узнать количество памяти видеокарты???? весь инет облазил,ну нигде нет????


n0name   (2006-04-18 19:28:00) [21]


> n0name, что за изврат!!!

Где изврат? =)
WMI пржде всего и создана для получении информации о системе.

> Не слушайте его, все это легко и элементарно делается через
> IDirectDraw.

Можно и так, через IDirectDraw4::GetCaps.


miek   (2006-04-18 08:22:00) [22]

n0name, что за изврат!!!
Не слушайте его, все это легко и элементарно делается через IDirectDraw.
См. MSDN


n0name   (2006-04-17 15:22:00) [23]


program GetVideoRAM;

uses
 SysUtils,
 Windows,
 ActiveX,
 WMIInterfaces;

{$R *.res}

var
hRes: HRESULT;
pLoc: IWbemLocator;
pSvc: IWbemServices;
pEnumerator: IEnumWbemClassObject;
pClsObj: IWbemClassObject;
Return: DWORD;
vtProp: OleVariant;

begin
pLoc := nil;
pSvc := nil;
pEnumerator := nil;
pClsObj := nil;

hRes := CoInitializeEx(nil, COINIT_MULTITHREADED);
if (hRes <> S_OK) then
 begin
  MessageBoxA(0, 'CoInitializeEx() Error', 'Error!', 0);
  exit;
 end;
hRes := CoInitializeSecurity(nil, -1, nil, nil, 0, 3, nil, 0, nil);
if (hRes <> S_OK) then
 begin
  MessageBoxA(0, 'CoInitializeSecurity() Error', 'Error!', 0);
  CoUninitialize;
  exit;
 end;
hRes := CoCreateInstance(CLSID_WbemLocator, nil, CLSCTX_INPROC_SERVER, IID_IWbemLocator, pLoc);
if (hRes <> S_OK) then
 begin
  MessageBoxA(0, PChar('CoCreateInstance() Error N' + IntToHex(hRes, 8)), 'Error!', 0);
  CoUninitialize;
  exit;
 end;
hRes := pLoc.ConnectServer(PWChar(WideString('ROOT\CIMV2')), nil, nil, nil, 0, nil, nil, @pSvc);
if (hRes <> S_OK) then
 begin
  MessageBoxA(0, PChar('pLoc.ConnectServer() Error N' + IntToHex(hRes, 8)), 'Error!', 0);
  pLoc._Release;
  CoUninitialize;
  exit;
 end;
hRes := CoSetProxyBlanket(pSvc, 10, 0, nil, 3, 3, nil, 0);
if (hRes <> S_OK) then
 begin
  MessageBoxA(0, 'CoSetProxyBlanket Error', 'Error!', 0);
  pSvc._Release;
  pLoc._Release;
  CoUninitialize;
  exit;
 end;
hRes := pSvc.ExecQuery(PWChar(WideString('WQL')), PWChar(WideString('SELECT * FROM Win32_VideoController')), $30, nil, @pEnumerator);
if (hRes <> S_OK) then
 begin
  MessageBoxA(0, 'pSvc.ExecQuery Error', 'Error!', 0);
  pSvc._Release;
  pLoc._Release;
  CoUninitialize;
  exit;
 end;

Return := 0;
while (pEnumerator <> nil) do
 begin
  pEnumerator.Next(DWORD(-1), 1, @pClsObj, @Return);
  if Return = 0 then break;
  VariantInit(vtProp);
  pClsObj.Get(PWChar(WideString('AdapterRAM')), 0, @vtProp, nil, nil);
  MessageBoxA(0, PChar(IntToStr(vtProp shr 20) + 'Mb'), 'Adapter RAM', 0);
  VariantClear(vtProp);
 end;
 
pSvc._Release;
pLoc._Release;
pEnumerator._Release;
pClsObj._Release;
CoUninitialize;
end.


Anatoly Podgoretsky   (2006-04-16 16:57:00) [24]

Реального применения задача не имеет.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо