AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Grafikspeicher auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Grafikspeicher auslesen

Ein Thema von delphi_user14 · begonnen am 6. Jul 2008 · letzter Beitrag vom 1. Jun 2016
Antwort Antwort
Benutzerbild von delphi_user14
delphi_user14

Registriert seit: 10. Jun 2008
Ort: Au am Leithagebirge (Österreich)
105 Beiträge
 
Delphi 2007 Enterprise
 
#1

Grafikspeicher auslesen

  Alt 6. Jul 2008, 22:58
Hallo!

Ich möchte eine Art System-Info Programm schreiben.

Dort möchte ich z.B. die Menge des Grafikspeichers anzeigen.

Nur leider fehlt mir die nötige Funktion zum Auslesen der Speichermenge.

Könnte mir bitte jemand einen Quellcode geben?

Danke im Vorraus!
Patrick K.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#2

Re: Grafikspeicher auslesen

  Alt 7. Jul 2008, 12:45
Mit WMI:

'Win32_VideoController','AdapterRAM'

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,
  ActiveX, WbemScripting_TLB;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Label1: TLabel;
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  aLoc: ISWbemLocator;
  aSrv: ISWbemServices;
  aObjSet: ISWbemObjectSet;
  pEnum: IEnumVARIANT;
  vOut: OleVariant;
  dwRetrieved: LongWord;
  hRes: HResult;
  cWQL, sWQL: string;
  st: TStringList;

implementation

{$R *.dfm}

function GetWMIstring (wmiHost, wmiClass, wmiProperty : string):string;
var // These are all needed for the WMI querying process
  Locator: ISWbemLocator;
  Services: ISWbemServices;
  SObject: ISWbemObject;
  ObjSet: ISWbemObjectSet;
  SProp: ISWbemProperty;
  Enum: IEnumVariant;
  Value: Cardinal;
  TempObj: OleVariant;
  SN: string;
begin
  try
  Locator := CoSWbemLocator.Create;
   Services := Locator.ConnectServer(wmiHost, 'root\cimv2', '', '', '','', 0, nil);
  ObjSet := Services.ExecQuery('SELECT * FROM '+wmiClass, 'WQL',
    wbemFlagReturnImmediately and wbemFlagForwardOnly , nil);
  Enum := (ObjSet._NewEnum) as IEnumVariant;
  while (Enum.Next(1, TempObj, Value) = S_OK) do
  begin
    SObject := IUnknown(tempObj) as ISWBemObject;
    SProp := SObject.Properties_.Item(wmiProperty, 0);
    if VarIsNull(SProp.Get_Value) then
      result := ''
    else
    begin
      SN := SProp.Get_Value;
      result := SN;
    end;
  end;
  except // Trap any exceptions (Not having WMI installed will cause one!)
   on exception do
    result := '';
   end;
end;


procedure TForm1.FormActivate(Sender: TObject);
var tmpstr : string;
begin
tmpstr := getWMIstring('','Win32_VideoController ','AdapterRAM');
  if tmpstr <> 'then Label1.caption:= tmpstr +' Bytes VideoRAM';
end;

end.
  Mit Zitat antworten Zitat
e-gon

Registriert seit: 7. Jul 2003
Ort: Stuttgart
163 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: Grafikspeicher auslesen

  Alt 1. Jun 2016, 11:14
Hallo!

Sorry dass ich das alte Thema nochmal ausgrabe, aber ich habe beim Auslesen von Grafik-RAM >= 4 GB ein Problem. Ich bekomme immer -2080374784 zurück.

Das ist natürlich nicht verwunderlich, wenn man auf 32Bit-Basis ("Win32_VideoController") arbeitet. Doch scheint es kein "Win64_VideoController" oder sowas zu geben. Kennt jemand eine Möglichkeit dennoch größeren Grafikspeicher korrekt auszulesen?

Gruß
e-gon
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Grafikspeicher auslesen

  Alt 1. Jun 2016, 14:47
Win32 ist quasi der API-Name und die API heißt auch unter 64 Bit noch Win32. (die API des Windows NT-Systems und die gab es schon von Anfang an auch mit 64 Bit)

https://msdn.microsoft.com/en-us/library/aa394512.aspx
win32_videocontroller.AdapterRAM > Data type: uint32
und -2080374784 aka $8000000 (2147483648) ist wohl der Fehlercode für "ist zu groß für mich"

Aber auf die Schnelle sah ich in den Klassen-Listen des MSDN auch nichts Besseres.
$2B or not $2B
  Mit Zitat antworten Zitat
e-gon

Registriert seit: 7. Jul 2003
Ort: Stuttgart
163 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Grafikspeicher auslesen

  Alt 1. Jun 2016, 16:52
Hallo himitsu,

danke für die schnelle Antwort! Leider hat auch eine längliche Internet-Recherche keine brauchbaren Ergebnisse gebracht. Aber es kann doch nicht sein, dass noch niemand auf dieses Problem gestoßen ist!

Das Programm AIDA kann es jedenfalls korrekt auslesen, auch wenn mir das nicht so richtig was bringt...

Gruß
e-gon
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: Grafikspeicher auslesen

  Alt 1. Jun 2016, 17:02
WMI greift letzten Endes (meistens) auch nur auf irgendwelche APIs/Registryeinträge zu, welche man ganz bestimmt auch selber ansprechen/auslesen könnte.
* man muß die "nur" finden
* und eventuell gibt ab und an mal Problemchen mit "undokumentierten" APIs, die sich eventuell irgendwann ändern könnten
$2B or not $2B

Geändert von himitsu ( 2. Jun 2016 um 10:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Grafikspeicher auslesen

  Alt 1. Jun 2016, 17:58
Ohne einen Hauch von Ahnung zu haben: Hat DirectX vllt. nicht irgendwas in der Richtung?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz