728x90
안녕하세요
로로봉입니다 : )
아래와 같이 장치관리자에 포트로 나타나는 시리얼 포트를 확인하는 방법을 알아보겠습니다.
Windows 키 + R 을 눌러 실행 창을 열어 레지스트리 편집기(regedit)를 실행해줍니다.
HKEY_LOCAL_MACHINE > HARDWARE > DEVICEMAP > SERIALCOMM 을 선택하면 다음과 같이 현재 잡혀있는 시리얼 포트를 확인 할 수 있습니다.
델파이에서는 윈도우 레지스트리를 접근할 수 있도록 TRegistry 클래스를 지원합니다.
다음과 같이 Registry Pas 파일과 Windows Pas 파일을 Use 해준 뒤 TRegistry 클래스를 사용하면 됩니다.
Windows Pas 파일의 경우 레지스트리 키 값인 HKEY_LOCAL_MACHINE 변수를 사용하기 위해 Use 해주어야 합니다.
uses
Registry, Windows;
다음 함수를 이용해 현재 잡혀있는 시리얼 포트 명칭을 스트링리스트로 받아올 수 있습니다.
function SearchComport:TStringList;
var
regTmp : TRegistry;
stTmp : TStringList;
iLoop : Integer;
begin
regTmp := TRegistry.Create;
stTmp := TStringList.Create;
Result := TStringList.Create;
try
regTmp.RootKey := HKEY_LOCAL_MACHINE;
regTmp.OpenKey('HARDWARE\DEVICEMAP\SERIALCOMM', False);
regTmp.GetValueNames(stTmp);
for iLoop := 0 to stTmp.Count-1 do
Result.Add(regTmp.ReadString(stTmp.Strings[iLoop]));
finally
regTmp.CloseKey;
regTmp.Free;
stTmp.Free;
end;
end;
윈도우에서 레지스트리를 접근하기 위해서는 프로그램의 관리자 권한이 설정되어야 합니다.
디버깅 시 GetVlueNames에 반환 값이 없는 것은 디버깅은 관리자 권한으로 실행되지 않기 때문입니다.
컴파일 후 프로그램을 실행할 때 관리자 권한으로 실행하면 정상적으로 레지스트리에 표시된 COM6이 반환되는 것을 볼 수 있습니다.
좋아요♥ + 구독 부탁드립니다 : )
728x90
반응형
'개발 정보 > 델파이' 카테고리의 다른 글
[Delphi] 델파이 Provider 및 ClientDataSet 사용 시 필요한 Dll 설치 (0) | 2020.11.26 |
---|---|
[Delphi] 델파이 Windows 시스템 폰트 불러오기 (0) | 2020.11.26 |
[Delphi] 델파이 MS Excel, Word 사용하기 (0) | 2020.11.26 |
[Delphi] 델파이 개발 툴 단축키 (0) | 2020.11.26 |
[Delphi] 델파이 커뮤니티 에디션(무료 버전) 설치하기 (2) | 2020.11.26 |
댓글