Wie der Titel schon sagt suche ich nach einer lösung die Größe des Arbeitsspeichers zu ermitteln.
In der Registry bin ich leider nicht fündig geworden. Bin für jeden Tipp Dankbar

Ciao
AL90
Code: Alles auswählen
; wmic PATH win32_videocontroller GET description
; wmic PATH win32_videocontroller GET adapterram
; wmic PATH win32_videocontroller GET driverversion
; wmic PATH win32_videocontroller GET pnpdeviceid
Define.i GPUInfo
GPUInfo = RunProgram("wmic", "PATH win32_VideoController GET adapterram", "", #PB_Program_Open | #PB_Program_Read)
Output$ = ""
If GPUInfo
While ProgramRunning(GPUInfo)
If AvailableProgramOutput(GPUInfo)
Output$ + ReadProgramString(GPUInfo, #PB_Unicode) + Chr(13)
EndIf
Wend
Output$ + Chr(13) + Chr(13)
Output$ + "Exitcode: " + Str(ProgramExitCode(GPUInfo))
CloseProgram(GPUInfo)
EndIf
;VRAM in Mb
Debug StringField(Output$, 1, Chr(13))
Debug (Val(StringField(Output$, 2, Chr(13))) / 1024)/1024
Meine Grafikkarte hat 6 GB.AdapterRAM
4095
Note: Win32_VideoController's UInt32 property AdapterRAM cannot return values exceeding 4GB.
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,"SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000","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, 56, "GPU")
Text_8 = TextGadget(#PB_Any, 36, 268, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Frame_3 = FrameGadget(#PB_Any, 21, 317, 551, 124, "Arbeitsspeicher (Physikalisch)")
Text_9 = TextGadget(#PB_Any, 36, 335, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_10 = TextGadget(#PB_Any, 36, 362, 522, 25, "", #PB_Text_Border|#PB_Text_Center)
Text_11 = TextGadget(#PB_Any, 36, 389, 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)
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")
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()
Code: Alles auswählen
;Tested under Windows 11 -Version 21H2 (Build 22000.675)
Define.i GPUInfo
GPUInfo = RunProgram("reg", "query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0001 /v HardwareInformation.qwMemorySize", "", #PB_Program_Open | #PB_Program_Read)
Output$ = ""
If GPUInfo
While ProgramRunning(GPUInfo)
If AvailableProgramOutput(GPUInfo)
Output$ + ReadProgramString(GPUInfo, #PB_Ascii) + Chr(13)
EndIf
Wend
Output$ + Chr(13) + Chr(13)
Output$ + "Exitcode: " + Str(ProgramExitCode(GPUInfo))
CloseProgram(GPUInfo)
EndIf
;Debug Output$
field$ = StringField(Output$, 3, Chr(13))
field2$ = StringField(field$, 13, Chr(32))
VMem.q = Val("$"+RemoveString(field2$, "0x"))
;VRam in Mb
Debug ((VMem / 1024) / 1024)
Code: Alles auswählen
Str(Val(ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000","HardwareInformation.qwMemorySize",0))/1024/1024/1024)
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/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")
SetGadgetText(Text_12, Str(Val(ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000","HardwareInformation.qwMemorySize",0))/1024/1024/1024) +" 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()