Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Eject 2 CD??? Добавлено: 15.02.03 20:29  

Автор вопроса:  Staser
Подскажите, кто знает!!! Делаем форму и 2 кнопки: по нажатию первой выезжает 1 CDROM, по нажатию второй - другой! КАК??? (armylove@yandex.ru)

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 msv



Вопросов: 34
Ответов: 312
 Web-сайт: msvprogs.narod.ru
 Профиль | | #1
Добавлено: 16.02.03 08:50

Наверно это невозможно. Я пытался (у меня 2 сидюка - один CDROM, другой - CDRW) выезжает только CDROM, т.к. на шлейфе он подключен к крайнему контакту (CDRW - к среднему) и, соответственно, ближе к шине. Вот только такой CDR(W,OM) будет выезжать, который подключен к крайнему контакту.

Ответить

Номер ответа: 2
Автор ответа:
 Aleksandr Skorodumov



ICQ: 161435166 

Вопросов: 5
Ответов: 96
 Web-сайт: www.beginning.ru
 Профиль | | #2
Добавлено: 17.02.03 21:19
А где можно хорошую документацию по программированию железа на Бейсики, найти? Я искал, искал, и не нашел

Ответить

Номер ответа: 3
Автор ответа:
 MAGNUS



Вопросов: 12
Ответов: 430
 Профиль | | #3 Добавлено: 17.02.03 23:18

Вот тебе примерчик, откидывай что хочешь и сколько хочешь.

Private Declare Function GetVersion Lib "kernel32" () As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As Any) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const INVALID_HANDLE_VALUE = -1
Private Const OPEN_EXISTING = 3
Private Const FILE_FLAG_DELETE_ON_CLOSE = 67108864
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000
Private Const IOCTL_STORAGE_EJECT_MEDIA = 2967560
Private Const VWIN32_DIOC_DOS_IOCTL = 1

Private Type DIOC_REGISTERS
  reg_EBX As Long
  reg_EDX As Long
  reg_ECX As Long
  reg_EAX As Long
  reg_EDI As Long
  reg_ESI As Long
  reg_Flags As Long
End Type

Private Sub Command1_Click()
Dim hDrive As Long, DummyReturnedBytes As Long
Dim EjectDrive As String, DriveLetterAndColon As String
Dim RawStuff As DIOC_REGISTERS
  EjectDrive = InputBox("Which drive shall we try to eject the media from?", "Eject Media")
  If Len(EjectDrive) Then 'Confirm the user didn't cancel
    DriveLetterAndColon = UCase(Left$(EjectDrive & ":", 2)) 'Make it all caps for easy interpretation
    If GetVersion >= 0 Then ' Windows NT/2000
      hDrive = CreateFile("\\.\" & DriveLetterAndColon, GENERIC_READ Or GENERIC_WRITE, 0, ByVal 0, OPEN_EXISTING, 0, 0)
      If hDrive <> INVALID_HANDLE_VALUE Then
        'Eject media!
        Call DeviceIoControl(hDrive, IOCTL_STORAGE_EJECT_MEDIA, 0, 0, 0, 0, DummyReturnedBytes, ByVal 0)
        Call CloseHandle(hDrive)  'Clean up after ourselves
      End If
    Else  ' Win9x/Me
      hDrive = CreateFile("\\.\VWIN32", 0, 0, ByVal 0, 0, FILE_FLAG_DELETE_ON_CLOSE, 0)
      If hDrive <> INVALID_HANDLE_VALUE Then
        'Setup our raw registers to use Interrupt 21h Function 440Dh Minor Code 49h
        RawStuff.reg_EAX = &H440D   'The function to use
        RawStuff.reg_EBX = Asc(DriveLetterAndColon) - Asc("A") + 1 'The drive to do it on
        RawStuff.reg_ECX = &H49 Or &H800     'The minor code of the function in the low byte of the low word and the device category of 8 in the high byte of the low word
        'Eject media!
        Call DeviceIoControl(hDrive, VWIN32_DIOC_DOS_IOCTL, RawStuff, LenB(RawStuff), RawStuff, LenB(RawStuff), DummyReturnedBytes, ByVal 0)
        Call CloseHandle(hDrive)  'Clean up after ourselves
      End If
    End If
  End If
End Sub 

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам