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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? computerinfo.pas

?? 一個自定義應(yīng)用程序異常的類 delphi控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:

end;

function GetCPUInfo: TCPUInfo;

const

  Key = 'HARDWARE\DESCRIPTION\System\CentralProcessor\';

var

  hkey: Windows.hkey;

  dwDataSize: DWORD;

  dwType: DWORD;

  dwCpuUsage: DWORD;

  SysPerfInfo: TSYSTEM_PERFORMANCE_INFORMATION;

  SysTimeInfo: TSYSTEM_TIME_INFORMATION;

  SysBaseInfo: TSYSTEM_BASIC_INFORMATION;

  dbIdleTime: double;

  dbSystemTime: double;

  status: LongInt;

  liOldIdleTime: LARGE_INTEGER;         //= (*0,0*);

  liOldSystemTime: LARGE_INTEGER;       // = (*0,0*);

  ReturnLength: ULONG;

  I : LongInt;

  S : TStrings;

begin

  S := TStringList.Create;

  with TRegistry.Create do

  begin

    try

      RootKey := HKEY_LOCAL_MACHINE;

      OpenKey(Key, False);

      (*檢測注冊表里有幾個CPU記錄*)

      GetKeyNames(S);

      SetLength(Result.CPUs, S.Count);

      for I := 0 to S.Count - 1 do

        Result.CPUs[I] := GetCPURec(I+1);

      CloseKey;

    finally

      S.Free;

      free;

    end;

  end;

  Result.CPUUsage := Byte(-1);

  If Win32Platform = VER_PLATFORM_WIN32_NT then

  begin

    liOldIdleTime.QuadPart:= 0;

    liOldSystemTime.QuadPart:= 0;

    IF not Assigned(NtQuerySystemInformation) then Exit;

    (*得到CPU的數(shù)量*)

    status := NtQuerySystemInformation(SystemBasicInformation,

      SysBaseInfo, SizeOf(SysBaseInfo), ReturnLength);

    If status <> NO_ERROR then Exit;

    Result.CPUCount:= SysBaseInfo.bKeNumberProcessors;

    for I:= 0 to 1 do

    begin

      (*返回新的系統(tǒng)時間*)

      status:= NtQuerySystemInformation(SystemTimeInformation, SysTimeInfo,

         SizeOf(SysTimeInfo), ReturnLength);

      If status <> NO_ERROR then Exit;

      (*返回新的CPU空閑時間*)

      status:= NtQuerySystemInformation(SystemPerformanceInformation,

        SysPerfInfo, SizeOf(SysPerfInfo), ReturnLength);


      If status <> NO_ERROR then Exit;

      // if it's a first call - skip it

      If liOldIdleTime.QuadPart <> 0 then

      begin

        // CurrentValue = NewValue - OldValue

        dbIdleTime:= SysPerfInfo.liIdleTime.QuadPart - liOldIdleTime.QuadPart;

        dbSystemTime:= SysTimeInfo.liKeSystemTime.QuadPart - liOldSystemTime.QuadPart;


        // CurrentCpuIdle = IdleTime / SystemTime

        dbIdleTime:= dbIdleTime / dbSystemTime;


        // CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors

        dbIdleTime:= 100.0 - dbIdleTime * 100.0 / SysBaseInfo.bKeNumberProcessors + 0.5;

        Result.CPUUsage:= Round(dbIdleTime);

      end;


      // store new CPU's idle and system time

      liOldIdleTime:= SysPerfInfo.liIdleTime;

      liOldSystemTime:= SysTimeInfo.liKeSystemTime;

      Sleep(500);

    end;

  end

  else begin

    Result.CPUCount := 1;

    If RegOpenKeyEx(HKEY_DYN_DATA, 'PerfStats\StartStat',

      0, KEY_ALL_ACCESS, hkey) <> ERROR_SUCCESS Then Exit;

    dwDataSize:= SizeOf(DWORD);

    RegQueryValueEx(hkey, 'KERNEL\CPUUsage', nil, @dwType,

      @dwCpuUsage, @dwDataSize);

    RegCloseKey(hkey);


    // geting current counter's value

    If RegOpenKeyEx(HKEY_DYN_DATA, 'PerfStats\StatData',

      0, KEY_READ, hkey) <> ERROR_SUCCESS then Exit;

    dwDataSize:= SizeOf(DWORD);

    RegQueryValueEx(hkey, 'KERNEL\CPUUsage', nil, @dwType,

      @dwCpuUsage, @dwDataSize);

    Result.CPUUsage:= dwCpuUsage;

    RegCloseKey(hkey);

    // stoping the counter

    If RegOpenKeyEx(HKEY_DYN_DATA, 'PerfStats\StopStat', 0, KEY_ALL_ACCESS,

      hkey) <> ERROR_SUCCESS then Exit;

    dwDataSize:= SizeOf(DWORD);

    RegQueryValueEx(hkey, 'KERNEL\CPUUsage', nil, @dwType,

      @dwCpuUsage, @dwDataSize);

    RegCloseKey(hkey);

  end;

end;

function GetKeyBoardTypeName: String;

begin

  {獲取鍵盤類型}

  case getkeyboardtype(0) of

    1:  result := 'IBM PC/XT 或兼容類型(83鍵)';

    2:  result := 'Olivetti "ICO"(102鍵)';

    3:  result := 'IBM PC/AT(84鍵)';

    4:  result := 'IBM 增強型(101或102鍵)或Microsoft自然鍵盤';

    5:  result := 'Nokia 1050';

    6:  result := 'Nokia 9140';

    7:  result := 'Japanese';

  end;

end;

function GetKeyboardState:TKeyboardState;

begin

  result := [];

  if lo(GetKeyState(VK_NUMLOCK)) = 1 then

    Include(result, ksNumLock);

  if lo(GetKeyState(VK_CAPITAL)) = 1 then

    Include(result, ksCapsLock);

  if lo(GetKeyState(VK_LSHIFT)) = 1 then

    Include(result, ksLeftShift);

  if lo(GetKeyState(VK_RSHIFT)) = 1 then

    Include(result, ksRightShift);

  if lo(GetKeyState(VK_LCONTROL)) = 1 then

    Include(result, ksLeftCtrl);

  if lo(GetKeyState(VK_RCONTROL)) = 1 then

    Include(result, ksRightCtrl);

  if lo(GetKeyState(VK_LMENU)) = 1 then

    Include(result, ksLeftAlt);

  if lo(GetKeyState(VK_RMENU)) = 1 then

    Include(result, ksRightAlt);

  if lo(GetKeyState(VK_LWIN)) = 1 then

    Include(result, ksLeftWin);

  if lo(GetKeyState(VK_RWIN)) = 1 then

    Include(result, ksRightWin);

end;


function GetKeyboardInfo : TKeyboardInfo;

begin

  with Result do

  begin

    SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, @Delay, 0);

    SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, @Speed, 0);

    NumLock := lo(GetKeyState(VK_NUMLOCK)) = 1;

    CapsLock:= lo(GetKeyState(VK_CAPITAL)) = 1;

    ScrollLock := lo(GetKeyState(VK_SCROLL)) = 1;

    Types := GetKeyboardType(0);

    SubType := GetKeyboardType(1);

    FunctionKeys := GetKeyboardType(2);

    SetLength(Layout, KL_NAMELENGTH);

    GetKeyboardLayoutName(Pchar(Layout));

    CaretBlinkTime:= GetCaretBlinkTime;

    Result.TypeStr := GetKeyBoardTypeName;

  end;

end;

function GetMouseInfo : TMouseInfo;

const

  Key1 = '\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cursors\Schemes';

  Key2 = '\SYSTEM\CurrentControlSet\Control\Class\(*4D36E96F-E325-11CE-BFC1-08002BE10318*)\0000';

  Key3 = '\Control Panel\Cursors';

var

  I: Integer;

begin

  with Result do

  begin

    Exist:= Boolean(GetSystemMetrics(SM_MOUSEPRESENT));

    Btns:= GetSystemMetrics(SM_CMOUSEBUTTONS);

    Wheel:= Boolean(GetSystemMetrics(SM_MOUSEWHEELPRESENT));

    SwapBtns:= Boolean(GetSystemMetrics(SM_SWAPBUTTON));

    DoubleClickTime:= GetDoubleClickTime;

    SystemParametersInfo(SPI_GETSNAPTODEFBUTTON, 0, @SnapToDefault, 0);

    SystemParametersInfo(SPI_GETMOUSESPEED, 0, @Speed, 0);

    DblClickWidth:= GetSystemMetrics(SM_CXDOUBLECLK);

    DblClickHeight:= GetSystemMetrics(SM_CYDOUBLECLK);

    with TRegistry.Create do

    begin

      CursorSchemes := TStringlist.Create;

      CurSchemeFiles := TStringlist.Create;

      RootKey := HKEY_LOCAL_MACHINE;

      If KeyExists(Key2) Then

      begin

        OpenKey(Key2,false);

        Result.Comment := ReadString('DriverDesc');

      end;

      If OpenKey(Key1, False) then

      begin

        GetValueNames(CursorSchemes);

        for i:= 0 to CursorSchemes.Count - 1 do

          CurSchemeFiles.Add(ReadString(CursorSchemes[i]));

        CloseKey;

      end;

      RootKey := HKEY_CURRENT_USER;

      If OpenKey(key3, False) then

      begin

        CursorScheme := ReadString('');

        CloseKey;

      end;

      Free;

    end;

  end;

end;

function GetUninstallInfo : TUninstallInfo;

const

  Key = '\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\';

var

  S : TStrings;

  I : Integer;

  J : Integer;

begin

  with TRegistry.Create do

  begin

    S := TStringlist.Create;

    J := 0;

    try

      RootKey:= HKEY_LOCAL_MACHINE;

      OpenKeyReadOnly(Key);

      GetKeyNames(S);

      Setlength(Result, S.Count);

      for I:= 0 to S.Count - 1 do

      begin

        If OpenKeyReadOnly(Key + S[I]) then

        If ValueExists('DisplayName') and ValueExists('UninstallString') then

        begin

          Result[J].RegProgramName:= S[I];

          Result[J].ProgramName:= ReadString('DisplayName');

          Result[J].UninstallPath:= ReadString('UninstallString');

          If ValueExists('Publisher') then

            Result[J].Publisher:= ReadString('Publisher');

          If ValueExists('URLInfoAbout') then

            Result[J].PublisherURL:= ReadString('URLInfoAbout');

          If ValueExists('DisplayVersion') then

            Result[J].Version:= ReadString('DisplayVersion');

          If ValueExists('HelpLink') then

            Result[J].HelpLink:= ReadString('HelpLink');

          If ValueExists('URLUpdateInfo') then

            Result[J].UpdateInfoURL:= ReadString('URLUpdateInfo');

          If ValueExists('RegCompany') then

            Result[J].RegCompany:= ReadString('RegCompany');

          If ValueExists('RegOwner') then

            Result[J].RegOwner:= ReadString('RegOwner');

          Inc(J);

        end;

      end;

    finally

      Free;

      S.Free;

      SetLength(Result, J);

    end;

  end;

end;


const

  // 用于描述系統(tǒng)文件夾的前綴常量

  SystemFolderNames : array[0..19] of string = (

    '程序',

    '我的文檔',

    '收藏夾',

    '啟動',

    '文檔',

    '發(fā)送到...',

    '開始',

    '桌面',

    '網(wǎng)上鄰居',

    '字體',

    'Templates',

    '開始(所有用戶)',

    '程序(所有用戶)',

    '啟動(所有用戶)',

    '桌面(所有用戶)',

    'Application Data',

    'Windows目錄',

    '系統(tǒng)目錄',

    'Program Files目錄',

    '臨時文件夾'

  );

  SystemFolderPaths : array [0..15] of Integer = (

    02,  (*開始->程序*)

    05,  (*我的文檔*)

    06,  (*收藏夾*)

    07,  (*開始->程序->啟動*)

    08,  (*開始->文檔*)

    09,  (*發(fā)送到...*)

    11,  (*開始菜單*)

    16,  (*桌面目錄*)

    19,  (*網(wǎng)上鄰居*)

    20,  (*字體*)

    21,  (*模板目錄*)

    22,  (*所有用戶的開始菜單*)

    23,  (*所有用戶的開始->程序*)

    24,  (*所有用戶的開始->程序-啟動*)

    25,  (*所有用戶的桌面*)

    26   (*Application Data*)

  );


function GetSystemFolders: TSysFolders;

var

  I : Integer;

  P : pItemIDList;

begin

  SetLength(Result, 20);

  try

    for I := 0 to 19 do

    begin

      Result[I].Name  := SystemFolderNames[I];

      SetLength(Result[I].Path, 255);

    end;

    for I := 0 to 15 do

    begin

      If SHGetSpecialFolderLocation(0, SystemFolderPaths[I], p) <> NOERROR then Continue;

      If p = nil then Continue;

      SHGetPathFromIDList(p, PChar(Result[I].Path));

    end;

    GetWindowsDirectory(PChar(Result[16].Path), 255);

    GetSystemDirectory(PChar(Result[17].Path), 255);

    with TRegistry.Create do

    begin

      RootKey := HKEY_LOCAL_MACHINE;

      If OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion', False) Then

        Result[18].Path := ReadString('ProgramFilesDir');

      CloseKey;

      Free;

    end;

    GetTempPath(255, PChar(Result[19].Path));

  except

    exit;

  end;

end;

function GetWindowInfo : TWindowInfo;

const

  Key9x = '\SOFTWARE\Microsoft\Windows\CurrentVersion';

  KeyNt = '\SOFTWARE\Microsoft\Windows NT\CurrentVersion';

var

  osVerInfo : TOSVersionInfo;

  sys: TSystemTime;

begin

  with TRegistry.Create do

  begin

    RootKey := HKEY_LOCAL_MACHINE;

    If Win32PlatForm = VER_PLATFORM_WIN32_NT then

      OpenKey(KeyNt, False)

      else OpenKey(Key9x, False);

    Result.RegisteredOwner := ReadString('RegisteredOwner');

    Result.RegisteredCompany := ReadString('RegisteredOrganization');

    Result.ProductID := ReadString('ProductID');

    Result.ProductName := ReadString('ProductName');

    Result.Version := ReadString('CurrentVersion');

    CloseKey;

    Free;

  end;

  osVerInfo.dwOSVersionInfoSize:= SizeOf(osVerInfo);

  GetVersionEx(osVerInfo);

  with osVerInfo do

  begin

    Result.CSDVersion :=  szCSDVersion;

    Result.BuildNumber := dwBuildNumber;

    Result.PlatformID :=  dwPlatformId;

    Result.MajorVersion := dwMajorVersion;

    Result.MinorVersion := dwMinorVersion;

  end;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精选在线播放| 国产91丝袜在线播放0| 欧美性猛片aaaaaaa做受| 一区二区三区精品在线观看| 日本韩国欧美一区| 亚洲已满18点击进入久久| 欧美三区在线视频| 青青草国产成人av片免费| 欧美zozo另类异族| 国产麻豆成人传媒免费观看| 国产精品三级视频| 91麻豆精品秘密| 亚洲成人激情自拍| 欧美xxxxxxxxx| 成人app软件下载大全免费| 亚洲免费看黄网站| 日韩欧美一级二级| 成人avav影音| 日本视频在线一区| 国产亚洲精品7777| 在线观看欧美日本| 麻豆精品一区二区综合av| 久久青草欧美一区二区三区| a在线播放不卡| 日韩国产一二三区| 国产精品乱码人人做人人爱| 欧美日韩午夜在线视频| 国产老肥熟一区二区三区| 亚洲人成伊人成综合网小说| 91精品欧美一区二区三区综合在| 国产精品一区二区三区四区| 亚洲女女做受ⅹxx高潮| 日韩亚洲欧美成人一区| 成人sese在线| 麻豆一区二区三区| 亚洲免费高清视频在线| 欧美成人精品1314www| 99精品视频中文字幕| 毛片av一区二区| 一区二区三区av电影| 久久一二三国产| 欧美亚洲一区三区| 粉嫩嫩av羞羞动漫久久久 | 国产成人在线视频网址| 亚洲国产成人高清精品| 国产人伦精品一区二区| 欧美一区欧美二区| 欧美综合亚洲图片综合区| 国产乱码字幕精品高清av| 亚洲成av人片一区二区三区| 国产精品久久久久久久蜜臀| 日韩欧美卡一卡二| 欧美日韩免费高清一区色橹橹| 国产成人综合在线播放| 久久精品国产精品青草| 午夜欧美在线一二页| 亚洲美女屁股眼交3| 欧美激情在线一区二区三区| 日韩一区二区三区四区| 在线观看日韩精品| 99久久精品免费观看| 国产精品一级黄| 美女看a上一区| 欧美aa在线视频| 五月天网站亚洲| 亚洲自拍偷拍九九九| 亚洲美腿欧美偷拍| 综合色天天鬼久久鬼色| 国产日韩欧美麻豆| 久久久久久日产精品| 精品欧美黑人一区二区三区| 91精品国产综合久久国产大片 | 大尺度一区二区| 国产精品一二三区在线| 国内精品久久久久影院色 | 亚洲国产综合色| 亚洲国产乱码最新视频| 亚洲黄色小视频| 亚洲综合免费观看高清完整版在线 | 国产美女一区二区| 国产乱码字幕精品高清av | 激情图片小说一区| 青青草国产精品97视觉盛宴| 久久国产精品第一页| 久久99深爱久久99精品| 国内精品国产三级国产a久久| 韩国午夜理伦三级不卡影院| 国产精品自拍网站| 国产一区二区导航在线播放| 国产精品99久久久久久久女警| 国产成人精品亚洲午夜麻豆| 国产91露脸合集magnet| 99re这里只有精品首页| 日本道在线观看一区二区| 欧美熟乱第一页| 欧美一区二区视频观看视频| 欧美va亚洲va| 中文字幕亚洲不卡| 亚洲一区二区三区国产| 日韩成人精品视频| 国产成人亚洲精品青草天美| www.在线成人| 欧美日韩国产系列| 久久综合色8888| 最新久久zyz资源站| 亚洲一区二区在线播放相泽| 蜜臀精品久久久久久蜜臀 | 亚洲欧美电影院| 免费成人性网站| 成人综合婷婷国产精品久久免费| 色综合网色综合| 欧美一区二区三区视频在线| 国产欧美综合在线观看第十页| 亚洲精品第1页| 精品一区二区在线免费观看| 91网站在线观看视频| 欧美一二三区在线观看| 中文字幕第一区二区| 亚洲午夜激情网站| 国产精品一区免费在线观看| 欧洲色大大久久| 国产午夜精品一区二区三区视频| 亚洲一区二区三区国产| 国产九色sp调教91| 欧美日韩在线播放一区| 国产亚洲一区字幕| 性久久久久久久| 成人国产精品免费观看动漫| 日韩视频在线你懂得| 亚洲人成伊人成综合网小说| 国产一区二区美女| 欧美欧美午夜aⅴ在线观看| 国产日韩视频一区二区三区| 日韩一区精品字幕| 99久久777色| 国产视频在线观看一区二区三区| 亚欧色一区w666天堂| av不卡免费电影| 久久精品欧美日韩| 麻豆精品视频在线观看| 欧美这里有精品| 国产精品国产三级国产专播品爱网| 奇米四色…亚洲| 在线视频欧美精品| 中文字幕亚洲区| 成人午夜免费av| 久久男人中文字幕资源站| 婷婷国产v国产偷v亚洲高清| 91原创在线视频| 国产精品欧美一级免费| 国内久久婷婷综合| 欧美成人高清电影在线| 亚洲电影一区二区| 91国模大尺度私拍在线视频| 中国色在线观看另类| 国产99久久久国产精品 | 久久久久久久综合日本| 免费亚洲电影在线| 精品视频一区 二区 三区| 亚洲码国产岛国毛片在线| 成人精品免费网站| 国产精品免费视频观看| 国产成人免费高清| 国产日韩欧美麻豆| 国产不卡视频一区二区三区| 国产欧美日韩不卡免费| 国产激情一区二区三区四区| 久久天堂av综合合色蜜桃网| 国产一区在线不卡| 国产日韩欧美不卡| 成人晚上爱看视频| 国产精品美女视频| 北条麻妃一区二区三区| 专区另类欧美日韩| 在线一区二区三区四区五区| 亚洲精品乱码久久久久久黑人| 91在线观看视频| 亚洲精品水蜜桃| 欧美日韩国产一区| 美国十次综合导航| 国产午夜久久久久| 成人app在线| 亚洲成人第一页| 日韩欧美国产综合在线一区二区三区| 精品亚洲国产成人av制服丝袜| 久久久久久97三级| 成人免费视频一区二区| 亚洲色欲色欲www| 欧美色精品天天在线观看视频| 亚洲国产另类精品专区| 日韩欧美色综合| 成人午夜伦理影院| 亚洲尤物视频在线| 日韩精品一区二| 成人免费电影视频| 一区二区三区国产| 欧美成人精品高清在线播放| 成人福利视频在线看| 午夜国产精品一区| 国产亚洲精品7777|