CPU Auslastung Auslesen (Nicht mit PerformanceCounter möglich)

  • VB.NET

Es gibt 40 Antworten in diesem Thema. Der letzte Beitrag () ist von ThePlexian.

    CPU Auslastung Auslesen (Nicht mit PerformanceCounter möglich)

    Hallo,

    Vorhin habe ich an meinem Laptop mit Windows 7 Home Premium angefangene in Kleines Tool zu entwerfen, welches Graphisch die CPU Auslastung wiedergibt, dazu habe ich einen PerformanceCounter genutzt, das ganze hat auch Perfekt funktioniert, ich also auf den Stick gezogen und an den Richtigen Rechner gegangen, Stick rein Debug gestartet -> Fehler, habe dan nachgelesen das Der PerformanceCounter unter Windows 7 Professionel wohl die CPU Auslastung nicht auslesen kann, nun wollte ich es also per WMI Versuchen, konnte allerdings bisher nichts brauchbares finden, meine Frage: Gibt es eine Möglichkeit den PerformanceCounter für die CPU Auslastung irgendwie doch auch unter Windows 7 Professionel & co zu nutzen? Wenn nein, wie kann ich die Komplette CPU Auslastung per WMI Auslesen?
    Ich Tippe eher darauf das Problem in deinem Code liegt, zeig uns den doch mal.

    Edit: Und nenne uns die Fehlermeldung.

    slice schrieb:

    Ich Tippe eher darauf das Problem in deinem Code liegt, zeig uns den doch mal.

    Edit: Und nenne uns die Fehlermeldung.


    Am Code liegt es nicht, weil keiner Vorhanden ist, habe alles Auskommentiert um das schonmal Auszuschließen. Der Fehler Entsteht sobald ich eben den "Konfigurierten" PerformanceCounter Einfüge/Einrichte.

    Fehlermeldung:

    Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Die Eingabezeichenfolge hat das falsche Format..

    System.InvalidOperationException wurde nicht behandelt.
    Message=Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Die Eingabezeichenfolge hat das falsche Format..
    ...

    Doch, klar liegts am Code. Die Fehlermeldung ist eindeutig, du konvertierst irgendwo was (vielleicht merkst dus ja gar nicht, weil du Strict Off programmierst, wenn ja als aller erstes anschalten, da kann schon viel ans Tageslicht kommen) aus ner Zeichenfolge, und die ist offensichtlich nicht konvertierbar.
    Zeig mal den Code her, ansonsten bleibt das hier ein Ratespiel.

    Artentus schrieb:

    Zeig mal den Code her, ansonsten bleibt das hier ein Ratespiel.


    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. End Sub
    4. End Class


    Option Strict auf On geschaltet (gleicher Fehler):


    Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Indikatornamensdaten können nicht geladen werden, da ein ungültiger Index "" aus der Registrierung gelesen wurde..
    System.InvalidOperationException wurde nicht behandelt.

    HResult=-2146233079
    Message=Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Indikatornamensdaten können nicht geladen werden, da ein ungültiger Index "" aus der Registrierung gelesen wurde..
    Source=WindowsApplication1
    StackTrace:
    bei WindowsApplication1.My.MyProject.MyForms.Create__Instance__[T](T Instance) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 190.
    bei WindowsApplication1.My.MyProject.MyForms.get_Form1()
    bei WindowsApplication1.My.MyApplication.OnCreateMainForm() in <Pfad>\My Project\Application.Designer.vb:Zeile 35.
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    bei WindowsApplication1.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
    bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    bei System.Threading.ThreadHelper.ThreadStart()
    InnerException: System.InvalidOperationException
    HResult=-2146233079
    Message=Indikatornamensdaten können nicht geladen werden, da ein ungültiger Index "" aus der Registrierung gelesen wurde.
    Source=System
    StackTrace:
    bei System.Diagnostics.PerformanceCounterLib.GetStringTable(Boolean isHelp)
    bei System.Diagnostics.PerformanceCounterLib.get_NameTable()
    bei System.Diagnostics.PerformanceCounterLib.get_CategoryTable()
    bei System.Diagnostics.PerformanceCounterLib.CounterExists(String category, String counter, Boolean& categoryExists)
    bei System.Diagnostics.PerformanceCounterLib.CounterExists(String machine, String category, String counter)
    bei System.Diagnostics.PerformanceCounter.InitializeImpl()
    bei System.Diagnostics.PerformanceCounter.EndInit()
    bei WindowsApplication1.Form1.InitializeComponent() in <Pfad>\Temporary Projects\WindowsApplication1\Form1.Designer.vb:Zeile 42.
    bei WindowsApplication1.Form1..ctor()
    InnerException:

    Ist das denn wirklich Dein Ernst oder willst Du uns trollen?
    Was bringt uns nen Handler? Du sollst den ganzen Code posten mit der Fehlerzeile.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Zum zweiten Mal: Den Code, in dem der Fehler auftritt bzw einfach den ganzen Code und dann gibst Du die Fehlerzeile an. Das kann doch nicht so schwer sein, oder?
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Das habe ich noch nie gehört. Schon mal daran gedacht, dass man als Entwickler nicht alles geschenkt bekommt und sich manchmal Zeugs, das das fixt auch selber schreiben muss?
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Netter Ton welcher hier wieder mal an den Tag gelegt wird (wie so oft mittlerweile hier im Forum).
    Nur so als Info (und objektiver Zuseher dieses Threads):
    - Der TE ist auf jeden Hinweis eingegangen
    - Hat ganz normale Fragen gestellt (wo man auch eine GANZ normale Antwort erwarten kann)

    Ich denke wenn Leute schon unbedingt helfen wollen, diese mal ein wenig darauf achten sollen wie sie zu kommunizieren haben.
    Wenn ihr schon so genervt seid, dass ihr nicht mehr anders könnt, als in so einem Ton zu schreiben, dann bitte schreibt einfach gar nix...

    BTW: Einen FixIt schreibt man sich sicher nicht selber. Falls wer nicht weiß was ein FixIt von Microsoft ist: -> support.microsoft.com/fixit/de-at

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Habe nun

    VB.NET-Quellcode

    1. Dim txtResult As String
    2. Dim search As New ManagementObjectSearcher("SELECT * FROM Win32_PerfFormattedData_PerfOS_Processor")
    3. Dim info As ManagementObject
    4. For Each info In search.Get()
    5. txtResult = info("PercentProcessorTime") * 10
    6. Next
    7. MsgBox(txtResult)

    Versucht, ohne Erfolg.
    Klasse Aussage, null Information - frag doch direkt nach den Code.
    Das du da mit einer Schleife arbeitest ist dir aber schon bewusst oder? Anstelle von MsgBox solltest du MessageBox.Show nutzen und Option Strict On dürfte dir auch fremd sein.