26. oktober 2000 - 21:41Der er
5 kommentarer og 1 løsning
vise uptime på computeren
Jeg har brug for en funktion der kan returnere hvor langt tid en computer har været online. I programmet mIRC fx. kan man få oppetiden at vide ved at fyre en kommando afsted. Det den gør må delhi da også kunne. Nogen der kan hjælpe mig ?
Oppetiden i mIRC er ikke hvor lang tid du har været connected til Internettet, men derimod hvor lang tid du har været connected til IRC Serveren.
Det burde ikke være så svært >>
Unit unit1;
Tform1 = class(Tform) procedure Create(sender: Tobject); procedure Button1click(sender: Tobject); private public //tilføj følgende til din unit Onlinestart, fday, fhour,fmin,fsec,Ftotal: integer; Function online:string; Function Duration(ms: integer):string; end;
function Tform1.Duration(ms: integer):string; var temp: string; begin Fday:=0; Fhour:=0; Fmin:=0; Fsec:=0; FTotal:=0; temp:=\'\'; FDay := ms div cDay; Ftotal:=ms mod cday; FHour := Ftotal div cHour; Ftotal:=Ftotal mod chour; FMin := Ftotal div cMin; Ftotal:=Ftotal mod cmin; FSec := Ftotal div cSec; if Fday <> 0 then temp := temp + inttostr(Fday)+\'days \'; if Fhour <> 0 then temp := temp + inttostr(Fhour)+\'hours \'; if Fmin <> 0 then temp := temp + inttostr(Fmin)+\'mins \'; if Fmin <> 0 then temp := temp + inttostr(Fsec)+\'secs \'; result:=temp; end;
procedure Tform1.Create(sender: Tobject); begin Onlinestart:=Gettickcount; end;
Function Tform1.online:string; var temp: string; begin temp:=Gettickcount - onlinestart; result:=duration(temp); end;
procedure Tform1.Button1click(sender: Tobject); begin Showmessage(\'Du har været online i: \'+online); end;
------------------------------- Der tages forbehold for mindre fejl da koden ikke er testet. Men du skulle kunne indsætte det meste af det i dit project og så burde det virke.
(hvis du vil have den fulde onlinetid så skal du lave et serviceprogram der starter op sammen med windows og sætter OnlineStart variablen når den detekter en Internet forbindelse (kan klares med en RAS component eller ved at kigge lidt på hvordan RAS virker, der følger hjælp til dette med Delphi))
Hvis du vil se hvor lang tid Windows har været startet på maskinen (UPTIME) kan du gøre dette således >>
//Benyt ovenstående kode og tilføj en function der ser sådan ud:
Function Tform1.Uptime:string; begin result:=duration(gettickcount); end;
procedure Tform1.Button2click(sender: Tobject); begin Showmessage(\'Serveren har kørt i: \'+uptime); end;
------------------------------ Håber dette hjalp lidt :)
Tak, du besvarede mit spørgsmål med det sidste svar du gav. Jeg mente nemlig oppetid med generelt, altså ikke kun online, men også tændt. Forresten så kan altså godt mIRC fortælle tiden fra man har tændt computeren til \"nu\": /say [Win $+ $os system uptime: $duration($calc($ticks / 1000)) $+ ]
\"The GetTickCount function retrieves the number of milliseconds that have elapsed since the system was started. It is limited to the resolution of the system timer. \"
Hvilket vil sige at i GetTickCount() ligger tiden siden sidste boot af dit OS. I øvrigt er der der problem med GetTickCount() at den lageres i en DWORD og derfor hurtigt løbet over ...
En ander indgangs vinkel ville være at spørge CPU\'en efter hvornår der blev sat power på den .... Ikke hvornår maskinen sidst var bootet ..
borrisholt >> Du har ret, men der er jo måder at komme uden om det på, desuden spurgte han med mIRC som eksempel der selv anvender GetTickCount() til at vise Uptime og Onlinetime.
Desuden er den heller ikke så avanceret at arbejde med som din CPU forespørgsel, men vis du ligger inde med koden vil jeg da gerne se den, det kan jo være jeg kunne få brug for den i andre sammenhænge :)
Borrisholt > hmm, hvis du er villig til at uddybe hvordan man kan arbejde udenom gettickcount\'s overløbsproblem vil jeg da gerne oprette et spørgsmål dedikeret til det :)
Laver noget server-software som gerne skulle måle tiden præcist og over lang tid..
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.