![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать количество памяти видеокарты????
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]Реального применения задача не имеет.