Verfasst: 15.09.2004 12:40
Da zappelt viel zu viel rum
pack die visualisierungssachen in einen thread
like so
weiß aber nicht ob das im weiteren Programmverlauf Auswirkungen hat auf die im Thread benutzten Strings. ..siehe dazu (string und thread) in der hilfe oder im ollen Forum
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