亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unitcpu.pas

?? 內存自動整理源碼》很明顯就是有關于內存整理的軟件源碼
?? PAS
字號:
unit Unitcpu;

interface

uses
    Windows, SysUtils;

// Call CollectCPUData to refresh information about CPU usage
procedure CollectCPUData;

// Call it to obtain the number of CPU's in the system
function GetCPUCount: Integer;

// Call it to obtain the % of usage for given CPU
function GetCPUUsage(Index: Integer): Double;

// For Win9x only: call it to stop CPU usage monitoring and free system resources
procedure ReleaseCPUData;

implementation

{$ifndef ver110}

    {$ifndef ver90}
    {$ifndef ver100}
    {$define UseInt64}
    {$endif}
    {$endif}


    {$ifdef UseInt64}
    type TInt64 = Int64;
    {$else}
    type TInt64 = Comp;
    {$endif}

{$else}

    type TInt64 = TLargeInteger;

{$endif}

type
    PInt64 = ^TInt64;

type
    TPERF_DATA_BLOCK = record
        Signature : array[0..4 - 1] of WCHAR;
        LittleEndian : DWORD;
        Version : DWORD;
        Revision : DWORD;
        TotalByteLength : DWORD;
        HeaderLength : DWORD;
        NumObjectTypes : DWORD;
        DefaultObject : Longint;
        SystemTime : TSystemTime;
        Reserved: DWORD;
        PerfTime : TInt64;
        PerfFreq : TInt64;
        PerfTime100nSec : TInt64;
        SystemNameLength : DWORD;
        SystemNameOffset : DWORD;
    end;

    PPERF_DATA_BLOCK = ^TPERF_DATA_BLOCK;

    TPERF_OBJECT_TYPE = record
        TotalByteLength : DWORD;
        DefinitionLength : DWORD;
        HeaderLength : DWORD;
        ObjectNameTitleIndex : DWORD;
        ObjectNameTitle : LPWSTR;
        ObjectHelpTitleIndex : DWORD;
        ObjectHelpTitle : LPWSTR;
        DetailLevel : DWORD;
        NumCounters : DWORD;
        DefaultCounter : Longint;
        NumInstances : Longint;
        CodePage : DWORD;
        PerfTime : TInt64;
        PerfFreq : TInt64;
    end;

    PPERF_OBJECT_TYPE = ^TPERF_OBJECT_TYPE;

type
    TPERF_COUNTER_DEFINITION = record
        ByteLength : DWORD;
        CounterNameTitleIndex : DWORD;
        CounterNameTitle : LPWSTR;
        CounterHelpTitleIndex : DWORD;
        CounterHelpTitle : LPWSTR;
        DefaultScale : Longint;
        DetailLevel : DWORD;
        CounterType : DWORD;
        CounterSize : DWORD;
        CounterOffset : DWORD;
    end;

    PPERF_COUNTER_DEFINITION = ^TPERF_COUNTER_DEFINITION;

    TPERF_COUNTER_BLOCK = record
        ByteLength : DWORD;
    end;

    PPERF_COUNTER_BLOCK = ^TPERF_COUNTER_BLOCK;

    TPERF_INSTANCE_DEFINITION = record
        ByteLength : DWORD;
        ParentObjectTitleIndex : DWORD;
        ParentObjectInstance : DWORD;
        UniqueID : Longint;
        NameOffset : DWORD;
        NameLength : DWORD;
    end;

    PPERF_INSTANCE_DEFINITION = ^TPERF_INSTANCE_DEFINITION;

//------------------------------------------------------------------------------
{$ifdef ver130}
{$L-}         // The L+ causes internal error in Delphi 5 compiler
{$O-}         // The O+ causes internal error in Delphi 5 compiler
{$Y-}         // The Y+ causes internal error in Delphi 5 compiler
{$endif}

{$ifndef ver110}
type
    TInt64F = TInt64;
{$else}
type
    TInt64F = Extended;
{$endif}

{$ifdef ver110}
function FInt64(Value: TInt64): TInt64F;
function Int64D(Value: DWORD): TInt64;
{$else}
type
    FInt64 = TInt64F;
    Int64D = TInt64;
{$endif}

{$ifdef ver110}
function FInt64(Value: TInt64): TInt64F;
var V: TInt64;
begin
    if (Value.HighPart and $80000000) = 0 then // positive value
    begin
        result:=Value.HighPart;
        result:=result*$10000*$10000;
        result:=result+Value.LowPart;
    end else
    begin
        V.HighPart:=Value.HighPart xor $FFFFFFFF;
        V.LowPart:=Value.LowPart xor $FFFFFFFF;
        result:= -1 - FInt64(V);
    end;
end;

function Int64D(Value: DWORD): TInt64;
begin
    result.LowPart:=Value;
    result.HighPart := 0; // positive only
end;
{$endif}

//------------------------------------------------------------------------------

const
    Processor_IDX_Str = '238';
    Processor_IDX = 238;
    CPUUsageIDX = 6;

type
    AInt64F = array[0..$FFFF] of TInt64F;
    PAInt64F = ^AInt64F;

var
    _PerfData : PPERF_DATA_BLOCK;
    _BufferSize: Integer;
    _POT : PPERF_OBJECT_TYPE;
    _PCD: PPerf_Counter_Definition;
    _ProcessorsCount: Integer;
    _Counters: PAInt64F;
    _PrevCounters: PAInt64F;
    _SysTime: TInt64F;
    _PrevSysTime: TInt64F;
    _IsWinNT: Boolean;

    _W9xCollecting: Boolean;
    _W9xCpuUsage: DWORD;
    _W9xCpuKey: HKEY;


//------------------------------------------------------------------------------
function GetCPUCount: Integer;
begin
    if _IsWinNT then
    begin
        if _ProcessorsCount < 0 then CollectCPUData;
        result:=_ProcessorsCount;
    end else
    begin
        result:=1;
    end;

end;

//------------------------------------------------------------------------------
procedure ReleaseCPUData;
var H: HKEY;
    R: DWORD;
    dwDataSize, dwType: DWORD;
begin
    if _IsWinNT then exit;
    if not _W9xCollecting then exit;
    _W9xCollecting:=False;

    RegCloseKey(_W9xCpuKey);

    R:=RegOpenKeyEx( HKEY_DYN_DATA, 'PerfStats\StopStat', 0, KEY_ALL_ACCESS, H );

    if R <> ERROR_SUCCESS then exit;

    dwDataSize:=sizeof(DWORD);

    RegQueryValueEx ( H, 'KERNEL\CPUUsage', nil, @dwType, PBYTE(@_W9xCpuUsage), @dwDataSize);

    RegCloseKey(H);

end;

//------------------------------------------------------------------------------
function GetCPUUsage(Index: Integer): Double;
begin
    if _IsWinNT then
    begin
        if _ProcessorsCount < 0 then CollectCPUData;
        if (Index >= _ProcessorsCount) or (Index < 0) then
            raise Exception.Create('CPU index out of bounds');
        if _PrevSysTime = _SysTime then result:=0 else
        result:=1-(_Counters[index] - _PrevCounters[index])/(_SysTime-_PrevSysTime);
    end else
    begin
        if Index <> 0 then
            raise Exception.Create('CPU index out of bounds');
        if not _W9xCollecting then CollectCPUData;
        result:=_W9xCpuUsage / 100;
    end;
end;

var VI: TOSVERSIONINFO;

//------------------------------------------------------------------------------
procedure CollectCPUData;
var BS: integer;
    i: Integer;
    _PCB_Instance: PPERF_COUNTER_BLOCK;
    _PID_Instance: PPERF_INSTANCE_DEFINITION;
    ST: TFileTime;

var H: HKEY;
    R: DWORD;
    dwDataSize, dwType: DWORD;
begin
    if _IsWinNT then
    begin
        BS:=_BufferSize;
        while RegQueryValueEx( HKEY_PERFORMANCE_DATA, Processor_IDX_Str, nil, nil,
                PByte(_PerfData), @BS ) = ERROR_MORE_DATA do
        begin
            // Get a buffer that is big enough.
            INC(_BufferSize,$1000);
            BS:=_BufferSize;
            ReallocMem( _PerfData, _BufferSize );
        end;

        // Locate the performance object
        _POT := PPERF_OBJECT_TYPE(DWORD(_PerfData) + _PerfData.HeaderLength);
        for i := 1 to _PerfData.NumObjectTypes do
        begin
            if _POT.ObjectNameTitleIndex = Processor_IDX then Break;
            _POT := PPERF_OBJECT_TYPE(DWORD(_POT) + _POT.TotalByteLength);
        end;

        // Check for success
        if _POT.ObjectNameTitleIndex <> Processor_IDX then
            raise Exception.Create('Unable to locate the "Processor" performance object');

        if _ProcessorsCount < 0 then
        begin
            _ProcessorsCount:=_POT.NumInstances;
            GetMem(_Counters,_ProcessorsCount*SizeOf(TInt64));
            GetMem(_PrevCounters,_ProcessorsCount*SizeOf(TInt64));
        end;

        // Locate the "% CPU usage" counter definition
        _PCD := PPERF_Counter_DEFINITION(DWORD(_POT) + _POT.HeaderLength);
        for i := 1 to _POT.NumCounters do
        begin
            if _PCD.CounterNameTitleIndex = CPUUsageIDX then break;
            _PCD := PPERF_COUNTER_DEFINITION(DWORD(_PCD) + _PCD.ByteLength);
        end;

        // Check for success
        if _PCD.CounterNameTitleIndex <> CPUUsageIDX then
            raise Exception.Create('Unable to locate the "% of CPU usage" performance counter');

        // Collecting coutners
        _PID_Instance := PPERF_INSTANCE_DEFINITION(DWORD(_POT) + _POT.DefinitionLength);
        for i := 0 to _ProcessorsCount-1 do
        begin
            _PCB_Instance := PPERF_COUNTER_BLOCK(DWORD(_PID_Instance) + _PID_Instance.ByteLength );

            _PrevCounters[i]:=_Counters[i];
            _Counters[i]:=FInt64(PInt64(DWORD(_PCB_Instance) + _PCD.CounterOffset)^);

            _PID_Instance := PPERF_INSTANCE_DEFINITION(DWORD(_PCB_Instance) + _PCB_Instance.ByteLength);
        end;

        _PrevSysTime:=_SysTime;
        SystemTimeToFileTime(_PerfData.SystemTime, ST);
        _SysTime:=FInt64(TInt64(ST));
    end else
    begin
        if not _W9xCollecting then
        begin
            R:=RegOpenKeyEx( HKEY_DYN_DATA, 'PerfStats\StartStat', 0, KEY_ALL_ACCESS, H );
            if R <> ERROR_SUCCESS then
                raise Exception.Create('Unable to start performance monitoring');

            dwDataSize:=sizeof(DWORD);

            RegQueryValueEx( H, 'KERNEL\CPUUsage', nil, @dwType, PBYTE(@_W9xCpuUsage), @dwDataSize );

            RegCloseKey(H);

            R:=RegOpenKeyEx( HKEY_DYN_DATA, 'PerfStats\StatData', 0,KEY_READ, _W9xCpuKey );

            if R <> ERROR_SUCCESS then
                raise Exception.Create('Unable to read performance data');

            _W9xCollecting:=True;
        end;

        dwDataSize:=sizeof(DWORD);
        RegQueryValueEx( _W9xCpuKey, 'KERNEL\CPUUsage', nil,@dwType, PBYTE(@_W9xCpuUsage), @dwDataSize );
    end;
end;


initialization
    _ProcessorsCount:= -1;
    _BufferSize:= $2000;
    _PerfData := AllocMem(_BufferSize);

    VI.dwOSVersionInfoSize:=SizeOf(VI);
    if not GetVersionEx(VI) then raise Exception.Create('Can''t get the Windows version');

    _IsWinNT := VI.dwPlatformId = VER_PLATFORM_WIN32_NT;
finalization
    ReleaseCPUData;
    FreeMem(_PerfData);
end.
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线一区二区三区四区| 精品国产麻豆免费人成网站| 日本大胆欧美人术艺术动态| 国产精品免费视频一区| 欧美一区二区三区视频免费 | 日韩在线播放一区二区| 久久久噜噜噜久噜久久综合| 欧美婷婷六月丁香综合色| 成人黄色电影在线 | 亚洲精品午夜久久久| 欧美精品一区二区久久久| 欧美日韩色综合| 92精品国产成人观看免费| 国产精品自拍在线| 日本不卡视频在线观看| 亚洲一区二区三区国产| 18成人在线视频| 国产精品视频一二三区| 久久精品综合网| 欧美一区二区三区免费观看视频 | 久久伊人蜜桃av一区二区| 538在线一区二区精品国产| 在线精品观看国产| 色诱亚洲精品久久久久久| 成人午夜在线免费| 国产成人精品网址| 国产成人综合精品三级| 激情综合五月天| 黄网站免费久久| 另类小说一区二区三区| 久久精品国产一区二区三| 日韩精品亚洲专区| 婷婷成人激情在线网| 亚洲国产精品久久人人爱蜜臀 | 欧美精品久久久久久久多人混战 | 国产精品视频九色porn| 国产人久久人人人人爽| 国产欧美日韩麻豆91| 美美哒免费高清在线观看视频一区二区 | 五月婷婷色综合| 亚洲高清在线视频| 婷婷久久综合九色综合绿巨人 | 色狠狠av一区二区三区| 91影院在线免费观看| 91福利在线观看| 欧洲av一区二区嗯嗯嗯啊| 欧美视频在线不卡| 91麻豆精品国产91久久久| 欧美一级片在线观看| 欧美成人官网二区| 国产色产综合产在线视频| 国产欧美日韩三级| 欧美一区二区二区| 久久久不卡网国产精品一区| 国产喂奶挤奶一区二区三区| 中文字幕欧美一| 亚洲综合999| 日韩在线卡一卡二| 国产高清精品久久久久| 99久久久无码国产精品| 欧美日韩精品电影| 2023国产精品自拍| 中文字幕字幕中文在线中不卡视频| 综合久久久久综合| 亚洲h在线观看| 国产呦精品一区二区三区网站| 成人午夜在线免费| 欧美亚洲国产bt| 精品福利一区二区三区免费视频| 国产视频一区二区三区在线观看| 亚洲欧美偷拍卡通变态| 日韩av一二三| 高潮精品一区videoshd| 欧美系列日韩一区| 精品sm捆绑视频| 亚洲欧美日韩成人高清在线一区| 五月婷婷综合网| 成熟亚洲日本毛茸茸凸凹| 在线看日韩精品电影| 欧美成人精品1314www| 国产成人av资源| 欧美性视频一区二区三区| 精品国产在天天线2019| 亚洲毛片av在线| 狠狠色狠狠色综合系列| 色综合久久久久久久久久久| 日韩欧美一二三四区| 自拍偷拍亚洲综合| 紧缚捆绑精品一区二区| 一本色道久久综合狠狠躁的推荐| 欧美成人乱码一区二区三区| 亚洲精品乱码久久久久久久久 | 精品久久久久久久久久久久久久久 | 91精品在线免费观看| 亚洲国产激情av| 蜜桃久久久久久| 在线欧美小视频| 中文av一区特黄| 久久99久久久久久久久久久| 91丨九色丨蝌蚪丨老版| 日韩精品一区二区三区中文精品 | 亚洲资源在线观看| 成人高清在线视频| 日韩欧美一二三四区| 亚洲国产三级在线| 波多野结衣一区二区三区 | 欧美午夜精品一区二区三区| 中文字幕第一区| 免费在线观看成人| 欧美性大战久久久久久久| 国产精品久久久久久久第一福利| 久久www免费人成看片高清| 欧美色偷偷大香| 最好看的中文字幕久久| 国产福利一区二区三区| 日韩黄色免费电影| 在线免费观看日韩欧美| 最新热久久免费视频| 国产69精品久久久久毛片| 久久亚洲一区二区三区明星换脸| 日产国产高清一区二区三区| 欧洲精品在线观看| 亚洲欧美另类小说| 成人高清av在线| 国产精品女人毛片| 成人免费高清在线观看| 欧美激情一区在线| 成人高清视频在线| 国产精品灌醉下药二区| 国产另类ts人妖一区二区| 精品精品国产高清a毛片牛牛| 日韩精品免费视频人成| 欧美精品乱码久久久久久| 亚洲一二三区不卡| 欧美性一级生活| 性做久久久久久免费观看欧美| 日本高清不卡一区| 一区二区三区高清在线| 在线国产亚洲欧美| 亚洲丰满少妇videoshd| 欧美电影在线免费观看| 日韩高清不卡一区二区三区| 91精品国产欧美一区二区| 日韩福利视频导航| 精品国产一区二区三区久久久蜜月| 日本不卡不码高清免费观看| 91精品国产手机| 久久精品二区亚洲w码| 精品成人一区二区三区四区| 精品在线亚洲视频| 久久久久免费观看| 91在线视频观看| 亚洲网友自拍偷拍| 日韩一区国产二区欧美三区| 国产专区欧美精品| 国产精品麻豆一区二区| 91久久精品一区二区三区| 亚洲成人综合在线| 丝袜诱惑亚洲看片| 精品日韩成人av| av在线一区二区三区| 亚洲一区二区三区四区在线观看| 欧美久久一二区| 国产一区二区三区在线观看精品| 国产精品美女久久久久久久久久久| 91欧美一区二区| 日韩成人av影视| 欧美激情一区二区三区全黄| 色哦色哦哦色天天综合| 日韩av电影天堂| 国产精品欧美一区喷水| 欧美在线观看18| 久久成人久久鬼色| 亚洲色欲色欲www在线观看| 欧美日韩五月天| 国产一区二区91| 一区二区三区免费| 精品久久久久久久人人人人传媒| 成人动漫一区二区在线| 亚洲va欧美va人人爽午夜| 久久麻豆一区二区| 欧美日韩你懂的| 成人免费高清视频在线观看| 视频一区欧美日韩| 国产精品麻豆欧美日韩ww| 欧美精品亚洲二区| 91视频免费播放| 精品影院一区二区久久久| 亚洲精品国产a| 久久久久99精品国产片| 欧美日韩国产片| 91香蕉视频mp4| 国产精一品亚洲二区在线视频| 亚洲国产综合在线| 国产精品拍天天在线| 日韩欧美成人午夜| 欧美亚洲国产一区二区三区| 成人精品一区二区三区中文字幕| 日韩国产精品久久久| 自拍偷拍亚洲综合|