[ maja91 @ 10.12.2006. 15:29 ] @
Dakle , interesuje me koja f-ja sluzi za otvaranje CD-ROMa , pod BCB6.
Pzdrav svima!
[ X Files @ 10.12.2006. 16:01 ] @
Na primer:

Code:

// ...
#include <MMSystem>
// ...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   /* otvara */
   mciSendString( "Set cdaudio door open wait",   NULL, 0, Handle );
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
   /* zatvara */
   mciSendString( "Set cdaudio door closed wait", NULL, 0, Handle );        
}


... E sad, ovo je malo slozenija problematika jer moze imati i vise od
jednog CD rom uredjaja.

Pogledaj na primer ovde: http://tinyurl.com/uhc4p


[ X Files @ 10.12.2006. 17:36 ] @
Naravno, postoje i drugio načini, npr:

Code:

#include <winioctl.h>

// zatvara
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   HANDLE hDevice;
   DWORD bytes;
   hDevice = CreateFile("\\\\.\\i:", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL );
   DeviceIoControl(hDevice,IOCTL_DISK_LOAD_MEDIA,NULL,0, NULL, 0, &bytes, (LPOVERLAPPED) NULL);
   CloseHandle(hDevice);
}

// otvara
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   HANDLE hDevice;
   DWORD bytes;
   hDevice = CreateFile("\\\\.\\i:", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL );
   DeviceIoControl(hDevice,IOCTL_DISK_EJECT_MEDIA,NULL,0, NULL, 0, &bytes, (LPOVERLAPPED) NULL);
   CloseHandle(hDevice);
}

Razlika je samo u IOCTL_DISK_LOAD_MEDIA i IOCTL_DISK_EJECT_MEDIA.
Primeti takodje slovo i:. To je konkretna oznaka drajva.

Koje sve drajvove imaš na sistemu, možeš videti sa (stavi prethodno jedan Memo1 na Form1):

Code:

void __fastcall TForm1::Button3Click(TObject *Sender)
{
   int type;
   type = GetDriveType("C");
   type = GetDriveType("C:\\Windows");

   for ( char c='A'; c<='Z'; c++ )
   {
      AnsiString S = AnsiString( c ) + ":";
      int type = GetDriveType( S.c_str() );
      if ( type > 1 )
      {
         String TypeStr;
         switch ( type )
         {
            case DRIVE_REMOVABLE :
               TypeStr = " is removable";
               break;
            case DRIVE_FIXED :
               TypeStr = " is fixed";
               break;
            case DRIVE_REMOTE :
               TypeStr = " is network drive";
               break;
            case DRIVE_CDROM :
               TypeStr = " is CD-ROM";
               break;
            case DRIVE_RAMDISK :
               TypeStr = " is RAM disk";
               break;
         }
         Memo1->Lines->Add(S + TypeStr);
      }
   }
}


Pa ako hoćeš da izvadiš samo CD uređaje filtriraj po atrinutu DRIVE_CDROM.
[ maja91 @ 12.12.2006. 18:42 ] @
X Files , radi prva varijanta! (sa jednim cd-romom).Sve mi je jasno - uradio si preko MCI varijante.

Ostaje mi da proverim varijante za vise drajvova.

Hvala. Pozdrav.
ps.( nisam stigla ranije da odgovorim , neka preca posla )

Jos jedno pitanje:
Kako sadrzaj Edit-a kada u njemu imam neki broj pomerim u desno?
[ X Files @ 13.12.2006. 09:53 ] @
Citat:

Kako sadrzaj Edit-a kada u njemu imam neki broj pomerim u desno?

Uvek otvori novu temu za novo pitanje.

Desno poravnat TEdit se može rešiti ovako:
http://www.bcbjournal.org/bcbcaq/CAQs/caq28.htm


Pozdrav.
[ maja91 @ 14.12.2006. 10:53 ] @
X Files
1. Radi i drugi nacin za load - eject cd-rom.(shvatila sam, ovaj nacin je posebno dobar za slucajeve gde je vise uredjaja).Hvala.

2. Sto se tice one druge teme Align Right TEdit koliko sam mogla shvatiti klasa TEdit nema mogucnost za tako nesto , vec se mora dodati novi deo koda itd..
Vraticu se na taj problem kasnije , za sada nemam dovoljno ideja.Jos jednom hvala ...