⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 Boland Builder C++ 6.0 com port select
💻 CPP
字号:
//---------------------------------------------------------------------------
// COM Port Lister and Status Checker     version 1.0   <Borland C++ Builder>
//
// 2003-07-08  (c) dllee.ktop.com.tw  by Lee,Dong-Liang<dllee@edirect168.com>
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//----------------------------------------------------------------------------//
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//----------------------------------------------------------------------------//
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  StringGrid1->Cells[0][0]="COM Port";
  StringGrid1->Cells[1][0]="Physical Location";
  StringGrid1->Cells[2][0]="In Use";

// [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM]
// "\\Device\\PTSerial0"="COM3"
// "\\Device\\Serial0"="COM1"

  TStringList *tmp=new TStringList;
  TRegistry *reg=new TRegistry;
  reg->RootKey=HKEY_LOCAL_MACHINE;

  if(reg->OpenKey("\\HARDWARE\\DEVICEMAP\\SERIALCOMM",false))
  {
    reg->GetValueNames(tmp);
    Label1->Caption="Total "+String(tmp->Count)+" COM Ports";
    for(int i=0;i<tmp->Count;i++)
    {
      AnsiString asCOM=reg->ReadString(tmp->Strings[i]);
      int iCOM=asCOM.SubString(4,1).ToIntDef(0);
      if(iCOM>0 && iCOM<=255)
      {
        StringGrid1->Cells[0][iCOM]=asCOM;
        StringGrid1->Cells[1][iCOM]=tmp->Strings[i];
      }
    }
    reg->CloseKey();
  }
  delete reg;
  delete tmp;
}
//----------------------------------------------------------------------------//
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  for(int i=1;i<256;i++)
  {
    if(StringGrid1->Cells[0][i].Length()>3)
    {
      HANDLE hComm;
      hComm = CreateFile(StringGrid1->Cells[0][i].c_str(),
           GENERIC_READ | GENERIC_WRITE, 0, 0,
           OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
      if (hComm == INVALID_HANDLE_VALUE)
      {
        StringGrid1->Cells[2][i]="in used";
      }
      else
      {
        StringGrid1->Cells[2][i]="is free";
        CloseHandle(hComm);
      }
    }
  }
  ShowMessage("Check Completed!");
}
//----------------------------------------------------------------------------//
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Close();
}
//----------------------------------------------------------------------------//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -