Deschiderea și închiderea unității - Multimedia - Programare in Visual Basic - articole interesante

Dacă scrieți un program legat de mass-media, va trebui, probabil, pentru a deschide și închide software-ul CD-ROM. De obicei, se recomandă să utilizați mciSendString API funcție de bibliotecă winmm.dll. Declarația ei:

Această funcție trimite o linie de comandă dispozitive multimedia. Deschideți tava de disc, puteți:

Echipa de a conduce vehicule de închidere:

Dar ce se întâmplă dacă utilizatorul pe computerul are două (așa cum am), sau o unitate CD-ROM? Funcțiile de mai sus propuse vor fi deschise aproape de un singur dispozitiv. În acest caz, vin la nivel scăzut de ajutor API-funcția DeviceIoControl. Iată declarația ei.

După cum se poate observa din declarația, primul parametru al funcției - un descriptor al dispozitivului dorit pentru noi. Acesta poate fi obținut cu ajutorul funcției CreateFile minunat.

Mânerul rezultat atunci când nu mai este necesară, asigurați-vă că pentru a închide cu ajutorul funcției CloseHandle:

Există o subtilitate atunci când apelați CreateFile - de a conduce modul în care trebuie să adăugați prefixul în fața „# 92, # 92, # 92; ..“ funcției „știe“ că avem de-a face cu un dispozitiv, mai degrabă decât un dosar de disc. Astfel, pentru litera E o unitate, un parametru lpFileName va avea forma:

În primul rând, ne declarăm constantele necesare.

Dar principalul „secret“, constante pentru DeviceIoControl. Aceste valori nu sunt găsite în fișiere antet. Ei au obținut punerea în aplicare a macro-uri speciale în mediul Visual C ++:

Acum, că am totul pregătit, scrie o funcție care se deschide unitatea (în cazul deconturilor eșec fals):

Închide LoadCD unitate. Acesta va fi diferit doar prin faptul că în loc de un substitut IOCTL_STORAGE_EJECT_MEDIA constantă IOCTL_STORAGE_LOAD_MEDIA.

Nu este foarte usor, dar, de fapt, funcționează! După testarea funcții, puteți crea o clasă de lucru cu drive-uri, include în proiectul ActiveX DLL sau EXE, compilați, și uitați-l ca un coșmar.

Fii atent cu DeviceIoControl funcția. Puteți să-l utilizați mai mult și unități de format. în eroare constantă - și un salut mare!