C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[444] Comport 찾기....
박영목 [gsbsoft] 9426 읽음    2004-10-16 13:09
사용방법

2개의 파일을  현재 작업 폴더에 복사하시고

Project 메뉴에서 Add To Project를 선택해서 uFindComport.pas를 추가합니다.

그리고 GetcomportList를 사용하고자 하는 *.cpp 에서  상단에   #include "uFindComport.hpp" 넣어 주시고

ComboBox나 ListBox를 하나 추가 하시고....

GetComportList( ListBox1->Items, true ); --> 사용가능한 것인지 Check하여 가능한 것만 추출하고...
GetCcomportList( ListBox1->Items );       --> Windows에 등록된 모든 Comport를 추출합니다.

이 자료의 출처는 www.delphi.co.kr의 딥란의 최용일 님께서 올린 것입니다.

이런 것이 devpia에도 있는데... 무엇이 좀 복잡해 보여서... 또 빌더로 바꾸어야 하니...

그러다 pascal로 된 이것을 찾게 되었습니다.  유용하게 사용하시길....

아래는 소스인데... 파일 안받고 그냥 차고할실 분을 위해....

function ValidateComPort(comport : PChar): Boolean;
// COM포트가 사용가능한지 알아낸다.
var
    PortHandle: THandle;
begin
    Result := False;
    PortHandle := CreateFile(comport, GENERIC_READ or GENERIC_WRITE, 0, nil,
        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
    if (PortHandle <> INVALID_HANDLE_VALUE) then
    begin
        Result := True;
        CloseHandle(PortHandle);
    end;
end;

procedure GetComportList(List: TStrings; OnlyAvail: Boolean = False);
// 현재 인스톨된 COM포트 목록을 구한다.
var
    RegFile: TRegistry;
    DeviceList: TStrings;
    DeviceCount: Integer;
    CanAddPort: Boolean;
    CurrentPort: string;
begin
    if Assigned(List) then
    begin
        RegFile := TRegistry.Create;
        try
            RegFile.RootKey := HKEY_LOCAL_MACHINE;
            RegFile.OpenKeyReadOnly('hardware\devicemap\serialcomm');
            DeviceList := TStringList.Create;
            try
                RegFile.GetValueNames(DeviceList);
                List.Clear;
                for DeviceCount := 0 to DeviceList.Count - 1 do
                begin
                    CurrentPort := RegFile.ReadString(DeviceList.Strings[DeviceCount]);
                    if OnlyAvail then
                        CanAddPort := Validatecomport(PChar(CurrentPort))
                    else
                        CanAddPort := True;
                    if CanAddPort then
                        List.Add(CurrentPort);
                end;
            finally
                DeviceList.Free;
            end;
            RegFile.CloseKey;
        finally
            RegFile.Free;
        end;
    end;
end;

+ -

관련 글 리스트
444 Comport 찾기.... 박영목 9426 2004/10/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.