Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Comando per aprire il cd (C++)

    Ciao a tutti.... volevo chiedervi il comando o la procedura che permette di aprire/chiudere il cd-rom ovviamente in c++.
    Grazie ciao

  2. #2
    codice:
    /* linkare la libreria "winmm.lib" ("libwinmm.a" in dev c++) */ 
    
    #include <windows.h>
    
    int main()
    {
        char *s;
        int i;
        s=(char*) malloc(sizeof(char));
        i=mciSendString("set CDAudio door open", s, 100, 0);
        free(s);
        return 0;
    }
    ...Terrible warlords, good warlords, and an english song

  3. #3
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    codice:
    void openCD(BOOL bOpen, TCHAR cDrive)
    {
     MCI_OPEN_PARMS op;
     MCI_STATUS_PARMS st;
     DWORD flags;
    
     TCHAR szDriveName[4];
     strcpy(szDriveName, "X:");
    
     ::ZeroMemory(&op, sizeof(MCI_OPEN_PARMS));
     op.lpstrDeviceType = (LPCSTR)MCI_DEVTYPE_CD_AUDIO;
    
     if(cDrive > 1)
      {
       szDriveName[0] = cDrive;
       op.lpstrElementName = szDriveName;
       flags = MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT | MCI_OPEN_SHAREABLE;
      }
     else flags = MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_SHAREABLE;
    
     if (!mciSendCommand(0,MCI_OPEN,flags,(unsigned long)&op))
     {
      st.dwItem = MCI_STATUS_READY;
      if(bOpen)mciSendCommand(op.wDeviceID,MCI_SET,MCI_SET_DOOR_OPEN,0);
      else mciSendCommand(op.wDeviceID,MCI_SET,MCI_SET_DOOR_CLOSED,0);
      mciSendCommand(op.wDeviceID,MCI_CLOSE,MCI_WAIT,0);
      }
    }
    A questa funzione passi true o false, a seconda se vuoi aprire o chiudere, ed il drive.
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  4. #4
    Ciao innanzi tutto grazie per aver risposto....però ho ancora qualche domanda

    Per Johnny_Depp: per linkare la libreria winmm.lib si fa allo stesso modo che con i file dll?? O se no puoi dirmi come si fa? Inoltre volevo chiederti dove hai trovato il primo parametro "set CDAudio door open" ho cercato sull'MSDN ma nn l'ho trovato...l'ho fatto per vedere se oltre a questo potevo mettere altri parametri.

    Per Xadoom: innanzi tutto bel nome (leggevo anche io pk) poi volevo dirti che ho provato a compilare il tuo codice ma mi dà errore...nn è che anche qui devo linkare la libreria winmm.lib??

    Grazie ciao

  5. #5
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Ovvio, devi includere Windows.h e linkare anche la libreria winmm.lib, per fare ciò, io uso Devc++, devi andare sulle opzioni di progetto e settare parametri-->Linker-->Aggiungi libreria.
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  6. #6
    /* e così lo chiudi :adhone: */

    i=mciSendString("set CDaudio door closed", s, 100, 0);


    p.s. per linkare la libreria (.lib)
    fai come ti ha detto Xadoom

    se utilizzi Microsoft Visual C++
    il procedimento è simile:

    menù Project\Settings\LINK\

    nella casella "Object\Library modules" aggiungi in coda: "winmm.lib"


    se invece compili da linea di comando (prompt dos)...
    generalmente si aggiunge il parametro: "-L ../lib/winmm.lib"
    ...Terrible warlords, good warlords, and an english song

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ho provato il codice di Xadoom. Ho effettuato questa chiamata nel main():
    codice:
    int main() {
       openCD(true, 'D');
       return 0;
    }
    Il programma viene compilato senza errori, ma se lo avvio non fa nulla e non termina..


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Devi specificare :
    codice:
    int main() {
       openCD(true, "D:\");
       return 0;
    }
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  9. #9
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    No, no...aspetta....
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  10. #10
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    A me va benissimo....
    codice:
    #include <iostream>
    #include <stdlib.h>
    #include <windows.h>
    
    using namespace std;
    
    void openCD(BOOL bOpen, TCHAR cDrive);
    
    int main(int argc, char *argv[])
    {
      openCD('D',true);
      system("PAUSE");	
      return 0;
    }
    
    /*Apre o chiude il cassetto cd del driver*/
    void openCD(BOOL bOpen, TCHAR cDrive)
    {
     MCI_OPEN_PARMS op;
     MCI_STATUS_PARMS st;
     DWORD flags;
    
     TCHAR szDriveName[4];
     strcpy(szDriveName, "X:");
    
     ::ZeroMemory(&op, sizeof(MCI_OPEN_PARMS));
     op.lpstrDeviceType = (LPCSTR)MCI_DEVTYPE_CD_AUDIO;
    
     if(cDrive > 1)
      {
       szDriveName[0] = cDrive;
       op.lpstrElementName = szDriveName;
       flags = MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT | MCI_OPEN_SHAREABLE;
      }
     else flags = MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_SHAREABLE;
    
     if (!mciSendCommand(0,MCI_OPEN,flags,(unsigned long)&op))
     {
      st.dwItem = MCI_STATUS_READY;
      if(bOpen)mciSendCommand(op.wDeviceID,MCI_SET,MCI_SET_DOOR_OPEN,0);
      else mciSendCommand(op.wDeviceID,MCI_SET,MCI_SET_DOOR_CLOSED,0);
      mciSendCommand(op.wDeviceID,MCI_CLOSE,MCI_WAIT,0);
      }
    }
    Hai linkato la libreria?
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.