[Win32/C] CPU gebruik tonen?

Pagina: 1
Acties:
  • 59 views sinds 30-01-2008

  • RedShift
  • Registratie: Augustus 2003
  • Laatst online: 18-05 09:24
Hoe kan ik in C++ of C tonen hoeveel men CPU gebruikt word? (Zoals bv. in task manager, xx%)

Het is namelijk voor een Command line utility die het processorgebruik toont. Welke functie kan ik hiervoor aanroepen?

(Onder windows)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Daar is geen standaardfunctie voor. Echter, als je sinds een maand of 2 stomtoevallig in het bezit bent van de sources van TaskManager kun je daarin wel opzoeken hoe het met een hidden functie uit ntdll.dll kan.

Met WMI en Performance Counters kan het overigens veel beter, maar da's weer enorm omslachtig :)

Professionele website nodig?


  • RedShift
  • Registratie: Augustus 2003
  • Laatst online: 18-05 09:24
Ah, wel hoe 'include' ik ntdll.dl? Hoe gebruik ik zijn functies? (Ben namelijk nog maar pas begonnen met C++

  • Exirion
  • Registratie: Februari 2000
  • Laatst online: 08:25

Exirion

Gadgetfetisjist

curry684 schreef op 05 april 2004 @ 14:41:
Daar is geen standaardfunctie voor.
Al was die er wel, dan was het een Windows API functie en dat staat op zich los van de gebruikte taal.

"Logica brengt je van A naar B, verbeelding brengt je overal." - Albert Einstein


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

RedShift schreef op 05 april 2004 @ 14:42:
Ah, wel hoe 'include' ik ntdll.dl? Hoe gebruik ik zijn functies? (Ben namelijk nog maar pas begonnen met C++
Zoeken bij MSDN Library Online naar LoadLibrary en GetProcAddress.

Professionele website nodig?


Verwijderd

curry684 schreef op 05 april 2004 @ 14:41:
Echter, als je sinds een maand of 2 stomtoevallig in het bezit bent van de sources van TaskManager kun je daarin wel opzoeken hoe het met een hidden functie uit ntdll.dll kan.
Whahaha :X

Verder:

http://msdn.microsoft.com...base/performance_data.asp
RedShift schreef op 05 april 2004 @ 14:42:
Ah, wel hoe 'include' ik ntdll.dl? Hoe gebruik ik zijn functies? (Ben namelijk nog maar pas begonnen met C++
Dan zou ik eerst wat standaard dingen beginnen te leren voor dat je met die sdk loos gaat.. maarja suc6

  • RedShift
  • Registratie: Augustus 2003
  • Laatst online: 18-05 09:24
Met andere woorden, dit gaat niet simpel worden. Enige voorgekauwde code? :Y)

  • Icelus
  • Registratie: Januari 2004
  • Niet online
How to get CPU usage by performance counters (without PDH)

http://www.codeproject.com/system/cpuusage.asp

Developer Accused Of Unreadable Code Refuses To Comment


  • RedShift
  • Registratie: Augustus 2003
  • Laatst online: 18-05 09:24
Icelus schreef op 05 april 2004 @ 14:53:
How to get CPU usage by performance counters (without PDH)

http://www.codeproject.com/system/cpuusage.asp
Die site werkt hier niet? :( ;(

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Het was serieus, da's namelijk het eerste wat ik uitgezocht heb zodra ik in een fleeting moment een blik op die sourcecode kon werken bij iemand die hem toevallig in bezit had :)
RedShift schreef op 05 april 2004 @ 14:52:
Met andere woorden, dit gaat niet simpel worden. Enige voorgekauwde code? :Y)
Script/code requests zijn niet toegestaan in Programming & Webscripting en zo :Y)

Professionele website nodig?


  • RedShift
  • Registratie: Augustus 2003
  • Laatst online: 18-05 09:24
Ik heb die van The Code Project geprobeert, en het werkt nog ook, maar als ik zelf de code compile krijg ik

[Linker error] undefined reference to `GetCpuUsage()'

Wat is er verkeerd gegaan en hoe fix ik het? Blijkbaar word de functie GetCpuUsage() niet gedefinieërt ofzo? Ben het gewend van met php te coden waar alles veel duidelijker is (8>

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Je moet die GetCpuUsage.cpp wel aan je project toevoegen en meecompileren.

Verder wil ik je toch wel aanraden op een iets realistischer niveau in te stappen dan dat je nu doet. PHP is inderdaad alles verschrikkelijk veel duidelijker, en dus moet je met C++ gewoon even pas op de plaats maken en simpel beginnen. WMI en Performance Monitoring voldoen niet aan dat criterium :)

Professionele website nodig?


  • RedShift
  • Registratie: Augustus 2003
  • Laatst online: 18-05 09:24
Als ik met #include "GetCpuUsage.cpp" compile, krijg ik *heel*veel* errors.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Compiler: Default compiler
Executing  g++.exe...
g++.exe "C:\Documents and Settings\RedShift\Mijn documenten\Mijn downloads\CpuUsage_src\CpuUsage.cpp" -o "C:\Documents and Settings\RedShift\Mijn documenten\Mijn downloads\CpuUsage_src\CpuUsage.exe"   -ansi  -I"C:\Program Files\Dev-Cpp\include\c++"  -I"C:\Program Files\Dev-Cpp\include\c++\mingw32"  -I"C:\Program Files\Dev-Cpp\include\c++\backward"  -I"C:\Program Files\Dev-Cpp\include"   -L"C:\Program Files\Dev-Cpp\lib"
In file included from C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/CpuUsage.cpp:7:
C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/GetCpuUsage.cpp:33:43: atlbase.h: No such file or directory
In file included from C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/GetCpuUsage.cpp:36,
                 from C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/CpuUsage.cpp:7:
C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h:2:50: comdef.h: No such file or directory
In file included from C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/GetCpuUsage.cpp:36,
                 from C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/CpuUsage.cpp:7:
C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h: In
   member function `T CPerfCounters<T>::GetCounterValue(_PERF_OBJECT_TYPE*, 
   long unsigned int, const TCHAR*)':
C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h:165: parse
   error before `;' token

C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h:231:3: warning: no newline at end of file
In file included from C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/CpuUsage.cpp:7:
C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/GetCpuUsage.cpp: In
   function `BOOL EnablePerformaceCounters(int)':
C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/GetCpuUsage.cpp:74: `
   CRegKey' undeclared (first use this function)

C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/GetCpuUsage.cpp:74: (Each
   undeclared identifier is reported only once for each function it appears 
   in.)

C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/GetCpuUsage.cpp:74: parse
   error before `;' token

C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/GetCpuUsage.cpp:75: `
   regKey' undeclared (first use this function)

In file included from C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/CpuUsage.cpp:7:
C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/GetCpuUsage.cpp:209:2: warning: no newline at end of file

C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h: In
   member function `T CPerfCounters<T>::GetCounterValue(_PERF_OBJECT_TYPE*, 
   long unsigned int, const TCHAR*) [with T = LONGLONG]':
C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h:35:   instantiated from `T CPerfCounters<T>::GetCounterValue(PERF_DATA_BLOCK**, long unsigned int, long unsigned int, const TCHAR*) [with T = LONGLONG]'
C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/GetCpuUsage.cpp:136:   instantiated from here
C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h:169: `
   bstrInstance' undeclared (first use this function)

C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h:170: `
   bstrInputInstance' undeclared (first use this function)

C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h:170: `
   stricmp' undeclared (first use this function)

C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h: In
   member function `void CPerfCounters<T>::CBuffer::Reset() [with T = 
   LONGLONG]':
C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h:109:   instantiated from `void CPerfCounters<T>::QueryPerformanceData(PERF_DATA_BLOCK**) [with T = LONGLONG]'
C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h:20:   instantiated from `T CPerfCounters<T>::GetCounterValue(PERF_DATA_BLOCK**, long unsigned int, long unsigned int, const TCHAR*) [with T = LONGLONG]'

C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/GetCpuUsage.cpp:136:   instantiated from here
C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h:67: warning: passing
   NULL used for non-pointer argument passing 2 of `void* memset(void*, int, 
   unsigned int)'

C:/Documents and Settings/RedShift/Mijn documenten/Mijn downloads/CpuUsage_src/PerfCounters.h:67: warning: argument
    to non-pointer type `int' from NULL

Execution terminated


Code b0rken?

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
1) Waarom begin je niet met iets simpels? Ik heb het idee dat je niet echt weet waar je mee bezig bent, en dan zou ik al helemaal niet met dit soort dingen bezig zijn.

2) Die code moet je waarschijnlijk met VC++ compileren

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • RedShift
  • Registratie: Augustus 2003
  • Laatst online: 18-05 09:24
_Mo_ schreef op 05 april 2004 @ 15:40:
1) Waarom begin je niet met iets simpels? Ik heb het idee dat je niet echt weet waar je mee bezig bent, en dan zou ik al helemaal niet met dit soort dingen bezig zijn.

2) Die code moet je waarschijnlijk met VC++ compileren
1) Groot gelijk. Maar ik wil gewoon men CPU gebruik kunnen uitlezen in een PHP scriptje...

2) Waarom VC++?

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
RedShift schreef op 05 april 2004 @ 15:42:
[...]


1) Groot gelijk. Maar ik wil gewoon men CPU gebruik kunnen uitlezen in een PHP scriptje...

2) Waarom VC++?
Ik weet niet in hoeverre g++ de windows API ondersteund, maar je hebt in ieder geval al ATL headers nodig, welke worden meegeleverd met VC++. Als je deze dus al uberhaupt hebt, moeten ze ook in je include path staan anders weet de compiler ook niet waar 'ie ze moet vinden.

En er zijn genoeg andere macros die gebruikt worden die, neem ik aan, niet standaard door g++ ondersteund worden. Bv TCHAR of _PERF_OBJECT_TYPE. Dezen worden wel her-en-der gedefineerd in API headers (geen idee welke) en die zul je minimaal moeten opnemen in je include path.

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Platform SDK is ook goed (bevat alle headers en libs) maar die heb je ook niet, en als we je nu uit moeten gaan leggen hoe je daarmee omgaat wordt dit topic een gebed zonder einde.

Correcte volgorde: leer eerst programmeren, verricht daarna pas wonderen. Omgekeerd werkt echt niet ;)
1) Groot gelijk. Maar ik wil gewoon men CPU gebruik kunnen uitlezen in een PHP scriptje...
PHP heeft gewoon COM support en kun je dus ook mee WMI induiken en performance counters uitlezen *hint hint hint*

Professionele website nodig?


  • RedShift
  • Registratie: Augustus 2003
  • Laatst online: 18-05 09:24
[quote]
PHP heeft gewoon COM support en kun je dus ook mee WMI induiken en performance counters uitlezen *hint hint hint*
[quote]

Moest ik juist weten hoe dat de doen...

Maar en dan nog. Het is een uitstekende ervaring om C++ ervaring op te doen.

[ Voor 19% gewijzigd door RedShift op 05-04-2004 16:21 ]


  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
RedShift schreef op 05 april 2004 @ 16:21:
[...]

Maar en dan nog. Het is een uitstekende ervaring om C++ ervaring op te doen.
Ben ik niet met je eens. De code van dat project implementeerd zeer weinig C++ en je leert er eigenlijk helemaal niks van. Je kan beter met de basis beginnen over hoe je goed OO kan programmeren met C++.

Wat betreft PHP, heb je al met google gezocht hoe je COM en WMI gebruikt. Of hoe je evt. CPU usage kan opvragen met WMI?

[ Voor 12% gewijzigd door ^Mo^ op 05-04-2004 16:39 ]

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • RedShift
  • Registratie: Augustus 2003
  • Laatst online: 18-05 09:24
Ummm dom vraagje maar... hoe steek je variabelen in een string?
Heb dus nu atm: char sql[] = "INSERT INTO cpu_usage (usage) VALUES (cpuUsage)";
(Ben nu al met MySQL enzo aan het werken in C++, met die CpuUsage gaat alles nu goed).

In php kon je dit, omdat die zelf variabelen dedecteerde en vervong door zijn respectievelijke waarden. Ofwel met de " . $var . " notatie. Maar die werkt niet in C++. Hoe doe ik dat dus wel dat cpuUsage in char sql[] = "INSERT INTO cpu_usage (usage) VALUES (cpuUsage)"; wel vervangen word door zijn waarde?
:o :D B) |:(

Verwijderd

Eigenwijs zijn is ook een vak :X

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Komop jongen, ga eerst eens een C++ for beginners verhaal lezen, dit schiet toch niet op ?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:15

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ga jij maar eerst eens gewoon beginnen met een cursus C++, want dit schiet natuurlijk niet op. String bewerkingen in C(++) zijn meestal wat lastiger dan in andere talen, maar vormen wel degelijk de basis van de taal, en als je al niet weet hoe dat moet dan is het vrij duidelijk: je weet eigenlijk totaal niet waar je mee bezig bent. Ga dat dus eerst maar uitzoeken, en nee dat doe je niet door te vragen op GoT, maar door er een goede tutorial/manual/boek bij te pakken. Veel succes :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1

Dit topic is gesloten.