| |
|
|
- Seite 1 - |
|
Gary12345 | Servus, KompilierenMarkierenSeparierenWindow %MaxX*0.1,%Maxy*0.1-%MaxX*0.3,%MaxX*0.3
WindowTitle "Updatechecker"
WindowStyle 31
declare Ende&,Diskgröße!
Proc DiskGröße
Parameters Laufwerkbuchstabe$'String
set("decimals",2)
Diskgröße!=DiskSize(Laufwerkbuchstabe$)/(1024*1024*1024) + " GB"
ROUND(Diskgröße!,3)
If Diskgröße!=0
print %Error
MESSAGEBOX("Laufwerk nicht vorhanden oder nicht lesbar!","Error X0001",0)
Else
Return Diskgröße!
EndIf
EndProc
'#################################
'APPENDMENU
PopUp "&Programm"
AppendMenu 101, "Updatestatus ermitteln"
AppendMenu 102, "Festplattenstatus ermitteln"
AppendMenu 103, "AutoStartLister"
AppendMenu 104, "Aktuelle Updates"
PopUp "&Sonstiges"
SubPopUp "Sonstiges"
AppendMenu 105, "Über den Autor"
AppendMenu 106, "Über das Programm"
AppendMenu 107, "Spende"
EndSub
AppendMenu 108, "Beenden"
'################################
print %Error
DiskGröße("C:")
print %Error
Whilenot Ende&=1
EndWhile
Was geht da schief? Blöde Frage, aber ich weiß nicht weiter. Könnte evtl. ein Sammelthread werden, da dies ein größeres Projekt ist.
Danke! |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
Gary12345 | KompilierenMarkierenSeparierenWindow %MaxX*0.1,%Maxy*0.1-%MaxX*0.3,%MaxX*0.3
WindowTitle "Updatechecker"
WindowStyle 31
declare Ende&,Diskgröße&,Memstat#
Proc DiskGroeße
Parameters Laufwerkbuchstabe$'String
set("decimals",2)
Diskgröße&=DiskSize(Laufwerkbuchstabe$)/(1024*1024*1024)
If Diskgröße&=0
MESSAGEBOX("Laufwerk nicht vorhanden oder nicht lesbar!","Error X0001",0)'Error X0001= Laufwerk nicht vorhanden oder nicht lesbar!
Else
Return ROUND(Diskgröße&,3)
EndIf
EndProc
Proc ShowMemoryStatus
Def GlobalMemoryStatus(1) !"KERNEL32","GlobalMemoryStatus"
Def Mbyte(1) Round(1/$0100000,0)
Dim MemStat#,32
Long MemStat#,0=32
GlobalMemoryStatus(MemStat#)
Print Str$(Long(MemStat#,4))+"% Speicherauslastung"
Print MByte(Long(MemStat#,8))+"MB gesamter physik. Speicher"
Print MByte(Long(MemStat#,12))+"MB physik. Speicher frei"
Print MByte(Long(MemStat#,16))+"MB max. Größe der Swapdatei"
Print MByte(Long(MemStat#,20 ))+"MB max. in Swapdatei belegbar"
Print MByte(Long(MemStat#,24))+"MB max. virtueller Speicher für Prozess"
Print MByte(Long(MemStat#,28))+"MB max. virtueller Speicher für Prozess aktuell verfügbar"
Dispose MemStat#
EndProc
'#################################
'APPENDMENU
PopUp "&Programm"
AppendMenu 101, "Updatestatus ermitteln"
AppendMenu 102, "Festplattenstatus ermitteln"
AppendMenu 103, "AutoStartLister"
AppendMenu 104, "Aktuelle Updates"
PopUp "&Sonstiges"
SubPopUp "Sonstiges"
AppendMenu 105, "Über den Autor"
AppendMenu 106, "Über das Programm"
AppendMenu 107, "Spende"
EndSub
AppendMenu 108, "Beenden"
'################################
print DiskGroeße("C:\\")
ShowMemoryStatus
Whilenot Ende&=1
EndWhile
Geht das bei jemandem? Bei mir liefert es überall 0MB aus? |
|
|
| |
|
|
|
| Bei mir kommt dies raus:
|
|
|
| |
|
|
|
Gary12345 | Aber diese 0MB sind doch nicht normal? Oder ist da was falsch? |
|
|
| |
|
|
|
Julian Schmidt | Scheint irgendwie mit x64 und x86 zusammenzuhängen. Schaut mal [...] . Auch die Kommentare lesen. |
|
|
| |
|
|
|
Gary12345 | Das bedeutet, dass es auf 64bit Systeme mit max. 4GB läuft oder nur auf 32bit systeme? Bin dem Englischen mit meinen 15 nicht übermächtig, bwohl ich komischerweise eine englische Ausbildung habe xD
Win XP 32bit mit 2GB Ram geht auch nicht. |
|
|
| |
|
|
|
Julian Schmidt | hmmm...sind hier doch noch ein paar in meiner Alterklasse unterwegs. Bin 16. :O :O Müsste sowohl auf 64Bit-Systemen mit weniger bzw. gleich 4 GB RAM oder 32Bit-Systemen funzen, solange die Quelle stimmt ^^ |
|
|
| |
|
|
|
Gary12345 | 32bit funzt nicht. 64bit habe ich keinen Testpc da,da mein PC mehr als 4GB Ram hat . Das Komische ist ja, dass ich einer der wenigen bin, der sich nur für Malware interessiert und da auch eine Ausbildung macht.(Und auch nur gegen Malware Tools schreiben will - 0 Interesse für Spiele - ok sometimes zocke ich mal FIfa, aber nicht oft) Wenn Du Probleme hast, kannste Dich immer melden . Nun aber zurück zum Ernst der Sache, wat geht da schief? |
|
|
| |
|
|
|
Julian Schmidt | Habs mal schnell in ner VM probiert. WinXP x86 mit 3300MB Ram.
Auf meinen Rechner mit Win8 x64 mit 16GB Ram kommen auch nur 0MB. |
|
|
| |
|
|
|
Gary12345 | Unsichere API. Gibt es da eine sichere Lösung?
Paar Tips von Bekannten bekommen: 64 bit = GlobalMemoryStatusEx 32bit = ? |
|
|
| |
|
|
|
Julian Schmidt | Steht in den oben geposteten Link in PseudoCode
if comp64 then begin GlobalMemoryStatusex .... end else begin GlobalMemoryStatus .... end; |
|
|
| |
|
|
|
Gary12345 | Alles viel zu kompliziert. Werde es mal vorübergehen so belassen. |
|
|
| |
|
|
|
Andreas Miethe
| Wenn ich mich mal einmischen darf.
Der Fehler beim Aufruf von GlobalMemoryStatus oder GlobalMemoryStatusEx liegt in der Strukturgrösse. Hier werden teilweise 64Bit-Integer erwartet. Die Strukturgrösse stimmt also nicht überberein. Hier mal ein altes Bespiel, das zeigt wie es richtig geht, egal wieviel Arbeitsspeicher installiert ist, 32-Bit oder 64-Bit Betriebssystem. KompilierenMarkierenSeparierenStruct MEMORYSTATUSEX = \
dwLength&,\
dwMemoryLoad&,\
ullTotalPhysLow&,\
ullTotalPhysHi&,\
ullAvailPhysLow&,\
ullAvailPhysHi&,\
ullTotalPageFileLow&,\
ullTotalPageFileHi&,\
ullAvailPageFileLow&,\
ullAvailPageFileHi&,\
ullTotalVirtualLow&,\
ullTotalVirtualHi&,\
ullAvailVirtualLow&,\
ullAvailVirtualHi&,\
ullAvailExtendedVirtualLow&,\
ullAvailExtendedVirtualHi&
Var Memory# = New(MEMORYSTATUSEX)
Memory#.dwLength& = SizeOf(Memory#)
External("Kernel32.dll","GlobalMemoryStatusEx",Memory#)
Var TotalMem! = 0
Var AvailMem! = 0
Var PagefileMem! = 0
Var APagefileMem! = 0
cls
Totalmem! = Memory#.ullTotalPhysLow&
case Memory#.ullTotalPhysLow& < 0: TotalMem! = Memory#.ullTotalPhysLow& + (2^32)
TotalMem! = (Memory#.ullTotalPhysHi& * (2^32)) + TotalMem!
Availmem! = Memory#.ullAvailPhysLow&
case Memory#.ullAvailPhysLow& < 0: AvailMem! = Memory#.ullAvailPhysLow& + (2^32)
AvailMem! = (Memory#.ullAvailPhysHi& * (2^32)) + AvailMem!
PagefileMem! = Memory#.ullTotalPageFileLow&
case Memory#.ullTotalPageFileLow& < 0: PageFileMem! = Memory#.ullTotalPageFileLow& + (2^32)
PageFileMem! = (Memory#.ullTotalPageFileHi& * (2^32)) + PageFileMem!
APagefileMem! = Memory#.ullAvailPageFileLow&
case Memory#.ullAvailPageFileLow& < 0: APageFileMem! = Memory#.ullAvailPageFileLow& + (2^32)
APageFileMem! = (Memory#.ullAvailPageFileHi& * (2^32)) + APageFileMem!
Print Format$("#####.00 MB total zur Verfügung stehender Arbeitsspeicher",(TotalMem!) / 1024^2)
Print Format$("#####.00 MB momentan zur Verfügung stehender Arbeitsspeicher",(AvailMem!) / 1024^2)
Print Format$("#####.00 MB benutzter Arbeitsspeicher",(TotalMem!-AvailMem!) / 1024^2)
Print Format$("#####.00 MB Auslagerungsdatei total",PageFileMem! / 1024^2)
Print Format$("#####.00 MB Auslagerungsdatei frei",APageFileMem! / 1024^2)
Print Format$("#####.00 MB Auslagerungsdatei benutzt",(PageFileMem!-APageFileMem!) / 1024^2)
Print Format$("##### % benutzter Speicher",(Memory#.dwMemoryLoad&))
Waitinput
end
|
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 18.02.2013 ▲ |
|
|
|