Форум: "WinAPI";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];
ВнизКак узнать количество памяти видеокарты???? Найти похожие ветки
← →
gektorrr © (2006-04-16 15:32) [0]Как узнать количество памяти видеокарты???? весь инет облазил,ну нигде нет????
← →
Anatoly Podgoretsky © (2006-04-16 16:57) [1]Реального применения задача не имеет.
← →
n0name (2006-04-17 15:22) [2]
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.
← →
miek © (2006-04-18 08:22) [3]n0name, что за изврат!!!
Не слушайте его, все это легко и элементарно делается через IDirectDraw.
См. MSDN
← →
n0name (2006-04-18 19:28) [4]
> n0name, что за изврат!!!
Где изврат? =)
WMI пржде всего и создана для получении информации о системе.
> Не слушайте его, все это легко и элементарно делается через
> IDirectDraw.
Можно и так, через IDirectDraw4::GetCaps.
← →
Otter © (2006-04-23 19:52) [5]Объясните, как собственно подключить это IDirectDraw4 к программе на Delphi....! В MSDN-е это не говорится.
← →
miek © (2006-04-24 08:21) [6]>WMI пржде всего и создана для получении информации о системе
Служба WMI может быть отключена или вообще отсутствовать, а directx есть везде.
← →
Плохиш © (2006-04-24 11:33) [7]
> а directx есть везде.
Чё правда?
← →
homm © (2006-04-24 12:17) [8]
> > а directx есть везде.
>
> Чё правда?
если вин95 НЕ оср2 в расчет не брать, то везде
← →
homm © (2006-04-24 12:18) [9]ЗЫ омхо вин95 НЕ оср2 уже в 96 году был редкостью
← →
jack128 © (2006-04-24 12:51) [10]n0name (17.04.06 15:22) [2]
Изврат не использование wmi , а ручной вызов _Release интерфейсов. В дельфи - это не позволительно..
← →
kernel © (2006-04-24 17:18) [11]
> ЗЫ омхо вин95 НЕ оср2 уже в 96 году был редкостью
Можно гордо говорить, что "десять лет назад!" :>)
← →
Unsigned © (2006-04-25 01:01) [12]2 Otter
Заюзай хедеры!
http://clootie.narod.ru/delphi/download_dx90.html#Headers_DirectX90
← →
ancara © (2006-04-25 16:39) [13]
var
DDraw: IDirectDraw;
DDraw7: IDirectDraw7;
DDResult: HResult;
TotalVM, FreeVM: DWORD;
DriverCaps: TDDCaps;
HELCaps: TDDCaps;
begin
DDResult := DirectDrawCreate(nil,DDraw,nil);
if DDResult<>0 then
begin
ShowMessage("Error creating DirectDraw object.");
Halt;
end;
DDResult := DDraw.QueryInterface(IID_IDirectDraw7, DDraw7);
if DDResult<>0 then
begin
ShowMessage("Interface IDirectDraw7 not supported.");
Halt;
end;
DriverCaps.dwSize:=sizeof(TDDCaps);
DDResult := DDraw7.SetCooperativeLevel(Handle, DDSCL_NORMAL);
if DDResult<>0 then exit;
DDResult := DDraw7.GetCaps(@DriverCaps, @HELCaps);
if DDResult<>0 then exit;
TotalVM:=DriverCaps.dwVidMemTotal;
FreeVM:=DriverCaps.dwVidMemFree;
end;
← →
ancara © (2006-04-25 16:45) [14]
> Anatoly Podgoretsky © (16.04.06 16:57) [1]
> Реального применения задача не имеет.
>
Имеет.
Одно из применений - мониторинг видеопамяти, определение объема занятой памяти в процентном выражении.
← →
gektorrr © (2006-05-05 15:03) [15]WMIInterfaces- а что это за модуль такой, на распознается.........?
пересмотрел все что нашел в нете про IDirectDraw, но ответа так и не нашел, не подскажешь как именно?
← →
n0name (2006-05-05 16:24) [16]
unit WMIInterfaces;
interface
uses
Windows,
ActiveX;
type
PPIWbemLocator = ^PIWbemLocator;
PPIWbemContext = ^PIWbemContext;
PPIWbemServices = ^PIWbemServices;
PPIWbemObjectSink = ^PIWbemObjectSink;
PPIWbemCallResult = ^PIWbemCallResult;
PPIWbemClassObject = ^PIWbemClassObject;
PPIWbemQualifierSet = ^PIWbemQualifierSet;
PPIEnumWbemClassObject = ^PIEnumWbemClassObject;
PIWbemLocator = ^IWbemLocator;
PIWbemContext = ^IWbemContext;
PIWbemServices = ^IWbemServices;
PIWbemObjectSink = ^IWbemObjectSink;
PIWbemCallResult = ^IWbemCallResult;
PIWbemClassObject = ^IWbemClassObject;
PIWbemQualifierSet = ^IWbemQualifierSet;
PIEnumWbemClassObject = ^IEnumWbemClassObject;
IWbemContext = interface(IUnknown)
["{44ACA674-E8FC-11D0-A07C-00C04FB68820}"]
function Clone(ppNewCopy: PPIWbemContext): HRESULT; stdcall;
function GetNames(lFlags: DWORD; pNames: PSafeArray): HRESULT; stdcall;
function BeginEnumeration(lFlags: DWORD): HRESULT; stdcall;
function Next(lFlags: DWORD; pstrName: PBStr; pValue: POleVariant): HRESULT; stdcall;
function EndEnumeration(): HRESULT; stdcall;
function SetValue(wszName: LPCWSTR; lFlags: DWORD; pValue: POleVariant): HRESULT; stdcall;
function GetValue(wszName: LPCWSTR; lFlags: DWORD; pValue: POleVariant): HRESULT; stdcall;
function DeleteValue(wszName: LPCWSTR; lFlags: DWORD): HRESULT; stdcall;
function DeleteAll(): HRESULT; stdcall;
end;
IWbemCallResult = interface(IUnknown)
["{44ACA675-E8FC-11D0-A07C-00C04FB68820}"]
function GetResultObject(lTimeout: DWORD; ppResultObject: PPIWbemClassObject): HRESULT; stdcall;
function GetResultString(lTimeout: DWORD; pstrResultString: PBStr): HRESULT; stdcall;
function GetResultServices(lTimeout: DWORD; ppServices: PPIWbemServices): HRESULT; stdcall;
function GetCallStatus(lTimeout: DWORD; plStatus: PDWORD): HRESULT; stdcall;
end;
IWbemQualifierSet = interface(IUnknown)
["{DC12A680-737F-11CF-884D-00AA004B2E24}"]
function Get(wszName: LPCWSTR; lFlags: DWORD; pVal: POleVariant; plFlavor: PDWORD): HRESULT; stdcall;
function Put(wszName: LPCWSTR; pVal: POleVariant; lFlavor: DWORD): HRESULT; stdcall;
function Delete(wszName: LPCWSTR): HRESULT; stdcall;
function GetNames(lFlags: DWORD; pNames: PSafeArray): HRESULT; stdcall;
function BeginEnumeration(lFlags: DWORD): HRESULT; stdcall;
function Next(lFlags: DWORD; pstrName: PBStr; pVal: POleVariant; plFlavor: PDWORD): HRESULT; stdcall;
function EndEnumeration(): HRESULT; stdcall;
end;
IWbemObjectSink = interface(IUnknown)
["{7C857801-7381-11CF-884D-00AA004B2E24}"]
function Indicate(lObjectCount: DWORD; apObjArray: PPIWbemClassObject): HRESULT; stdcall;
function SetStatus(lFlags: DWORD; hResult: DWORD; strParam: TBStr; pObjParam: PIWbemClassObject): HRESULT; stdcall;
end;
IWbemClassObject = interface(IUnknown)
["{DC12A681-737F-11CF-884D-00AA004B2E24}"]
function GetQualifierSet(ppQualSet: PPIWbemQualifierSet): HRESULT; stdcall;
function Get(wszName: LPCWSTR; lFlags: DWORD; pVal: POleVariant; pType: PDWORD; plFlavor: PDWORD): HRESULT; stdcall;
function Put(wszName: LPCWSTR; lFlags: DWORD; pVal: POleVariant; lType: DWORD): HRESULT; stdcall;
function Delete(wszName: LPCWSTR): HRESULT; stdcall;
function GetNames(wszQualifierName: LPCWSTR; lFlags: DWORD; pQualifierVal: POleVariant; pNames: PSafeArray): HRESULT; stdcall;
function BeginEnumeration(lEnumFlags: DWORD): HRESULT; stdcall;
function Next(lFlags: DWORD; strName: PBStr; pVal: POleVariant; pType: PDWORD; plFlavor: PDWORD): HRESULT; stdcall;
function EndEnumeration(): HRESULT; stdcall;
function GetPropertyQualifierSet(wszProperty: LPCWSTR; ppQualSet: PPIWbemQualifierSet): HRESULT; stdcall;
function Clone(ppCopy: PPIWbemClassObject): HRESULT; stdcall;
function GetObjectText(lFlags: DWORD; pstrObjectText: PBStr): HRESULT; stdcall;
function SpawnDerivedClass(lFlags: DWORD; ppNewClass: PPIWbemClassObject): HRESULT; stdcall;
function SpawnInstance(lFlags: DWORD; ppNewInstance: PPIWbemClassObject): HRESULT; stdcall;
function CompareTo(lFlags: DWORD; pCompareTo: PIWbemClassObject): HRESULT; stdcall;
function GetPropertyOrigin(wszName: LPCWSTR; pstrClassName: PBStr): HRESULT; stdcall;
function InheritsFrom(strAncestor: LPCWSTR): HRESULT; stdcall;
function GetMethod(wszName: LPCWSTR; lFlags: DWORD; ppInSignature: PPIWbemClassObject; ppOutSignature: PPIWbemClassObject): HRESULT; stdcall;
function PutMethod(wszName: LPCWSTR; lFlags: DWORD; pInSignature: PIWbemClassObject; pOutSignature: PIWbemClassObject): HRESULT; stdcall;
function DeleteMethod(wszName: LPCWSTR): HRESULT; stdcall;
function BeginMethodEnumeration(lEnumFlags: DWORD): HRESULT; stdcall;
function NextMethod(lFlags: DWORD; pstrName: PBStr; ppInSignature: PPIWbemClassObject; ppOutSignature: PPIWbemClassObject): HRESULT; stdcall;
function EndMethodEnumeration(): HRESULT; stdcall;
function GetMethodQualifierSet(wszMethod: LPCWSTR; ppQualSet: PPIWbemQualifierSet): HRESULT; stdcall;
function GetMethodOrigin(wszMethodName: LPCWSTR; pstrClassName: PBStr): HRESULT; stdcall;
end;
IEnumWbemClassObject = interface(IUnknown)
["{027947E1-D731-11CE-A357-000000000001}"]
function Reset(): HRESULT; stdcall;
function Next(lTimeout: DWORD; uCount: DWORD; apObjects: PPIWbemClassObject; puReturned: PDWORD): HRESULT; stdcall;
function NextAsync(uCount: DWORD; pSink: PIWbemObjectSink): HRESULT; stdcall;
function Clone(ppEnum: PPIEnumWbemClassObject): HRESULT; stdcall;
function Skip(lTimeout: DWORD; nCount: DWORD): HRESULT; stdcall;
end;
← →
n0name (2006-05-05 16:25) [17]
IWbemServices = interface(IUnknown)
["{9556DC99-828C-11CF-A37E-00AA003240C7}"]
function OpenNamespace(strNamespace: TBStr; lFlags: DWORD; pCtx: PIWbemContext; ppWorkingNamespace: PPIWbemServices;
ppResult: PPIWbemCallResult): HRESULT; stdcall;
function CancelAsyncCall(pSink: PIWbemObjectSink): HRESULT; stdcall;
function QueryObjectSink(lFlags: DWORD; ppResponseHandler: PPIWbemObjectSink): HRESULT; stdcall;
function GetObject(strObjectPath: TBStr; lFlags: DWORD; pCtx: PIWbemContext; ppObject: PPIWbemClassObject;
ppCallResult: PPIWbemCallResult): HRESULT; stdcall;
function GetObjectAsync(strObjectPath: TBStr; lFlags: DWORD; pCtx: PIWbemContext; pResponseHandler: PIWbemObjectSink): HRESULT; stdcall;
function PutClass(pObject: PIWbemClassObject; lFlags: DWORD; pCtx: PIWbemContext; ppCallResult: PPIWbemCallResult): HRESULT; stdcall;
function PutClassAsync(pObject: PIWbemClassObject; lFlags: DWORD; pCtx: PIWbemContext; pResponseHandler: PIWbemObjectSink): HRESULT; stdcall;
function DeleteClass(strClass: TBStr; lFlags: DWORD; pCtx: PIWbemContext; ppCallResult: PPIWbemCallResult): HRESULT; stdcall;
function DeleteClassAsync(strClass: TBStr; lFlags: DWORD; pCtx: PIWbemContext; pResponseHandler: PIWbemObjectSink): HRESULT; stdcall;
function CreateClassEnum(strSuperclass: TBStr; lFlags: DWORD; pCtx: PIWbemContext; ppEnum: PPIEnumWbemClassObject): HRESULT; stdcall;
function CreateClassEnumAsync(strSuperclass: TBStr; lFlags: DWORD; pCtx: PIWbemContext; pResponseHandler: PIWbemObjectSink): HRESULT; stdcall;
function PutInstance(pInst: PIWbemClassObject; lFlags: DWORD; pCtx: PIWbemContext; ppCallResult: PPIWbemCallResult): HRESULT; stdcall;
function PutInstanceAsync(pInst: PIWbemClassObject; lFlags: DWORD; pCtx: PIWbemContext; pResponseHandler: PIWbemObjectSink): HRESULT; stdcall;
function DeleteInstance(strObjectPath: TBStr; lFlags: DWORD; pCtx: PIWbemContext; ppCallResult: PPIWbemCallResult): HRESULT; stdcall;
function DeleteInstanceAsync(strObjectPath: TBStr; lFlags: DWORD; pCtx: PIWbemContext; pResponseHandler: PIWbemObjectSink): HRESULT; stdcall;
function CreateInstanceEnum(strFilter: TBStr; lFlags: DWORD; pCtx: PIWbemContext; ppEnum: PPIEnumWbemClassObject): HRESULT; stdcall;
function CreateInstanceEnumAsync(strFilter: TBStr; lFlags: DWORD; pCtx: PIWbemContext; pResponseHandler: PIWbemObjectSink): HRESULT; stdcall;
function ExecQuery(strQueryLanguage: TBStr; strQuery: TBStr; lFlags: DWORD; pCtx: PIWbemContext; ppEnum: PPIEnumWbemClassObject): HRESULT; stdcall;
function ExecQueryAsync(strQueryLanguage: TBStr; strQuery: TBStr; lFlags: DWORD; pCtx: PIWbemContext;
pResponseHandler: PIWbemObjectSink): HRESULT; stdcall;
function ExecNotificationQuery(strQueryLanguage: TBStr; strQuery: TBStr; lFlags: DWORD; pCtx: PIWbemContext;
ppEnum: PPIEnumWbemClassObject): HRESULT; stdcall;
function ExecNotificationQueryAsync(strQueryLanguage: TBStr; strQuery: TBStr; lFlags: DWORD; pCtx: PIWbemContext;
pResponseHandler: PIWbemObjectSink): HRESULT; stdcall;
function ExecMethod(strObjectPath: TBStr; strMethodName: TBStr; lFlags: DWORD; pCtx: PIWbemContext;
pInParams: PIWbemClassObject; ppOutParams: PPIWbemClassObject; ppCallResult: PPIWbemCallResult): HRESULT; stdcall;
function ExecMethodAsync(strObjectPath: TBStr; strMethodName: TBStr; lFlags: DWORD; pCtx: PIWbemContext;
pInParams: PIWbemClassObject; pResponseHandler: PIWbemObjectSink): HRESULT; stdcall;
end;
IWbemLocator = interface(IUnknown)
["{DC12A687-737F-11CF-884D-00AA004B2E24}"]
function ConnectServer(strNetworkResource: TBStr; strUser: TBStr; strPassword: TBStr; strLocale: TBStr; lSecurityFlags: DWORD;
strAuthority: TBStr; pCtx: PIWbemContext; ppNamespace: PPIWbemServices): HRESULT; stdcall;
end;
const
CLSID_WbemLocator: TGUID = "{4590F811-1D3A-11D0-891F-00AA004B2E24}";
IID_IWbemLocator: TGUID = "{DC12A687-737F-11CF-884D-00AA004B2E24}";
implementation
end.
← →
gektorrr © (2006-05-05 23:51) [18]Program GetVideoRAM теперь работает, выводит правильно........но почему-то при повторном вызове зависает и выдает ошибку:
Project Project1.exe raised exception class EAccessVioletion with message "Access violation at adress 004058DE in module"Project1.exe".Read of address 0104ffE8".
Что не так?????
А программа ancara © (25.04.06 16:39) [13] запускается, но никакого результата нне выводит, а тут в чем проблема?????
← →
gektorrr © (2006-05-05 23:51) [19]Program GetVideoRAM теперь работает, выводит правильно........но почему-то при повторном вызове зависает и выдает ошибку:
Project Project1.exe raised exception class EAccessVioletion with message "Access violation at adress 004058DE in module"Project1.exe".Read of address 0104ffE8".
Что не так?????
А программа ancara © (25.04.06 16:39) [13] запускается, но никакого результата нне выводит, а тут в чем проблема?????
← →
gektorrr © (2006-05-05 23:53) [20]Program GetVideoRAM теперь работает, выводит правильно........но почему-то при повторном вызове зависает и выдает ошибку:
Project Project1.exe raised exception class EAccessVioletion with message "Access violation at adress 004058DE in module"Project1.exe".Read of address 0104ffE8".
Что не так?????
А программа ancara © (25.04.06 16:39) [13] запускается, но никакого результата нне выводит, а тут в чем проблема?????
← →
gektorrr © (2006-05-05 23:53) [21]Program GetVideoRAM теперь работает, выводит правильно........но почему-то при повторном вызове зависает и выдает ошибку:
Project Project1.exe raised exception class EAccessVioletion with message "Access violation at adress 004058DE in module"Project1.exe".Read of address 0104ffE8".
Что не так?????
А программа ancara © (25.04.06 16:39) [13] запускается, но никакого результата нне выводит, а тут в чем проблема?????
← →
gektorrr © (2006-05-05 23:59) [22]Program GetVideoRAM теперь работает, выводит правильно........но почему-то при повторном вызове зависает и выдает ошибку:
Project Project1.exe raised exception class EAccessVioletion with message "Access violation at adress 004058DE in module"Project1.exe".Read of address 0104ffE8".
Что не так?????
А программа ancara © (25.04.06 16:39) [13] запускается, но никакого результата нне выводит, а тут в чем проблема?????
← →
gektorrr © (2006-05-06 20:04) [23]Sorry, заело......
← →
ancara © (2006-05-10 10:44) [24]в TotalVM хранится значение, соответствующее полному объему видеопамяти,
в FreeVM - значение, соответствующее объему свободной.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.074 c