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

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

?? main.cpp

?? USB HID 控件,適用于DLEPHI及BCB
?? CPP
字號:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
void __stdcall OvDummy(DWORD dwErrorCode, DWORD dwCount, POverlapped lpOvl)
{
}
//---------------------------------------------------------------------------
__fastcall TDevInThread::TDevInThread(TJvHidDevice *MyDev) : TThread(False)
{

  // Initialize variables.
  Dev = MyDev;
}
//---------------------------------------------------------------------------
void __fastcall TDevInThread::HandleReport(void)
{

  // Show input report.
  MainForm->ShowInputReport();
}
//---------------------------------------------------------------------------
void __fastcall TDevInThread::Execute(void)
{
  DWORD dwRetVal;


  dwRetVal = WAIT_IO_COMPLETION;
  while (!Terminated) {
    // Read input report.
    if (!Dev->ReadFileEx(&Report, Dev->Caps.InputReportByteLength, &OvDummy))
      break;
    // Wait read to complete.
    do {
      dwRetVal = SleepEx(100, true);
    } while (!Terminated && (dwRetVal != WAIT_IO_COMPLETION));
    // Handle input report.
    if (!Terminated) {
      dwReportLen = Dev->HidOverlappedReadResult;
      Synchronize(HandleReport);
    }
  }

  // Cancel pending read.
  if (dwRetVal != WAIT_IO_COMPLETION)
    Dev->CancelIO(omhRead);
}
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner):TForm(Owner)
{

  // Initialize variables.
  memset(&OutReport, 0, sizeof(OutReport));
  dwOutReportLen = 0;
  dwOutReportNum = 0;
  bRunning = 0;
  wInRepSize = 0;
  dwInRepCount = 0;
  dwInRepTotal = 0;
  dwInRepTime = 0;
  wOutRepSize = 0;
  dwOutRepCount = 0;
  dwOutRepTotal = 0;
  dwOutRepTime = 0;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::HidCtlDeviceChange(TObject *Sender)
{

  // Simulate stop button click.
  StopButtonClick(this);

  if (DevList == NULL) {
    // Create device list.
    DevList = new TList();
  } else {
    // Free all device list entries.
    for (int i = 0; i < DevList->Count; i++)
      ((TJvHidDevice *)DevList->Items[i])->Free();
    // Clear device list.
    DevList->Clear();
  }

  // Clear device list box.
  DevListBox->Clear();

  // Enumerate all USB HID devices.
  HidCtl->Enumerate();
}
//---------------------------------------------------------------------------
bool __fastcall TMainForm::HidCtlEnumerate(TJvHidDevice *HidDev, const int Idx)
{

  // Add device to device list box.
  AnsiString str;
  DevListBox->Items->Add(str.sprintf("VID=%04X PID=%04X", HidDev->Attributes.VendorID, HidDev->Attributes.ProductID));

  // Checkout device.
  TJvHidDevice *Dev;
  HidCtl->CheckOutByIndex(Dev, Idx);

  // Add device to device list.
  DevList->Add(Dev);

  return true;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::DevListBoxClick(TObject *Sender)
{

  if (DevListBox->ItemIndex != -1) {
    // Get device from device list.
    TJvHidDevice *Dev = (TJvHidDevice *)DevList->Items[DevListBox->ItemIndex];
    // Get device info.
    wInRepSize = Dev->Caps.InputReportByteLength;
    if (wInRepSize)
      wInRepSize--;
    wOutRepSize = Dev->Caps.OutputReportByteLength;
    if (wOutRepSize)
      wOutRepSize--;
    // Show report info.
    InRepSizeEdit->Text = IntToStr(wInRepSize);
    InRepCountEdit->Text = "";
    InRepSpeedEdit->Text = "";
    OutRepSizeEdit->Text = IntToStr(wOutRepSize);
    OutRepCountEdit->Text = "";
    OutRepSpeedEdit->Text = "";
  }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::StartButtonClick(TObject *Sender)
{

  if (DevListBox->ItemIndex == -1) {
    Application->MessageBox("You must select an USB HID device", "Error",
                            MB_ICONERROR | MB_OK);
  } else {
    // Enable measure timer.
    dwInRepCount = 0;
    dwInRepTotal = 0;
    dwInRepTime = time(NULL);
    dwOutRepCount = 0;
    dwOutRepTotal = 0;
    dwOutRepTime = time(NULL);
    MeasureTimer->Enabled = true;
    // Create device input thread.
    DevInThread = new TDevInThread((TJvHidDevice *)DevList->Items[DevListBox->ItemIndex]);
    // Enable device output timer.
    if (wOutRepSize > 0) {
      dwOutReportNum = 0;
      OutRepTimer->Interval = StrToIntDef(OutRepIntervalEdit->Text, 100);
      OutRepIntervalEdit->Text = IntToStr(OutRepTimer->Interval);
      OutRepTimer->Enabled = true;
    }
    // Enable and disable controls.
    DevListBox->Enabled = false;
    OutRepIntervalEdit->Enabled = false;
    StartButton->Enabled = false;
    StopButton->Enabled = true;
    // Set running flag.
    bRunning = 1;
    // Set focus to log.
    LogRichEdit->SelAttributes->Color = clBlack;
    LogRichEdit->Lines->Append("----------------------------------------");
    LogRichEdit->SetFocus();
  }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::StopButtonClick(TObject *Sender)
{

  if (bRunning) {
    // Clear running flag.
    bRunning = 0;
    // Enable and disable controls.
    DevListBox->Enabled = true;
    OutRepIntervalEdit->Enabled = true;
    StartButton->Enabled = true;
    StopButton->Enabled = false;
    // Disable device output timer.
    OutRepTimer->Enabled = false;
    // Terminate device input thread.
    DevInThread->Terminate();
    DevInThread->WaitFor();
    delete DevInThread;
    // Disable measure timer.
    MeasureTimer->Enabled = false;
  }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClearButtonClick(TObject *Sender)
{

  // Clear log.
  LogRichEdit->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::MeasureTimerTimer(TObject *Sender)
{
  unsigned long dwRepTime, dwSpeed;


  // Update input and output report count.
  dwInRepTotal += dwInRepCount;
  InRepCountEdit->Text = IntToStr(dwInRepTotal);
  dwOutRepTotal += dwOutRepCount;
  OutRepCountEdit->Text = IntToStr(dwOutRepTotal);

  // Update input and output report speed.
  dwRepTime = time(NULL);
  if (dwRepTime > dwInRepTime) {
    dwSpeed = (wInRepSize * dwInRepCount) / (dwRepTime - dwInRepTime);
    InRepSpeedEdit->Text = IntToStr(dwSpeed);
  }
  if (dwRepTime > dwOutRepTime) {
    dwSpeed = (wOutRepSize * dwOutRepCount) / (dwRepTime - dwOutRepTime);
    OutRepSpeedEdit->Text = IntToStr(dwSpeed);
  }

  // Reset measure counters.
  dwInRepTime = dwRepTime;
  dwInRepCount = 0;
  dwOutRepTime = dwRepTime;
  dwOutRepCount = 0;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::OutRepTimerTimer(TObject *Sender)
{

  // Build output report.
  ((unsigned long *)OutReport.bData)[0] = dwOutReportNum;
  dwOutReportNum++;

  // Write output report.
  TJvHidDevice *Dev = (TJvHidDevice *)DevList->Items[DevListBox->ItemIndex];
  Dev->WriteFile(&OutReport, wOutRepSize + 1, (unsigned int)dwOutReportLen);

  // Show output report.
  ShowOutputReport();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormDestroy(TObject *Sender)
{

  // Simulate stop button click.
  StopButtonClick(this);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ShowInputReport(void)
{

  // Show input report.
  AnsiString str;
  str = "< " + IntToHex(DevInThread->Report.bId, 2) + " ";
  for (DWORD i = 0; i < DevInThread->dwReportLen; i++)
    str += IntToHex(DevInThread->Report.bData[i], 2);
  LogRichEdit->SelAttributes->Color = clBlue;
  LogRichEdit->Lines->Append(str);

  // Increase input report count.
  dwInRepCount++;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ShowOutputReport(void)
{

  // Show output report.
  AnsiString str;
  str = "> " + IntToHex(OutReport.bId, 2) + " ";
  for (DWORD i = 0; i < dwOutReportLen; i++)
    str += IntToHex(OutReport.bData[i], 2);
  LogRichEdit->SelAttributes->Color = clRed;
  LogRichEdit->Lines->Append(str);

  // Increase output report count.
  dwOutRepCount++;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::OutRepIntervalEditChange(TObject *Sender)
{
  int iInterval;


  iInterval = StrToIntDef(OutRepIntervalEdit->Text, 0);
  if (iInterval <= 0)
    OutRepIntervalEdit->Text = "";
}
//---------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产99久久久精品| yourporn久久国产精品| 久久99久久精品欧美| 成人免费看的视频| 欧美放荡的少妇| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产成人精品亚洲777人妖| 91极品视觉盛宴| 久久精品一区蜜桃臀影院| 亚洲国产一区二区在线播放| 国产在线国偷精品产拍免费yy | 韩国毛片一区二区三区| 91麻豆蜜桃一区二区三区| 欧美成人三级在线| 国产精品嫩草99a| 欧美成人官网二区| 国产综合久久久久影院| 欧美在线免费观看视频| 国产欧美一区二区三区沐欲| 亚洲线精品一区二区三区八戒| 国产丶欧美丶日本不卡视频| 欧美裸体bbwbbwbbw| 亚洲欧美激情插| 成人免费高清视频在线观看| 精品国产凹凸成av人网站| 午夜视频久久久久久| 91福利在线观看| 亚洲日本一区二区三区| av日韩在线网站| 欧美国产视频在线| 国内成人自拍视频| 精品奇米国产一区二区三区| 青青草精品视频| 欧美日精品一区视频| 国产精品每日更新在线播放网址| 国产曰批免费观看久久久| 欧美videofree性高清杂交| 日韩精品色哟哟| 欧美美女喷水视频| 日韩经典中文字幕一区| 91麻豆精品国产自产在线观看一区| 亚洲国产精品综合小说图片区| 色视频欧美一区二区三区| 亚洲精品视频在线看| 欧美私模裸体表演在线观看| 亚洲成av人片观看| 欧美一级片在线看| 久久成人免费电影| 国产欧美中文在线| 91在线观看一区二区| 一区二区三区中文字幕| 在线观看欧美日本| 日韩av一区二区在线影视| 欧美一区二区美女| 国产精品一区在线观看乱码| 中文字幕在线不卡| 91国产免费看| 日韩不卡一区二区三区| 久久综合给合久久狠狠狠97色69| 激情都市一区二区| 国产精品久久久久久福利一牛影视| 91在线国产观看| 午夜久久久久久久久久一区二区| 欧美大肚乱孕交hd孕妇| 国产传媒欧美日韩成人| 亚洲精品国产第一综合99久久 | 成人aaaa免费全部观看| 亚洲午夜久久久久久久久电影院 | 成人性生交大合| 国产成人av影院| 国产精品国产馆在线真实露脸 | 亚洲综合999| 欧美一区二区三区思思人 | 亚洲午夜精品久久久久久久久| 337p亚洲精品色噜噜噜| 国产精品一色哟哟哟| 亚洲美女在线一区| 日韩精品一区二区三区swag | 国产精品丝袜久久久久久app| 波多野结衣中文字幕一区二区三区| 亚洲激情成人在线| www国产成人| 欧美亚洲综合在线| 久久99精品国产91久久来源| 一区二区中文字幕在线| 欧美一级黄色大片| 91福利视频网站| 国产成人综合自拍| 日本成人在线不卡视频| 亚洲天堂网中文字| 欧美国产激情二区三区| 日韩欧美国产三级| 欧美色爱综合网| 99国产精品99久久久久久| 精品一二三四在线| 日本伊人精品一区二区三区观看方式| 国产精品午夜春色av| 欧美电影精品一区二区| 欧美欧美午夜aⅴ在线观看| 99久久久精品| 国产成人在线视频播放| 美女久久久精品| 午夜精品久久久久久久久| 尤物av一区二区| 亚洲国产精品ⅴa在线观看| 精品免费99久久| 日韩亚洲国产中文字幕欧美| 欧美三区在线视频| 91精品91久久久中77777| 91在线看国产| 91麻豆免费在线观看| 成人av免费在线观看| 国产激情视频一区二区三区欧美| 久久爱www久久做| 青青草国产精品亚洲专区无| 三级欧美韩日大片在线看| 亚洲综合精品自拍| 亚洲免费av高清| 亚洲综合精品自拍| 一区二区三区欧美| 一区二区不卡在线视频 午夜欧美不卡在 | 精品在线免费观看| 日本欧美加勒比视频| 五月婷婷另类国产| 男女男精品视频网| 丝袜亚洲精品中文字幕一区| 日韩精品乱码av一区二区| 蜜桃av一区二区三区| 日韩中文字幕亚洲一区二区va在线| 亚洲国产精品一区二区www| 亚洲线精品一区二区三区八戒| 亚洲精品欧美二区三区中文字幕| 亚洲精品免费在线播放| 亚洲午夜久久久久久久久电影院 | 色婷婷亚洲婷婷| 欧美优质美女网站| 欧美猛男超大videosgay| 在线不卡欧美精品一区二区三区| 欧美美女一区二区在线观看| 欧美一级在线免费| 国产欧美中文在线| 亚洲精品视频在线| 日本美女一区二区| 国产麻豆成人传媒免费观看| 在线观看三级视频欧美| 91福利视频在线| 国产一区二区不卡| 成人av电影在线| 在线观看亚洲专区| 日韩欧美自拍偷拍| 中文成人综合网| 亚洲一区二区三区视频在线播放| 亚州成人在线电影| 国产精品一区二区在线观看不卡| 成人av免费网站| 欧美一区二区视频观看视频| 久久精品日产第一区二区三区高清版 | 午夜精品久久久久久久99水蜜桃| 狠狠色丁香婷综合久久| 91麻豆自制传媒国产之光| 欧美一二区视频| 中文字幕视频一区二区三区久| 日日摸夜夜添夜夜添亚洲女人| 国产精品白丝jk黑袜喷水| 欧美日韩国产一级| 中文乱码免费一区二区| 蜜臀av国产精品久久久久| 成人动漫一区二区在线| 久久精品一区蜜桃臀影院| 国产精品88av| 欧美在线啊v一区| 2021久久国产精品不只是精品| 亚洲欧美一区二区久久| 久草这里只有精品视频| 在线观看国产日韩| 国产精品久久久久一区二区三区共| 日本美女视频一区二区| 色婷婷av一区二区| 国产精品久久久久久久久动漫| 麻豆精品一区二区| 欧美日韩一区二区三区四区 | 久久久久久久电影| 日韩不卡一区二区三区| 色久优优欧美色久优优| 久久久精品一品道一区| 奇米精品一区二区三区在线观看| 9i看片成人免费高清| 精品国产一区a| 免费人成精品欧美精品| 欧美日韩一二区| 亚洲自拍都市欧美小说| 91在线porny国产在线看| 欧美极品少妇xxxxⅹ高跟鞋| 久久国内精品自在自线400部| 欧美色综合天天久久综合精品| 亚洲精品国产a久久久久久| 91网站最新网址| 亚洲视频免费观看| 99国产精品一区| 最新国产成人在线观看|