Avatar billede jonbdk Nybegynder
06. maj 2003 - 22:24 Der er 6 kommentarer og
1 løsning

Overvågning af hardware

Jeg vil gerne lave et program der kan overvåge hardwaren. Dvs. få cpuload og ram forbrug - sådan lidt ligesom task manager, winbar eller lign.
Jeg kiggede i WIN API - men jeg synes ikke jeg kan se nogen / finde hvilke metoder der kan bruges til dette - i hvert fald ikke under dotnet
Er der nogen der har ideer??
Avatar billede simon.ulsnes Nybegynder
06. maj 2003 - 22:27 #1
Du har ret i at du skal have fat i Win32 API, men næppe under .NET...

Jeg ved ikke præcis hvor, men jeg ville gætte på at de funktioner du skal bruge findes i kernel32.dll.

- Simon
Avatar billede jonbdk Nybegynder
06. maj 2003 - 22:30 #2
Det prøver jeg at kigge på
Avatar billede sneaky Nybegynder
07. maj 2003 - 14:06 #3
Du skal hellere kigge på .nets indbyggede Performance Counters :-)

Win32 api'et er lækkert, men noget besværligt at kode op imod.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vboriperformancecounterwalkthroughs.asp

Hvis/når du får mere specifikke spørgsmål burde der også være hjælp at hente :-)

Mvh Alex
Avatar billede jonbdk Nybegynder
12. maj 2003 - 08:56 #4
>> sneaky: Det ser helt rigtigt ud. Og der er helt sikkert fuldt point for det - kan du evt. give mig et eksempel.
F.eks. en der henter fri ram eller noget. Jeg har lavet eksemplet fra msdn, men jeg kan ikke helt præcis se, hvordan jeg skal gøre det.
Avatar billede sneaky Nybegynder
12. maj 2003 - 09:44 #5
Koden herunder er klippet ud af et windows forms projekt. Det nemmeste er klart at benytte visual designeren til at tilføje performancecounters, da du kan få listet de mulige kategorier på en nem måde (en kategori kunne være ram, netværk whutever)...

Jeg har gjort det _lidt_ sværere for dig ved at have en timer, som opdaterer en label med hvor meget ram der nu er til rådighed ;-)

private System.Windows.Forms.Timer timer1;
private System.Diagnostics.PerformanceCounter performanceCounter1;
       
public Form1()
{
  InitializeComponent();

//
// performanceCounter1
//
this.performanceCounter1 = new
                          System.Diagnostics.PerformanceCounter();
this.performanceCounter1.CategoryName = "Memory";
this.performanceCounter1.CounterName = "Available MBytes";                   
timer1 = new System.Windows.Forms.Timer();
timer1.Interval = 250;
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Start();           
}

private void timer1_Tick(object Sender, EventArgs e) 
{
  lblFreeRam.Text=performanceCounter1.NextValue().ToString();
}
Avatar billede jonbdk Nybegynder
12. maj 2003 - 10:06 #6
Jeg har udvidet MS's løsning lidt - så man får info om den valgte counter.
Hent den her: http://www.22757575.dk/dev/PerformanceCounters.zip
Avatar billede jonbdk Nybegynder
12. maj 2003 - 13:24 #7
Jeg synes ikke alle metoder er lige lette at overskue - feks, hvordan får man totalt ram eller brugt ram.
Hvordan bruger man ProcessorPerformance.percentage - jeg får den ikke til at give noget output...
Men resten af metoderne er bare hjemme
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester