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

델파이 팁&트릭
Delphi Programming Tip&Tricks
[7] [팁] MO, CD-ROM Eject 하기... (MCI 명령 아님)
박종민.BacTeria [bacteria] 4588 읽음    2002-03-06 09:17
안녕 하세요?

BacTeria 박종밍 입니다.

아래팁은 MCI 명령을 쓰지 않고 CD-ROM을 꺼집어(?) 낼수 있는 방법입니다.

MO도 해당 되고요.

아래에 드라이브명만 바꾸어 주시면 꺼낼수 있는 모든 매체는 다 꺼내어 줍니다. (Soft버튼 아시죠??)

사실 제 MO 디스켓 꺼낼때 드라이브에 있는 버튼 누르기 귀찮아서요... ㅋㅋ

그럼 오늘 하루도 수고하세여~

const
  FILE_DEVICE_MASS_STORAGE = $2D;
  METHOD_BUFFERED          = 0;
  FILE_ANY_ACCESS          = 0;
  FILE_READ_ACCESS         = 1;
  FILE_WRITE_ACCESS        = 2;

  IOCTL_STORAGE_EJECT_MEDIA = (FILE_DEVICE_MASS_STORAGE shl 16) OR
                              (FILE_READ_ACCESS shl 14)         OR
                              ($202 shl 2)                      OR
                              (METHOD_BUFFERED);

  IOCTL_STORAGE_LOAD_MEDIA  = (FILE_DEVICE_MASS_STORAGE shl 16) OR
                              (FILE_READ_ACCESS shl 14)         OR
                              ($203 shl 2)                      OR
                              (METHOD_BUFFERED);

var
  cd: THandle;
  ret: DWORD;

begin
  // Note: Stefan opened CD-ROM with GENERIC_READ OR GENERIC_WRITE.
  // That should be correct according to MS documentation but was not working for me.
  // This (just GENERIC_READ) seems to be working on all computers.
  cd := CreateFile(PChar('\\.\e:'), GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);

  if CD <> INVALID_HANDLE_VALUE then begin
    // eject
    if not DeviceIoControl(cd, IOCTL_STORAGE_EJECT_MEDIA, nil, 0, nil, 0, ret, nil) then { report error };
    // load
(*    if not DeviceIoControl(cd, IOCTL_STORAGE_LOAD_MEDIA, nil, 0, nil, 0, ret, nil) then { report error }; *)
    CloseHandle(cd);
  end;
end;

+ -

관련 글 리스트
7 [팁] MO, CD-ROM Eject 하기... (MCI 명령 아님) 박종민.BacTeria 4588 2002/03/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.