Forum | | | | - 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 | 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 ▲ |
| |
| | | | - Seite 3 - |
| | Gary12345 | | | | | |
| | Gary12345 | KompilierenMarkierenSeparierenWindow %MaxX*0.1,%Maxy*0.1-%MaxX*0.3,%MaxX*0.3
WindowTitle "Updatechecker"
WindowStyle 31
declare Ende&,Diskgröße&,Memstat#,IEVers$,Skype$,FireFox$,FlashPlayer$, Opera$,OperaVersion$,Chrome$,ChromeVersion$,datei1$
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 MemoryStatus
Struct 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$("#####0.# MB total zur Verfügung stehender Arbeitsspeicher",(TotalMem!) / 1024^2)
Print Format$("#####0.# MB momentan zur Verfügung stehender Arbeitsspeicher",(AvailMem!) / 1024^2)
Print Format$("#####0.# MB benutzter Arbeitsspeicher",(TotalMem!-AvailMem!) / 1024^2)
Print Format$("#####0.# MB Auslagerungsdatei total",PageFileMem! / 1024^2)
Print Format$("#####0.# MB Auslagerungsdatei frei",APageFileMem! / 1024^2)
Print Format$("#####0.# MB Auslagerungsdatei benutzt",(PageFileMem!-APageFileMem!) / 1024^2)
Print Format$("#####0 % benutzter Speicher",(Memory#.dwMemoryLoad&))
EndProc
'###################################################
'Updatestatus ermitteln
Set("Errorlevel", -1)
IEVers$ = ReadINI$("HKEY_2","SOFTWARE\Microsoft\Internet Explorer","Version")
Skype$ = ReadINI$("HKEY_1","Software\Skype\Phone\UI","StatsSentVersion")
FireFox$ = ReadINI$("HKEY_2","Software\Mozilla\Mozilla Firefox", "CurrentVersion")
FlashPlayer$ = ReadIni$("HKEY_2","SOFTWARE\Macromedia\FlashPlayer","CurrentVersion")
Opera$ = ReadINI$("HKEY_1","Software\Opera Software","Last Install Path") + "opera.exe"
OperaVersion$ = Resource.HoleResourceInfo(Opera$, "ProductVersion")
Chrome$ = ReadIni$("HKEY_1","SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Google Chrome","InstallLocation") + "\Chrome.exe"
ChromeVersion$ = Resource.HoleResourceInfo(Chrome$, "ProductVersion")
Set("Errorlevel", 0)
datei1$=$TempDir + "Updatestatus.txt"
'#################################
'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"
'################################
'################################
'Erstellung des Fensters
CLS rgb(150,250,350)
var button1&=CREATE("Button",%HWND,"Updatestatus ermitteln",110,10,190,50):CREATE("Tooltip",%HWND,button1&,"Ermittelt den zurzeitigen Updatestatus")
var button2&=CREATE("Button",%HWND,"Festplattenstatus ermitteln",110,80,190,50):CREATE("Tooltip",%HWND,button2&,"Ermittelt den aktuellen Festplatten- und Arbeitsspeicherstatus")
var button3&=CREATE("Button",%HWND,"AutoStartLister",110,150,190,50):CREATE("Tooltip",%HWND,button3&,"Listet alle vorhandenen Autostarts auf")
var button4&=CREATE("Button",%HWND,"Aktuelle Updates",110,220,190,50):CREATE("Tooltip",%HWND,button4&,"Zeigt Dir die aktuellen Updates")
var button5&=CREATE("Button",%HWND,"Schließen",110,290,190,50):CREATE("Tooltip",%HWND,button5&,"Beendet das Programm")
Memorystatus
Whilenot Ende&=1
WaitInput
If clicked(button1&)
If FileExists(datei1$)
Assign #1, datei1$
Rewrite #1
Print #1, "Test"
Close #1
ShellExec(datei1$,"open",1)
Else
print %Error
MESSAGEBOX("Datei nicht vorhanden oder beschädigt!","Error X0002",0)
Ende&=1
EndIf
EndIf
If clicked(button5&) OR MenuItem(108)
MESSAGEBOX("Das Programm wird jetzt beendet","INFO",0)
Ende&=1
EndIf
EndWhile
So - kommt bei euch auch Fehlermeldung wenn ihr button1& anklicken wollt? Wenn ja, warum? Ich glaub mein Hirn arbeitet zu dieser Zeit nit mehr so wie es sollte |
| | | | |
| | E.T. |
...Wenn ja, warum?...
... na weil du es so programmiert hast |
| | | XProfan X2Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 18.02.2013 ▲ |
| |
| | Gary12345 | Fehler schon längst gefunden. Bin jetzt viel weiter. Jetzt kommt der schwierigste Part. |
| | | | |
|
AntwortenThemenoptionen | 20.191 Betrachtungen |
ThemeninformationenDieses Thema hat 6 Teilnehmer: |