델파이 USB 인식
USB를 꽂거나 뺏을 때 이벤트 발생
해당 이벤트가 발생하면 처리하는 함수 구현 방법
1. 이벤트 발생 시 파라미터로 받을 데이터 타입 선언
type
TWMDeviceChange = packed record
Msg : Cardinal;
Event: Word;
dwData: Longword;
Result : LongInt;
end;
2. 메인 Form 클래스 안에 함수 선언
TfrmMain = class(TForm)
public
procedure WMDeviceChange(var Msg: TWMDeviceChange);
message WM_DEVICECHANGE;
end;
3. 함수 기능 구현
procedure TfrmMain.WMDeviceChange(var Msg: TWMDeviceChange);
const
DBT_DEVICEARRIVAL = $8000;
DBT_DEVICEREMOVECOMPLETE = $8004;
begin
case Msg.Event OF
DBT_DEVICEARRIVAL : begin
//USB가 연결 됬을 때 구현
end;
DBT_DEVICEREMOVECOMPLETE : begin
//USB 연결이 해제 되었을 때 구현
end;
end;
end;
다음은 현재 컴퓨터에 연결된 드라이브 중 이동식 디스크 드라이브를 찾는 예이다.
var
i: Integer;
driveName: string;
begin
//A ~ Z 까지 드라이브 검색
for i := 0 to 25 do
begin
driveName := Char(i+Ord('A')) + ':\';
//드라이브 타입 가져오기
case GetDriveType(PChar(driveName)) of
DRIVE_UNKNOWN : begin
//알려지지 않은 드라이브
end;
DRIVE_REMOVABLE : begin
//이동식 디스크 (제거가 가능한 드라이브)
end;
DRIVE_NO_ROOT_DIR : begin
//루트가 없는 드라이브 (잡히지 않은 드라이브)
end;
DRIVE_FIXED : begin
//로컬 디스크 (제거가 불가능한 드라이브)
end;
DRIVE_REMOTE : begin
//리모트 드라이브 (네트워크 드라이브)
end;
DRIVE_CDROM : begin
//CD-ROM 드라이브
end;
DRIVE_RAMDISK : begin
//램 디스크
end;
end;
end;
end;
여기서 주의 할 사항이 있다.
이동식 디스크로 검색이 되었더라도, 비어있는 드라이브라면
접근했을 때 디스크가 없다는 오류 메시지가 출력된다.
이러한 오류를 피하기 위해서는 그 전에
디스크가 비어있는지, 즉 접근이 가능한 디스크 인지 확인을 해야 한다.
디스크의 정보를 가져오는 GetVolumeInformation() 함수를 이용하여
접근이 가능한지를 리턴값으로 알 수 있다.
'Delphi Tip > 하드웨어' 카테고리의 다른 글
CPU 종류 알아오기 (0) | 2024.03.15 |
---|---|
델파이 동작 없을 시 자동 로그아웃 (0) | 2021.08.23 |
델파이 마우스 아래의 윈도우 핸들 구하기 (0) | 2021.08.15 |
델파이 마우스 위치의 컨트롤 (0) | 2021.08.14 |
델파이 하드디스크 시리얼 알아내기 (0) | 2021.08.13 |
댓글