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

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

?? info.cpp

?? USB HID 控件,適用于DLEPHI及BCB
?? CPP
字號:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Info.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TInfoForm *InfoForm;
//---------------------------------------------------------------------------
__fastcall TInfoForm::TInfoForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

char *BoolToString(bool B)
{
  if(B)
    return("True");
  else
    return("False");
}
//---------------------------------------------------------------------------

void __fastcall TInfoForm::CollectBtnInfo(WORD Val, char *Title, char *TitleBar)
{
  int I;
  int Ret;
  WORD N;
  AnsiString UsagePageText;
  AnsiString UsageText;
  AnsiString LinkUsagePageText;
  AnsiString LinkUsageText;
  AnsiString S;
  // more than enough Caps structures to read
  THIDPButtonCaps BtnCaps[256];

  N = 256;
  Dev->ReportTypeParam = Val;
  Ret = Dev->GetButtonCaps(BtnCaps, N);
  if(Ret == HIDP_STATUS_SUCCESS)
  {
    InfoMemo->Lines->Add("");
    InfoMemo->Lines->Add(Title);
    InfoMemo->Lines->Add(TitleBar);
    for(I = 0; I < N; I++)
    {
      UsageAndUsagePageText(BtnCaps[I].UsagePage,     BtnCaps[I].Usage,     &UsagePageText,     &UsageText);
      UsageAndUsagePageText(BtnCaps[I].LinkUsagePage, BtnCaps[I].LinkUsage, &LinkUsagePageText, &LinkUsageText);
      InfoMemo->Lines->Add("");
      InfoMemo->Lines->Add(S.sprintf("%u)", I));
      InfoMemo->Lines->Add(S.sprintf("UsagePage:         %s (0x%04X)", UsagePageText, BtnCaps[I].UsagePage));
      InfoMemo->Lines->Add(S.sprintf("ReportID:          %u",          BtnCaps[I].ReportID));
      InfoMemo->Lines->Add(S.sprintf("IsAlias:           %s",          BoolToString(BtnCaps[I].IsAlias)));
      InfoMemo->Lines->Add(S.sprintf("BitField:          %u",          BtnCaps[I].BitField));
      InfoMemo->Lines->Add(S.sprintf("LinkCollection:    %u",          BtnCaps[I].LinkCollection));
      InfoMemo->Lines->Add(S.sprintf("LinkUsage:         %s (0x%04X)", LinkUsageText, BtnCaps[I].LinkUsage));
      InfoMemo->Lines->Add(S.sprintf("LinkUsagePage:     %s (0x%04X)", LinkUsagePageText, BtnCaps[I].LinkUsagePage));
      InfoMemo->Lines->Add(S.sprintf("IsRange:           %s",          BoolToString(BtnCaps[I].IsRange)));
      InfoMemo->Lines->Add(S.sprintf("IsStringRange:     %s",          BoolToString(BtnCaps[I].IsStringRange)));
      InfoMemo->Lines->Add(S.sprintf("IsDesignatorRange: %s",          BoolToString(BtnCaps[I].IsDesignatorRange)));
      InfoMemo->Lines->Add(S.sprintf("IsAbsolute:        %s",          BoolToString(BtnCaps[I].IsAbsolute)));
      if(BtnCaps[I].IsRange)
      {
        InfoMemo->Lines->Add(S.sprintf("UsageMin:      %d UsageMax:      %d", BtnCaps[I].UsageMin,      BtnCaps[I].UsageMax));
        InfoMemo->Lines->Add(S.sprintf("StringMin:     %d StringMax:     %d", BtnCaps[I].StringMin,     BtnCaps[I].StringMax));
        InfoMemo->Lines->Add(S.sprintf("DesignatorMin: %d DesignatorMax: %d", BtnCaps[I].DesignatorMin, BtnCaps[I].DesignatorMax));
        InfoMemo->Lines->Add(S.sprintf("DataIndexMin:  %d DataIndexMax:  %d", BtnCaps[I].DataIndexMin,  BtnCaps[I].DataIndexMax));
      }
      else
      {
        InfoMemo->Lines->Add(S.sprintf("Usage:             %s (0x%04X)", UsageText, BtnCaps[I].Usage));
        InfoMemo->Lines->Add(S.sprintf("StringIndex:       %u",          BtnCaps[I].StringIndex));
        InfoMemo->Lines->Add(S.sprintf("DesignatorIndex:   %u",          BtnCaps[I].DesignatorIndex));
        InfoMemo->Lines->Add(S.sprintf("DataIndex:         %u",          BtnCaps[I].DataIndex));
      }
    }
  }
}
//---------------------------------------------------------------------------

void __fastcall TInfoForm::CollectValueInfo(WORD Val, char *Title, char *TitleBar)
{
  int I;
  int Ret;
  WORD N;
  AnsiString UsagePageText;
  AnsiString UsageText;
  AnsiString LinkUsagePageText;
  AnsiString LinkUsageText;
  AnsiString S;
  // more than enough Caps structures to read
  THIDPValueCaps ValCaps[256];

  N = 256;
  Dev->ReportTypeParam = Val;
  Ret = Dev->GetValueCaps(ValCaps, N);
  if(Ret == HIDP_STATUS_SUCCESS)
  {
    InfoMemo->Lines->Add("");
    InfoMemo->Lines->Add(Title);
    InfoMemo->Lines->Add(TitleBar);
    for(I = 0; I < N; I++)
    {
      UsageAndUsagePageText(ValCaps[I].UsagePage,     ValCaps[I].Usage,     &UsagePageText,     &UsageText);
      UsageAndUsagePageText(ValCaps[I].LinkUsagePage, ValCaps[I].LinkUsage, &LinkUsagePageText, &LinkUsageText);
      InfoMemo->Lines->Add("");
      InfoMemo->Lines->Add(S.sprintf("%u)", I));
      InfoMemo->Lines->Add(S.sprintf("UsagePage:         %s (0x%04X)", UsagePageText, ValCaps[I].UsagePage));
      InfoMemo->Lines->Add(S.sprintf("ReportID:          %u",          ValCaps[I].ReportID));
      InfoMemo->Lines->Add(S.sprintf("IsAlias:           %s",          BoolToString(ValCaps[I].IsAlias)));
      InfoMemo->Lines->Add(S.sprintf("BitField:          %u",          ValCaps[I].BitField));
      InfoMemo->Lines->Add(S.sprintf("LinkCollection:    %u",          ValCaps[I].LinkCollection));
      InfoMemo->Lines->Add(S.sprintf("LinkUsage:         %s (0x%04X)", LinkUsageText, ValCaps[I].LinkUsage));
      InfoMemo->Lines->Add(S.sprintf("LinkUsagePage:     %s (0x%04X)", LinkUsagePageText, ValCaps[I].LinkUsagePage));
      InfoMemo->Lines->Add(S.sprintf("IsRange:           %s",          BoolToString(ValCaps[I].IsRange)));
      InfoMemo->Lines->Add(S.sprintf("IsStringRange:     %s",          BoolToString(ValCaps[I].IsStringRange)));
      InfoMemo->Lines->Add(S.sprintf("IsDesignatorRange: %s",          BoolToString(ValCaps[I].IsDesignatorRange)));
      InfoMemo->Lines->Add(S.sprintf("IsAbsolute:        %s",          BoolToString(ValCaps[I].IsAbsolute)));
      InfoMemo->Lines->Add(S.sprintf("HasNull:           %s",          BoolToString(ValCaps[I].HasNull)));
      InfoMemo->Lines->Add(S.sprintf("BitSize:           %u",          ValCaps[I].BitSize));
      InfoMemo->Lines->Add(S.sprintf("ReportCount:       %u",          ValCaps[I].ReportCount));
      InfoMemo->Lines->Add(S.sprintf("UnitsExp:          %u",          ValCaps[I].UnitsExp));
      InfoMemo->Lines->Add(S.sprintf("Units:             %u",          ValCaps[I].Units));
      InfoMemo->Lines->Add(S.sprintf("LogicalMin:        %d",          ValCaps[I].LogicalMin));
      InfoMemo->Lines->Add(S.sprintf("LogicalMax:        %d",          ValCaps[I].LogicalMax));
      InfoMemo->Lines->Add(S.sprintf("PhysicalMin:       %d",          ValCaps[I].PhysicalMin));
      InfoMemo->Lines->Add(S.sprintf("PhysicalMax:       %d",          ValCaps[I].PhysicalMax));
      if(ValCaps[I].IsRange)
      {
        InfoMemo->Lines->Add(S.sprintf("UsageMin:      %d UsageMax:      %d", ValCaps[I].UsageMin,      ValCaps[I].UsageMax));
        InfoMemo->Lines->Add(S.sprintf("StringMin:     %d StringMax:     %d", ValCaps[I].StringMin,     ValCaps[I].StringMax));
        InfoMemo->Lines->Add(S.sprintf("DesignatorMin: %d DesignatorMax: %d", ValCaps[I].DesignatorMin, ValCaps[I].DesignatorMax));
        InfoMemo->Lines->Add(S.sprintf("DataIndexMin:  %d DataIndexMax:  %d", ValCaps[I].DataIndexMin,  ValCaps[I].DataIndexMax));
      }
      else
      {
        InfoMemo->Lines->Add(S.sprintf("Usage:             %s (0x%04X)", UsageText, ValCaps[I].Usage));
        InfoMemo->Lines->Add(S.sprintf("StringIndex:       %u",          ValCaps[I].StringIndex));
        InfoMemo->Lines->Add(S.sprintf("DesignatorIndex:   %u",          ValCaps[I].DesignatorIndex));
        InfoMemo->Lines->Add(S.sprintf("DataIndex:         %u",          ValCaps[I].DataIndex));
      }
    }
  }
}
//---------------------------------------------------------------------------

void __fastcall TInfoForm::FormShow(TObject *Sender)
{
  AnsiString S;

  InfoMemo->Lines->Clear();
  if(Dev->VendorName != NULL)
    InfoMemo->Lines->Add(S.sprintf("\"%S\" \"%S\" VID=0x%04X PID=0x%04X",
      Dev->VendorName, Dev->ProductName, Dev->Attributes.VendorID, Dev->Attributes.ProductID));
  else
    InfoMemo->Lines->Add(S.sprintf("VID=0x%04X PID=0x%04X",
      Dev->Attributes.VendorID, Dev->Attributes.ProductID));
  if(Dev->SerialNumber != NULL)
    InfoMemo->Lines->Add(S.sprintf("SerialNumber=%s", Dev->SerialNumber));
  if(Dev->Caps.InputReportByteLength > 0)
    InfoMemo->Lines->Add(S.sprintf("Input Report Size=%d", Dev->Caps.InputReportByteLength-1));
  else
    InfoMemo->Lines->Add("Input Report Size=0");
  if(Dev->Caps.OutputReportByteLength > 0)
    InfoMemo->Lines->Add(S.sprintf("Output Report Size=%d", Dev->Caps.OutputReportByteLength-1));
  else
    InfoMemo->Lines->Add("Output Report Size=0");
  if(Dev->Caps.FeatureReportByteLength > 0)
    InfoMemo->Lines->Add(S.sprintf("Feature Report Size=%d", Dev->Caps.FeatureReportByteLength-1));
  else
    InfoMemo->Lines->Add("Feature Report Size=0");
  CollectBtnInfo(HidP_Input,     "Button Input",   "============");
  CollectBtnInfo(HidP_Output,    "Button Output",  "=============");
  CollectBtnInfo(HidP_Feature,   "Button Feature", "==============");
  CollectValueInfo(HidP_Input,   "Value Input",    "===========");
  CollectValueInfo(HidP_Output,  "Value Output",   "============");
  CollectValueInfo(HidP_Feature, "Value Feature",  "=============");
}
//---------------------------------------------------------------------------

void __fastcall TInfoForm::SaveClick(TObject *Sender)
{
  if(SaveDialog->Execute())
    InfoMemo->Lines->SaveToFile(SaveDialog->FileName);
}
//---------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲一区二区三区在线 | 欧美日韩一区不卡| 欧美日韩国产一区| 久久精品无码一区二区三区| 亚洲va欧美va国产va天堂影院| 国产一区二区三区| 欧美日韩午夜影院| 亚洲精品国产成人久久av盗摄| 九九国产精品视频| 国产毛片一区二区| 国产乱色国产精品免费视频| 欧美偷拍一区二区| 国产精品久久久久久久久免费丝袜| 久久精品国产99| 欧美无砖专区一中文字| 亚洲人xxxx| 大尺度一区二区| 久久亚洲欧美国产精品乐播| 美女爽到高潮91| 欧美日本视频在线| 亚洲制服丝袜av| 99国产精品久久久久久久久久久| 国产日韩欧美a| 国产中文字幕精品| 精品国精品自拍自在线| 免费精品视频最新在线| 欧美撒尿777hd撒尿| 亚洲综合免费观看高清完整版在线| www.亚洲精品| 国产精品久久久久aaaa| 成人美女视频在线看| 久久机这里只有精品| 免费日本视频一区| 欧美另类高清zo欧美| 亚洲一区二区av在线| 欧美性猛片aaaaaaa做受| 一区二区三区波多野结衣在线观看 | 99re热视频精品| 最新久久zyz资源站| 99精品视频中文字幕| 亚洲欧美日本韩国| 在线视频一区二区三区| 亚洲18色成人| 91精品国产免费| 国产一区二区三区免费观看| 国产日韩欧美精品综合| 国产99久久久久久免费看农村| 亚洲综合自拍偷拍| 91精品国产欧美一区二区18 | 1区2区3区国产精品| 色视频一区二区| 手机精品视频在线观看| 日韩一区二区三区在线| 国内精品免费在线观看| 欧美韩国日本一区| 在线精品国精品国产尤物884a| 亚洲成人免费视频| xvideos.蜜桃一区二区| 不卡一区二区中文字幕| 一二三区精品视频| 日韩精品一区二区三区四区| 国产黄色91视频| 一区二区三区在线影院| 日韩欧美专区在线| www.日韩精品| 日韩电影免费在线看| 国产日韩欧美高清| 欧美欧美欧美欧美| 韩国成人在线视频| 亚洲一区二区三区免费视频| 精品国产91久久久久久久妲己| 99视频一区二区三区| 午夜不卡av在线| 国产精品视频在线看| 欧美一区二区三区喷汁尤物| 成人一道本在线| 日韩精品色哟哟| 亚洲欧美日韩精品久久久久| 日韩欧美123| 欧洲精品一区二区| 国产成人亚洲精品狼色在线| 一区二区三区欧美久久| 精品福利一区二区三区免费视频| 91麻豆精品一区二区三区| 老司机午夜精品| 一个色在线综合| 中文成人综合网| 日韩亚洲欧美一区二区三区| 色综合久久久久网| 国产69精品久久99不卡| 婷婷久久综合九色国产成人| 中文字幕免费不卡在线| 精品国产百合女同互慰| 欧美年轻男男videosbes| 91视频一区二区三区| 国产不卡视频一区| 精品影院一区二区久久久| 亚洲成人精品一区| 一区二区三区日韩欧美| 国产精品久久久久影视| 2023国产精品自拍| 日韩免费一区二区| 制服丝袜日韩国产| 欧美三电影在线| 欧美性三三影院| 色屁屁一区二区| 91免费版在线| 色婷婷久久一区二区三区麻豆| 成人h动漫精品一区二区| 成人一区二区三区在线观看| 国产成人免费视频一区| 国产精品1024| 国产成人午夜视频| 国产成人精品影院| 国产91精品免费| 不卡电影免费在线播放一区| 成人免费高清视频| 成人av电影在线| 91一区一区三区| 色婷婷久久久亚洲一区二区三区| 91麻豆蜜桃一区二区三区| av一本久道久久综合久久鬼色| www.色精品| 在线观看欧美黄色| 91精品国产综合久久久久久| 日韩午夜精品电影| 欧美电视剧在线观看完整版| 国产精品毛片久久久久久| 成人免费一区二区三区在线观看| 亚洲女同ⅹxx女同tv| 亚洲一区二区美女| 天天综合网天天综合色| 久久国产精品72免费观看| 国产精品1024久久| 色噜噜狠狠色综合中国| 6080日韩午夜伦伦午夜伦| 欧美不卡在线视频| 中文字幕一区二区三| 亚洲国产欧美在线| 久久国产精品99精品国产| 国产69精品久久777的优势| 91玉足脚交白嫩脚丫在线播放| 欧美色成人综合| 精品卡一卡二卡三卡四在线| 国产精品久久久久久一区二区三区| 亚洲三级久久久| 日韩国产精品大片| 国产 欧美在线| 欧美网站一区二区| 久久久久久电影| 亚洲国产一区二区三区| 国产一区在线观看视频| 一本一道综合狠狠老| 日韩亚洲欧美综合| 亚洲人快播电影网| 韩国成人在线视频| 欧美性xxxxx极品少妇| 久久精品免费在线观看| 亚洲一区二区三区自拍| 国产精品一级片在线观看| 欧美色综合影院| 欧美激情自拍偷拍| 麻豆免费看一区二区三区| 99国产一区二区三精品乱码| 欧美videofree性高清杂交| 亚洲欧美一区二区三区国产精品 | 一区二区三区不卡在线观看| 国内成人免费视频| 欧美精品在线视频| 亚洲欧美日韩一区| 国产精品一级片在线观看| 欧美精品久久99| 亚洲最新在线观看| 成人av网站在线观看免费| 精品国产91乱码一区二区三区| 午夜视频一区二区三区| 91一区在线观看| 国产精品麻豆久久久| 国产一区二区在线免费观看| 欧美一区二区三区免费观看视频 | 久久久久久久免费视频了| 亚洲最大的成人av| 99re成人精品视频| 日本一二三不卡| 国产成人av一区二区三区在线| 777精品伊人久久久久大香线蕉| 亚洲黄色av一区| 97久久精品人人做人人爽50路| 欧美极品另类videosde| 国产在线麻豆精品观看| 精品国产乱子伦一区| 麻豆精品视频在线观看视频| 欧美一区永久视频免费观看| 香蕉成人伊视频在线观看| 色菇凉天天综合网| 一区2区3区在线看| 欧美性受xxxx| 亚洲成a人片在线不卡一二三区| 色综合视频一区二区三区高清| 亚洲人精品一区|