pack die visualisierungssachen in einen thread
like so
Code: Alles auswählen
Global Totalram.l, Freeram.l
Procedure.f FreeRAM()
Info.MEMORYSTATUS
Info\dwLength = SizeOf(MEMORYSTATUS)
GlobalMemoryStatus_(@Info)
Totalram = Info\dwTotalPhys
ProcedureReturn (100 / Totalram) * Freeram
EndProcedure
Structure int64
Long1.l
Long2.l
EndStructure
OpenFile(1,"config.inf")
drive$ = ReadString()
SetErrorMode_(#SEM_FAILCRITICALERRORS)
;Position des Fensters?
posx.w=Val(ReadString())
posy.w=Val(ReadString())
;On-Top?
ontop.b=Val(ReadString())
;Version?
version$=ReadString()
;Ping-URL?
pingurl$=ReadString()
;Ping anzeigen?
config_execping.b=Val(ReadString())
CloseFile(1)
OpenWindow(1,posx,posy,1024,30,#PB_Window_BorderLess, "PC-Stats v"+version$+"")
If ontop=1
MakeStayOnTop(WindowID(1),#True)
EndIf
CreatePopupMenu(0)
MenuItem(1,"Info")
MenuItem(2,"Optionen")
CreateGadgetList(WindowID())
ButtonGadget(1,980,1,40,28,"Quit")
TextGadget(2,2,1,30,28,"Free Ram:")
TextGadget(3,141,1,60,28,"")
TextGadget(4,202,1,30,28,"Free HDD:")
TextGadget(5,332,1,70,28,"")
StringGadget(6, 920, 6, 50, 18, "", #PB_String_ReadOnly)
TextGadget(7,430,1,33,28,"CPU- Usage:")
TextGadget(8,700,6,70,28,"Ping: "+Str(ping))
LoadFont(1,"Arial",18)
UseFont(1)
If config_execping=1
If InternetAttemptConnect_(pingurl$) = #ERROR_SUCCESS
execping=1
Else
execping=0
EndIf
EndIf
execcpu=1
exechdd=1
Procedure anzeige()
Repeat
;RAM ausrechnen
freerampro.w=FreeRAM()
;HDD ausrechnen
If exechdd=1
GetDiskFreeSpaceEx_(@drive$, BytesFreeToCaller.int64, TotalBytes.int64, TotalFreeBytes.int64)
SetErrorMode_(0)
TotalMB = ((TotalBytes\Long1 >> 20) & $FFF) | (TotalBytes\Long2 << 12)
FreeMB = ((TotalFreeBytes\Long1 >> 20) & $FFF) | (TotalFreeBytes\Long2 << 12)
FreeHDProzent.f=(100/TotalMB)*FreeMB
EndIf
exechdd+1
If exechdd=3
exechdd=1
EndIf
;CPU ausrechnen
If execcpu=1
CpuUsage=CpuUsage()
EndIf
execcpu+1
If execcpu=3
execcpu=1
EndIf
;PING ausrechnen
If config_execping=1
If execping=1
If Random(5)=2
starttime=GetTickCount_()
If InternetCheckConnection_(pingurl$, 1, 0) ! 0
ping=GetTickCount_()-starttime
Else
starttime=0
EndIf
EndIf
EndIf
EndIf
;RAM darstellen
StartDrawing(WindowOutput())
DrawingFont(FontID())
DrawingMode(1)
Box(40,1,100,26,RGB(0,0,0))
Box(140,1,-100+freerampro,26,RGB(freerampro*2,250,0))
Locate(70,1)
FrontColor(150,150,150)
DrawText(Str(freerampro)+"%")
;HDD darstellen
Box(230,1,100,26,RGB(0,0,0))
Box(330,1,-100+FreeHDProzent,26,RGB(FreeHDProzent*2,250,0))
Locate(260,1)
FrontColor(150,150,150)
DrawText(Str(FreeHDProzent)+"%")
;CPU darstellen
Box(470,1,100,26,RGB(0,0,0))
Box(470,1,CpuUsage,26,RGB(0,250,0))
Locate(500,1)
FrontColor(150,150,150)
DrawText(Str(CpuUsage)+"%")
;PING darstellen
If ping>0
Circle(690,12,3,RGB(ping,255,0))
Else
Circle(690,12,3,RGB(0,0,0))
EndIf
StopDrawing()
;Rest darstellen, bla
SetGadgetText(3,Str(Freeram/(1024*1024))+" MB / "+Str(Totalram/(1024*1024))+" MB")
SetGadgetText(5,Str(FreeMB)+" MB / "+Str(TotalMB)+" MB")
SetGadgetText(8,"Ping: "+Str(ping))
;ZEIT darstellen
SetGadgetText(6, FormatDate("%hh:%ii:%ss", Date()))
Delay(100)
ForEver
EndProcedure
CreateThread(@anzeige(),0)
;Popup-Menü managen
Repeat
Select WaitWindowEvent()
Case #WM_RBUTTONDOWN
Debug "rechter Mausknopf"
DisplayPopupMenu(0,WindowID())
Case #PB_EventMenu
Select EventMenuID()
Case 1 : Debug "Menu: Info"
Case 2 : Debug "Menu: Options"
EndSelect
EndSelect
Sleep_(0)
Until EventGadgetID()=1