 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
pzktupel

Anmeldungsdatum: 07.07.2020 Beiträge: 85
|
Verfasst am: 04.03.2021, 11:21 Titel: CPU - Last auslesen |
|
|
Hallo, ich möchte gerne mal eine Möglichkeit haben, um die aktuelle CPU-Last aus einem Basicprogramm herraus zu verwerten. Der Grund ist, das es ein Signal geben soll, wenn diese Last weit unter 100% ist, d.h. das Programm steht.
Mit "WMIC CPU GET LoadPercentage" gibt er mir zwar in der CMD-Box einen Wert aus, aber ich konnte es noch nicht aus Basic herraus einbinden.
Geht das irgendwie ?
Danke. _________________ Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4686 Wohnort: ~/
|
Verfasst am: 04.03.2021, 12:37 Titel: |
|
|
Das ist jetzt ziemlich quick&dirty, weil ich mir über das Rückgabeformat keine Gedanken gemacht habe, sondern nur das auswerte, was vermutlich das richtige ist:
Code: | dim f as integer = freefile, wert as string
open pipe "WMIC CPU GET LoadPercentage" for input as 1
line input #1, wert
line input #1, wert
print wert
close #f |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
pzktupel

Anmeldungsdatum: 07.07.2020 Beiträge: 85
|
Verfasst am: 04.03.2021, 12:51 Titel: |
|
|
Junge, Du bist der Beste !
Danke, das reicht allemale ! _________________ Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php |
|
Nach oben |
|
 |
UEZ

Anmeldungsdatum: 24.06.2016 Beiträge: 132 Wohnort: Opel Stadt
|
Verfasst am: 04.03.2021, 13:20 Titel: |
|
|
Du kannst auch die WinAPI anzapfen, um die CPU Last auszulesen:
Code: | 'Code by UEZ build 2021-03-04 beta
#Include "windows.bi"
Function _WinAPI_GetCPUCount() As DWORD
Dim As SYSTEM_INFO si
GetSystemInfo(@si)
Return si.dwNumberOfProcessors
End Function
Dim As Double t = Timer
Dim As Integer iPosCursor = 2, pid = GetCurrentProcessId() 'pid #ändern!!!
Dim As DWORD ekt = 0, eut = 0, iCPUs = _WinAPI_GetCPUCount()
Dim As Any Ptr hProcHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
Dim As FILETIME ct, et, kt, ut
Do
If Timer - t > 0.99 Then
GetProcessTimes(hProcHandle, @ct, @et, @kt, @ut)
Locate iPosCursor, 1, 0
? ((kt.dwLowDateTime - ekt + ut.dwLowDateTime - eut) / 100000 / iCPUs)
ekt = kt.dwLowDateTime
eut = ut.dwLowDateTime
t = Timer
Endif
'Sleep(10)
Loop Until Len(Inkey())
CloseHandle(hProcHandle)
|
Einfach die entsprechende PID eintragen und starten. _________________ Gruß,
UEZ |
|
Nach oben |
|
 |
pzktupel

Anmeldungsdatum: 07.07.2020 Beiträge: 85
|
Verfasst am: 04.03.2021, 13:40 Titel: |
|
|
Das vom Vorgänger reicht, habs schon eingebunden und mit MP3-Meldung verknüpft. Trotzdem danke, es bleibt ja zum Nachlesen hier erhalten.
Auszug:
Zitat: |
dim f1 as integer = freefile, wert as string
open pipe "WMIC CPU GET LoadPercentage" for input as 1
line input #1, wert
line input #1, wert
If VAL(wert)<10 and VAL(S)>58600000 then SHELL("E:\SOUNDS\fertig.mp3"):SLEEP 10000
If VAL(wert)<10 and VAL(S)<58600000 then SHELL("E:\SOUNDS\stillstand.mp3"):SLEEP 10000
|
_________________ Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|