Wie Grafikkarten Speicher ermitteln ?
Re: Wie Grafikkarten Speicher ermitteln ?
Naja bis darauf, dass hier falsch gerundet wird (vermutlich wegen /1024 statt /1000), scheint der Code zu gehen.
Gibt hier bei mir bei der GPU 5 GB, habe aber 6 GB verbaut.
Gibt hier bei mir bei der GPU 5 GB, habe aber 6 GB verbaut.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- TroaX
- Beiträge: 662
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
- Wohnort: NRW
- Kontaktdaten:
Re: Wie Grafikkarten Speicher ermitteln ?
Hmmm komisch. Irgendwie sehe ich den Sinn nicht. Dann würde ich einfach durch 1000 rechnen. Abgerundet wird dann von alleine. Kaufmännisch runden macht kein Sinn. Weil dann hätte ich 9 GB. Es ist aber seltsam, das es bei mir auch manuell mit Rechner gerechnet genau herauskommt.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Re: Wie Grafikkarten Speicher ermitteln ?
Ergibt bei mir immer alles 0 ausser von Kiffi wenn ich das mit #PB_ASCII mache. dann bekomme ich 512 MB angezeigt so wie es auch sein muss
Das mit dem anzeigen des speichers ist schon komisch. bei mir zeigt er z.b. 31 statt 32MB (Hauptspeicher) an.
ich behelfe mich dann immer mit dem Einzeiler
Dann stimmt die sache auch wieder
Ungerade Memorys sind ja auch so viel ich weis garnicht möglich.
Das mit dem anzeigen des speichers ist schon komisch. bei mir zeigt er z.b. 31 statt 32MB (Hauptspeicher) an.
ich behelfe mich dann immer mit dem Einzeiler
Code: Alles auswählen
If (mem.i/2)*2<>mem.i : mem.i+1 : EndIf
Ungerade Memorys sind ja auch so viel ich weis garnicht möglich.
- TroaX
- Beiträge: 662
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
- Wohnort: NRW
- Kontaktdaten:
Re: Wie Grafikkarten Speicher ermitteln ?
Dann machen wir das jetzt so:
Und das Beispiel:
Wenn da jetzt unter 1 GB völlig krumme Werte rauskommen, dann wäre es mal gut zu wissen, was für welche. Ich habe keine Graka mit unter 1 GB und kann das dann auch selbst nicht testen.
Code: Alles auswählen
Define VMem.f
VMem = ValF(ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000","HardwareInformation.qwMemorySize",0))/1000000000
If VMem > 1
VMem = Round(VMem, #PB_Round_Down)
EndIf
Code: Alles auswählen
Procedure.s ReadRegKey(OpenKey.i,SubKey.s,ValueName.s,Type.i=1)
hKey.i=0
DataSize.i=255
keyvalue$=""
mem=AllocateMemory(1024)
If mem
If RegOpenKeyEx_(OpenKey,SubKey,0,#KEY_READ,@hKey)
keyvalue$="Error"
Else
If RegQueryValueEx_(hKey,ValueName,0,0,mem,@DataSize)
keyvalue$="Error"
Else
If Type=0
keyvalue$=Str(PeekI(mem))
ElseIf Type=1
keyvalue$=PeekS(mem)
EndIf
EndIf
RegCloseKey_(hKey)
EndIf
FreeMemory(mem)
EndIf
ProcedureReturn keyvalue$
EndProcedure
Procedure.s GetComputerName()
a$=ComputerName()
ProcedureReturn a$
EndProcedure
Procedure.s GetProcessorName()
a$=CPUName()
ProcedureReturn a$
EndProcedure
Procedure.s GetProcessorSpeed()
a$=ReadRegKey(#HKEY_LOCAL_MACHINE,"HARDWARE\DESCRIPTION\System\CentralProcessor\0","~MHz",0)
If a$=""
a$="<Unbekannt>"
EndIf
ProcedureReturn a$
EndProcedure
Procedure.s CountProcessorCores()
x=CountCPUs()
ProcedureReturn Str(x)
EndProcedure
Procedure.s GetProcessorArchitecture()
a$=GetEnvironmentVariable("PROCESSOR_ARCHITECTURE")
If a$=""
a$=ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PROCESSOR_ARCHITECTURE")
EndIf
If a$=""
a$="<Unbekannt>"
EndIf
ProcedureReturn a$
EndProcedure
Procedure.s GetProcessorIdentifier()
a$=GetEnvironmentVariable("PROCESSOR_IDENTIFIER")
If a$=""
a$=ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PROCESSOR_IDENTIFIER")
EndIf
If a$=""
a$="<Unbekannt>"
EndIf
ProcedureReturn a$
EndProcedure
Procedure.s GetProcessorLevel()
a$=GetEnvironmentVariable("PROCESSOR_LEVEL")
If a$=""
a$=ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PROCESSOR_LEVEL")
EndIf
If a$=""
a$="<Unbekannt>"
EndIf
ProcedureReturn a$
EndProcedure
Procedure.s GetProcessorRevision()
a$=GetEnvironmentVariable("PROCESSOR_REVISION")
If a$=""
a$=ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PROCESSOR_REVISION")
EndIf
If a$=""
a$="<Unbekannt>"
EndIf
ProcedureReturn a$
EndProcedure
Procedure.s GetGraphicCardName()
Protected device.DISPLAY_DEVICE
Protected settings.DEVMODE
device\cb = SizeOf(DISPLAY_DEVICE)
settings\dmSize = SizeOf(DEVMODE)
EnumDisplayDevices_(#Null,#Null,device,#Null)
a$=PeekS(@device\DeviceString)
If a$=""
a$=ReadRegKey(#HKEY_LOCAL_MACHINE,"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0001","DriverDesc")
If a$=""
a$="<Unbekannt>"
EndIf
EndIf
ProcedureReturn a$
EndProcedure
Procedure.i GetTotalInstalledMemory()
Protected Info.MEMORYSTATUS
Info\dwLength = SizeOf(MEMORYSTATUS)
GlobalMemoryStatus_(@Info)
ProcedureReturn Info\dwTotalPhys
EndProcedure
Procedure.i GetTotalFreeMemory()
Protected Info.MEMORYSTATUS
Info\dwLength = SizeOf(MEMORYSTATUS)
GlobalMemoryStatus_(@Info)
ProcedureReturn Info\dwAvailPhys
EndProcedure
Procedure.i GetTotalUsedMemory()
Protected Info.MEMORYSTATUS
Info\dwLength = SizeOf(MEMORYSTATUS)
GlobalMemoryStatus_(@Info)
ProcedureReturn Info\dwTotalPhys-Info\dwAvailPhys
EndProcedure
Procedure Show_SystemInformations()
Define VMem.f
a$=GetComputerName()
Window_0 = OpenWindow(#PB_Any, 420, 134, 640, 551, "Syseminformationen für "+a$, #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
If Window_0
fnt=LoadFont(#PB_Any,"verdana",10,#PB_Font_HighQuality)
SetGadgetFont(#PB_Default,FontID(fnt))
Button_1 = ButtonGadget(#PB_Any, 503, 508, 116, 30, "Schließen")
Container_0 = ContainerGadget(#PB_Any, 21, 19, 598, 477, #PB_Container_Raised)
Frame_1 = FrameGadget(#PB_Any, 21, 23, 551, 216, "CPU")
Text_1 = TextGadget(#PB_Any, 36, 41, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_2 = TextGadget(#PB_Any, 36, 68, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_3 = TextGadget(#PB_Any, 36, 95, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_4 = TextGadget(#PB_Any, 36, 122, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_5 = TextGadget(#PB_Any, 36, 149, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_6 = TextGadget(#PB_Any, 36, 176, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_7 = TextGadget(#PB_Any, 36, 203, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Frame_2 = FrameGadget(#PB_Any, 21, 250, 551, 78, "GPU")
Text_8 = TextGadget(#PB_Any, 36, 268, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_12 = TextGadget(#PB_Any, 36, 295, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Frame_3 = FrameGadget(#PB_Any, 21, 344, 551, 108, "Arbeitsspeicher (Physikalisch)")
Text_9 = TextGadget(#PB_Any, 36, 362, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_10 = TextGadget(#PB_Any, 36, 389, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_11 = TextGadget(#PB_Any, 36, 416, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
SetGadgetColor(Text_1, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_2, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_3, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_4, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_5, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_6, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_7, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_8, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_9, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_10, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_11, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_12, #PB_Gadget_BackColor, $cccccc)
SetGadgetText(Text_1, GetProcessorName())
SetGadgetText(Text_2, GetProcessorSpeed()+" Mhz")
SetGadgetText(Text_3, CountProcessorCores()+" Cores")
SetGadgetText(Text_4, "Architecture: "+GetProcessorArchitecture())
SetGadgetText(Text_5, "Revision: "+GetProcessorRevision())
SetGadgetText(Text_6, "Identifier: "+GetProcessorIdentifier())
SetGadgetText(Text_7, "Level: "+GetProcessorLevel())
SetGadgetText(Text_8, GetGraphicCardName())
x=GetTotalInstalledMemory()/1024/1024/1024
If (x/2)*2<>x : x+1 : EndIf
SetGadgetText(Text_9, "Gesamtspeicher: "+Str(x)+" GB")
x=GetTotalFreeMemory()/1024/1024/1024
SetGadgetText(Text_10, "Freier Speicher: "+Str(x)+" GB")
x=GetTotalUsedMemory()/1024/1024/1024
SetGadgetText(Text_11, "Belegter Speicher: "+Str(x)+" GB")
VMem = ValF(ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000","HardwareInformation.qwMemorySize",0))/1000000000
If VMem > 1
VMem = Round(VMem, #PB_Round_Down)
EndIf
SetGadgetText(Text_12, StrF(VMem) +" GB Video-Memory")
CloseGadgetList()
EndIf
Repeat
Event=WaitWindowEvent()
If Event=#PB_Event_Gadget
gad=EventGadget()
Else
gad=0
EndIf
If gad=Button_1
Break
EndIf
Until Event=#PB_Event_CloseWindow
EndProcedure
Show_SystemInformations()
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Re: Wie Grafikkarten Speicher ermitteln ?
Hallo STARGÅTE
Welcher hexadezimale Wert steht denn bei dir unter:
"#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000","HardwareInformation.qwMemorySize" ?
Welcher hexadezimale Wert steht denn bei dir unter:
"#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000","HardwareInformation.qwMemorySize" ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: Wie Grafikkarten Speicher ermitteln ?
Meine Grafikkarte hat Laut Herstellerseite 6 GB.
Mein Grafiktreiber zeigt mir 6128 MB an.
Der Registry-Eintrag gibt den Wert 6425673728 Byte durch 2^20 geteilt wirklich 6128 MB ergibt.
Wenn man aber noch mal durch 2^10 dividiert, kommt 5.984375 raus.
Um nun bei ein Abrunden zu vermeiden reicht es ja durch 1024.0 zu teilen, damit daraus 6 GB wird und nicht 5 GB.
Mein Grafiktreiber zeigt mir 6128 MB an.
Der Registry-Eintrag gibt den Wert 6425673728 Byte durch 2^20 geteilt wirklich 6128 MB ergibt.
Wenn man aber noch mal durch 2^10 dividiert, kommt 5.984375 raus.
Um nun bei ein Abrunden zu vermeiden reicht es ja durch 1024.0 zu teilen, damit daraus 6 GB wird und nicht 5 GB.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Wie Grafikkarten Speicher ermitteln ?
Zeigt komische werde an bei mir. Dann eher so; dann klappt das auch bei mir.TroaX hat geschrieben:
Code: Alles auswählen
VMem = ValF(ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000","HardwareInformation.qwMemorySize",0))/1024/1024
If VMem > 1
VMem = Round(VMem, #PB_Round_Down)
EndIf
SetGadgetText(Text_12, StrF(VMem/1024) +" GB Video-Memory")
Jetzt steht dort 0.5 GB. Also 512 MB ist also richtig soweit.
BTW:
Lasse ich die /1024 beim TextGadget weg, bekomme ich genau 512 (MB). Die berechnung stmmt also hargenau.
Zuletzt geändert von al90 am 03.07.2022 23:05, insgesamt 1-mal geändert.
Re: Wie Grafikkarten Speicher ermitteln ?
Ok!
Eigentlich müsste es ja dann auch 6 Gibibyte statt 6 Gigabyte heißen, oder?
Eigentlich müsste es ja dann auch 6 Gibibyte statt 6 Gigabyte heißen, oder?
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
- TroaX
- Beiträge: 662
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
- Wohnort: NRW
- Kontaktdaten:
Re: Wie Grafikkarten Speicher ermitteln ?
Ha ich habe doch noch ein System gefunden, das weniger VRAM hat. Mein neuer Lappi hat ja eine AMD APU. Und hier ist direkt eine Überraschung. Egal was ich mache zeigt er mir immer 0 an. Egal mit welchem Code hier. Denn die APU ist nicht im Schlüssel 0000, sondern unter 0001 hinterlegt. Selbst über die Registry ist das ganze nicht konsistent. Weder was die Zahlen angeht, noch wo die Daten in der Registry hinterlegt sind. Da müsste nach der ersten Abfrage überprüft werden, ob das Ergebnis größer 0 ist. Wenn nicht, muss er sich den Schlüssel 0001 noch einmal holen.
@al90: DIese Lösung ist die erste, die ich gepostet habe. Das Abrunden der If-Abfrage findet praktisch immer statt. Es sei denn jemand hat weniger als 1 MB VRAM. Dann kannste das auch weglassen und die letzten 1024 wieder in die erste Zeile hinter den anderen beiden einsetzen. Und Stargate hat wieder weniger als 6GB
----------
Ich weiß ja nicht, wie wichtig das ist. Aber ich würde es mit der einfachsten mir bekannten Methode machen. Mit dxdiag /x XML-Datei einfach über RunProgram eine XML Datei erstellen, diese mit der XML-Lib parsen lassen und mir da alle Infos herausholen. Da steht eigentlich alles drin. Auch die RAM Daten. Außerdem kannst du damit die Systeminfos puffern und musst diese nicht jedes mal neu aus dem System fischen.
EDIT: Oder man lässt die letzten 1024 weg und zeigt sie in MB an. Dann müsste es ja auch bei Stargate passen. So funktioniert es anscheinend jetzt bei mir:
@al90: DIese Lösung ist die erste, die ich gepostet habe. Das Abrunden der If-Abfrage findet praktisch immer statt. Es sei denn jemand hat weniger als 1 MB VRAM. Dann kannste das auch weglassen und die letzten 1024 wieder in die erste Zeile hinter den anderen beiden einsetzen. Und Stargate hat wieder weniger als 6GB
----------
Ich weiß ja nicht, wie wichtig das ist. Aber ich würde es mit der einfachsten mir bekannten Methode machen. Mit dxdiag /x XML-Datei einfach über RunProgram eine XML Datei erstellen, diese mit der XML-Lib parsen lassen und mir da alle Infos herausholen. Da steht eigentlich alles drin. Auch die RAM Daten. Außerdem kannst du damit die Systeminfos puffern und musst diese nicht jedes mal neu aus dem System fischen.
EDIT: Oder man lässt die letzten 1024 weg und zeigt sie in MB an. Dann müsste es ja auch bei Stargate passen. So funktioniert es anscheinend jetzt bei mir:
Code: Alles auswählen
Procedure.s ReadRegKey(OpenKey.i,SubKey.s,ValueName.s,Type.i=1)
hKey.i=0
DataSize.i=255
keyvalue$=""
mem=AllocateMemory(1024)
If mem
If RegOpenKeyEx_(OpenKey,SubKey,0,#KEY_READ,@hKey)
keyvalue$="Error"
Else
If RegQueryValueEx_(hKey,ValueName,0,0,mem,@DataSize)
keyvalue$="Error"
Else
If Type=0
keyvalue$=Str(PeekI(mem))
ElseIf Type=1
keyvalue$=PeekS(mem)
EndIf
EndIf
RegCloseKey_(hKey)
EndIf
FreeMemory(mem)
EndIf
ProcedureReturn keyvalue$
EndProcedure
Procedure.s GetComputerName()
a$=ComputerName()
ProcedureReturn a$
EndProcedure
Procedure.s GetProcessorName()
a$=CPUName()
ProcedureReturn a$
EndProcedure
Procedure.s GetProcessorSpeed()
a$=ReadRegKey(#HKEY_LOCAL_MACHINE,"HARDWARE\DESCRIPTION\System\CentralProcessor\0","~MHz",0)
If a$=""
a$="<Unbekannt>"
EndIf
ProcedureReturn a$
EndProcedure
Procedure.s CountProcessorCores()
x=CountCPUs()
ProcedureReturn Str(x)
EndProcedure
Procedure.s GetProcessorArchitecture()
a$=GetEnvironmentVariable("PROCESSOR_ARCHITECTURE")
If a$=""
a$=ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PROCESSOR_ARCHITECTURE")
EndIf
If a$=""
a$="<Unbekannt>"
EndIf
ProcedureReturn a$
EndProcedure
Procedure.s GetProcessorIdentifier()
a$=GetEnvironmentVariable("PROCESSOR_IDENTIFIER")
If a$=""
a$=ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PROCESSOR_IDENTIFIER")
EndIf
If a$=""
a$="<Unbekannt>"
EndIf
ProcedureReturn a$
EndProcedure
Procedure.s GetProcessorLevel()
a$=GetEnvironmentVariable("PROCESSOR_LEVEL")
If a$=""
a$=ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PROCESSOR_LEVEL")
EndIf
If a$=""
a$="<Unbekannt>"
EndIf
ProcedureReturn a$
EndProcedure
Procedure.s GetProcessorRevision()
a$=GetEnvironmentVariable("PROCESSOR_REVISION")
If a$=""
a$=ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","PROCESSOR_REVISION")
EndIf
If a$=""
a$="<Unbekannt>"
EndIf
ProcedureReturn a$
EndProcedure
Procedure.s GetGraphicCardName()
Protected device.DISPLAY_DEVICE
Protected settings.DEVMODE
device\cb = SizeOf(DISPLAY_DEVICE)
settings\dmSize = SizeOf(DEVMODE)
EnumDisplayDevices_(#Null,#Null,device,#Null)
a$=PeekS(@device\DeviceString)
If a$=""
a$=ReadRegKey(#HKEY_LOCAL_MACHINE,"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0001","DriverDesc")
If a$=""
a$="<Unbekannt>"
EndIf
EndIf
ProcedureReturn a$
EndProcedure
Procedure.i GetTotalInstalledMemory()
Protected Info.MEMORYSTATUS
Info\dwLength = SizeOf(MEMORYSTATUS)
GlobalMemoryStatus_(@Info)
ProcedureReturn Info\dwTotalPhys
EndProcedure
Procedure.i GetTotalFreeMemory()
Protected Info.MEMORYSTATUS
Info\dwLength = SizeOf(MEMORYSTATUS)
GlobalMemoryStatus_(@Info)
ProcedureReturn Info\dwAvailPhys
EndProcedure
Procedure.i GetTotalUsedMemory()
Protected Info.MEMORYSTATUS
Info\dwLength = SizeOf(MEMORYSTATUS)
GlobalMemoryStatus_(@Info)
ProcedureReturn Info\dwTotalPhys-Info\dwAvailPhys
EndProcedure
Procedure Show_SystemInformations()
a$=GetComputerName()
Window_0 = OpenWindow(#PB_Any, 420, 134, 640, 551, "Syseminformationen für "+a$, #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
If Window_0
fnt=LoadFont(#PB_Any,"verdana",10,#PB_Font_HighQuality)
SetGadgetFont(#PB_Default,FontID(fnt))
Button_1 = ButtonGadget(#PB_Any, 503, 508, 116, 30, "Schließen")
Container_0 = ContainerGadget(#PB_Any, 21, 19, 598, 477, #PB_Container_Raised)
Frame_1 = FrameGadget(#PB_Any, 21, 23, 551, 216, "CPU")
Text_1 = TextGadget(#PB_Any, 36, 41, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_2 = TextGadget(#PB_Any, 36, 68, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_3 = TextGadget(#PB_Any, 36, 95, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_4 = TextGadget(#PB_Any, 36, 122, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_5 = TextGadget(#PB_Any, 36, 149, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_6 = TextGadget(#PB_Any, 36, 176, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_7 = TextGadget(#PB_Any, 36, 203, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Frame_2 = FrameGadget(#PB_Any, 21, 250, 551, 78, "GPU")
Text_8 = TextGadget(#PB_Any, 36, 268, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_12 = TextGadget(#PB_Any, 36, 295, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Frame_3 = FrameGadget(#PB_Any, 21, 344, 551, 108, "Arbeitsspeicher (Physikalisch)")
Text_9 = TextGadget(#PB_Any, 36, 362, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_10 = TextGadget(#PB_Any, 36, 389, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_11 = TextGadget(#PB_Any, 36, 416, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
SetGadgetColor(Text_1, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_2, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_3, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_4, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_5, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_6, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_7, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_8, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_9, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_10, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_11, #PB_Gadget_BackColor, $cccccc)
SetGadgetColor(Text_12, #PB_Gadget_BackColor, $cccccc)
SetGadgetText(Text_1, GetProcessorName())
SetGadgetText(Text_2, GetProcessorSpeed()+" Mhz")
SetGadgetText(Text_3, CountProcessorCores()+" Cores")
SetGadgetText(Text_4, "Architecture: "+GetProcessorArchitecture())
SetGadgetText(Text_5, "Revision: "+GetProcessorRevision())
SetGadgetText(Text_6, "Identifier: "+GetProcessorIdentifier())
SetGadgetText(Text_7, "Level: "+GetProcessorLevel())
SetGadgetText(Text_8, GetGraphicCardName())
x=GetTotalInstalledMemory()/1024/1024
If (x/2)*2<>x : x+1 : EndIf
SetGadgetText(Text_9, "Gesamtspeicher: "+Str(x)+" MB")
x=GetTotalFreeMemory()/1024/1024
SetGadgetText(Text_10, "Freier Speicher: "+Str(x)+" MB")
x=GetTotalUsedMemory()/1024/1024
SetGadgetText(Text_11, "Belegter Speicher: "+Str(x)+" MB")
x = Val(ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000","HardwareInformation.qwMemorySize",0))/1024/1024
If x = 0
x = Val(ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0001","HardwareInformation.qwMemorySize",0))/1024/1024
EndIf
SetGadgetText(Text_12, Str(x) +" MB Video-Memory")
CloseGadgetList()
EndIf
Repeat
Event=WaitWindowEvent()
If Event=#PB_Event_Gadget
gad=EventGadget()
Else
gad=0
EndIf
If gad=Button_1
Break
EndIf
Until Event=#PB_Event_CloseWindow
EndProcedure
Show_SystemInformations()
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Re: Wie Grafikkarten Speicher ermitteln ?
TroaX hat geschrieben:
Ja so Funktioniert es jetzt bei mir auch.
Werde mir das mal morgen genauer ansehen. Ist heute was spät geworden für mich.
/1024 werde ich aber wohl noch rein machen. Finde die anzeige in GB halt einfach übersichtlicher.
Alternativ könnte man aber auch noch eine CheckBox einbauen wo man zwichen MB & GB switchen kann.
Zumindes bei der GraKa sähe das mit 512 MB besser aus als 0.5 GB