• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

[Gelöst][Autoit] CPU Cycles von Prozess ermitteln

War-10-ck

střelec
Veteran

Registriert
14 Juli 2013
Beiträge
5.952
Ort
Schießstand
Hallo,

jemand eine Idee wie man an den Wert kommt? Autoit wär prima, wenns irgendwie geht, dass ich den Wert anders bekomme und alles aus meinem Autoit Skript steuern kann is auch gut.

Genau den Wert (hier mal aus Process Explorer) ->
Neue Bitmap (2).jpg
 
Zuletzt bearbeitet:

War-10-ck

střelec
Veteran

Registriert
14 Juli 2013
Beiträge
5.952
Ort
Schießstand
  • Thread Starter Thread Starter
  • #3
Re: [Autoit] CPU Cycles von Prozess ermitteln

Das sollte schon gehen. Ich schätze mal so. Ich steig nur gerade nicht ganz durch den Link durch den du mir geschickt hast, war da vorher auch schonmal drauf. Könntest du mir ein Beispielaufruf in Pseudocode geben? Wo muss ich da angeben von welchem Prozess ich die Cycles messen will?

Edit: Ah ich glaub so langsam steig ich durch wie das funktioniert.. Ich experimentier noch mal ein bissle.

--- Automatisch zusammengeführter Beitrag ---

Okay mein Aufruf schaut jetzt so aus:

PHP:
Func _CalculateCPUCycle()
	Local $hWnd = ""
	Local $iPID = ProcessExists("notepad.exe")
	Local $aWinList = WinList()
	Local $nCycles

	For $i = 1 To $aWinList[0][0]
		If WinGetProcess($aWinList[$i][0]) = $iPID Then
			$hWnd = $aWinList[$i][1]
			ExitLoop
		EndIf
	Next

	If $hWnd <> "" Then
		$nCycles = DllCall("Kernel32.dll", "UINT64", "QueryProcessCycleTime", "HWND", $hWnd)
		MsgBox(1,"hhh", @error)
		ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $nCycles = ' & $nCycles & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
	Else
		MsgBox(64,"Not Found", "No matching process found.")
	EndIf
EndFunc

Nach dem DLL-Aufruf bricht das Skript jedoch ab.
Folgende Errorausgabe:

Code:
>Error code: 0
!>16:05:17 AutoIt3.exe ended.rc:-1073741819
>Exit code: -1073741819    Time: 5.323

Wo liegt der Fehler?

--- Automatisch zusammengeführter Beitrag ---

Okay, hat nun geklappt wenn auch nicht über Autoit selber. Ich hab ein kleines C# CommandLine-Tool geschrieben, das wird dann eben aus dem Autoit-Skript aufgerufen...
Wens noch interessiert heir der Code:

PHP:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace CPUCycles
{
    class Program
    {
        [DllImport("kernel32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool QueryProcessCycleTime(IntPtr ProcessHandle, out ulong CycleTime);

        static void Main(string[] args)
        {
            IntPtr hwnd = ProcessExists("notepad");
            ulong cycles = 0;

            QueryProcessCycleTime(hwnd, out cycles);
            Console.WriteLine(cycles);
            Console.ReadLine();
        }

        public static IntPtr ProcessExists(string process)
        {
            IntPtr hwnd = new IntPtr(0);
           
            if (process.Contains(".exe"))
            {
                process = process.Replace(".exe", "");
            }

            Process[] processlist = Process.GetProcesses();
            foreach (Process theprocess in processlist)
            {
                if (theprocess.ProcessName.Contains(process))
                {
                    hwnd = theprocess.Handle;
                    return hwnd;
                }
            }
            return hwnd;
        }
    }
}

@drfuture: Danke für den Hinweis auf die DLL-Funktion! :)
 
Zuletzt bearbeitet:
Oben