Page 1 sur 1

Ouverture de CD qui ne fonctionne pas

Publié : dim. 06/janv./2008 13:40
par Ar-S
ça existe deja mais je voulais me faire mon porte gobelet.

Je ne pige pas pourquoi ça ne fonctionne pas.
(j'utilise daemon tool, createur de lecteur viruel, c'est peut etre ça ?)

Code : Tout sélectionner

;{- Enumerations / DataSections
; Par Ar-S fait en 3sec deux dixiemes
Enumeration
  #ARS
  #BT_GO
  #Image_ButtonImage_0
EndEnumeration
Global BT_GO_Tooltip
;}
;{ Included Images
DataSection ;>
 ;mon image en data est tros grosse pour la poster
EndDataSection ;<
;}
;{ Image Plugins
UsePNGImageDecoder()
;}
; Create tooltip
Procedure GadgetBalloonToolTip(WindowNumber.l, GadgetNumber.l, Text.s)
  Protected Tooltip.l, Balloon.TOOLINFO
  Tooltip = CreateWindowEx_(0, "ToolTips_Class32", "", #WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON, 0, 0, 0, 0, WindowID(WindowNumber), 0, GetModuleHandle_(0), 0)
  SendMessage_(Tooltip, #TTM_SETTIPTEXTCOLOR, GetSysColor_(#COLOR_INFOTEXT), 0)
  SendMessage_(Tooltip, #TTM_SETTIPBKCOLOR, GetSysColor_(#COLOR_INFOBK), 0)
  SendMessage_(Tooltip, #TTM_SETMAXTIPWIDTH, 0, 180)
  Balloon\cbSize = SizeOf(TOOLINFO)
  Balloon\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hwnd = GadgetID(GadgetNumber)
  Balloon\uId = GadgetID(GadgetNumber)
  Balloon\lpszText = @Text
  SendMessage_(Tooltip, #TTM_ADDTOOL, 0, @Balloon)
  ProcedureReturn Tooltip
EndProcedure
; Change tooltip text
Procedure ChangeGadgetBalloonToolTip(Tooltip.l, GadgetNumber.l, Text.s)
  Protected Balloon.TOOLINFO
  Balloon\cbSize = SizeOf(TOOLINFO)
  Balloon\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hwnd = GadgetID(GadgetNumber)
  Balloon\uId = GadgetID(GadgetNumber)
  Balloon\lpszText = @Text
  SendMessage_(Tooltip, #TTM_ADDTOOL, 0, @Balloon)
EndProcedure
; Free tooltip
Procedure FreeBalloonTooltip(Tooltip.l)
  DestroyWindow_(Tooltip.l)
EndProcedure 
;
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_ARS()
  If OpenWindow(#ARS, 441, 420, 227, 281, "Porte Gobelet par Ar-S", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(#ARS))
      ButtonImageGadget(#BT_GO, 0, 0, 230, 285, CatchImage(#Image_ButtonImage_0, ?Image_ButtonImage_0))
      BT_GO_Tooltip = GadgetBalloonToolTip(#ARS, #BT_GO, "Cliquer pour creer votre porte gobelet")
    EndIf
    
  EndIf
EndProcedure

Procedure Gobelet()
  
EndProcedure  
OpenWindow_ARS()

;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #BT_GO
        If EjectAudioCD(0)
          etat=0
        Else
          etat=1
        EndIf  
        If etat=0
          EjectAudioCD(1)
          MessageRequester("bravo","Votre porte gobelet est créé")
          etat=1  
        Else
          EjectAudioCD(0)
          MessageRequester("Fermeture","Votre porte gobelet est rangé")
          etat=0  
        EndIf
      EndIf
      
      
      ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #ARS
        CloseWindow(#ARS)
        Break
      EndIf
  EndSelect
ForEver
;
;}

Publié : dim. 06/janv./2008 14:10
par case
essaie cette commande

UseAudioCD(x)

ou x est le numero du lecteur


:)

Code : Tout sélectionner

nb_lecteurs=InitAudioCD()-1
For a= 0 To nb_lecteurs
	UseAudioCD(a)
	Lecteur$ = AudioCDName()
	Debug lecteur$
Next
For a= 0 To nb_lecteurs
	UseAudioCD(a)

	EjectAudioCD(0) 
Next
For a= 0 To nb_lecteurs
	UseAudioCD(a)
	EjectAudioCD(1) 
Next

Publié : dim. 06/janv./2008 15:08
par venom
bonjour,

et bien il me semble que je t'avais donner sa a une epoque :

Code : Tout sélectionner

NbCDDrives = InitAudioCD()

Global Null$
#GADGET_Eject  = 2
#GADGET_Close  = 3
#GADGET_AudioCDDrive = 7
#GADGET_SelectDrive  = 8

If OpenWindow(0, 100, 200, 200, 70, "lecteurs", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

  If CreateGadgetList(WindowID(0))
    TextGadget    (#GADGET_AudioCDDrive,  10, 15, 140,  24, "Selectionner votre lecteur:")
    ComboBoxGadget(#GADGET_SelectDrive , 150, 10,  40, 200)

    For k=1 To NbCDDrives
      UseAudioCD(k-1)
      AddGadgetItem(#GADGET_SelectDrive, -1, Left(AudioCDName(),2))
    Next
    SetGadgetState(#GADGET_SelectDrive, 0)
    UseAudioCD(0)
   
    ButtonGadget(#GADGET_Eject, 10, 40, 70, 20, "eject", 0)
     ButtonGadget(#GADGET_Close, 120, 40, 70, 20, "close", 0)

  EndIf

    Repeat
      EventID = WindowEvent()

      If EventID = #PB_Event_Gadget
        Select EventGadget()
       
          Case #GADGET_Eject
            EjectAudioCD(1)

          Case #GADGET_Close
            EjectAudioCD(0)

          Case #GADGET_SelectDrive
            UseAudioCD(GetGadgetState(#GADGET_SelectDrive))
        EndSelect
      Else
        If EventID = #PB_Event_CloseWindow : Quit = 1 : EndIf   
      EndIf

  Until Quit = 1
 EndIf
si tu veut reprendre des choses pour le tiens :wink: .



@++

Publié : dim. 06/janv./2008 18:54
par Ar-S
Merci les gars, le truc c'est que si la personne choisi son lecteur, y'a plus trop d'effet de surprise (dejà que c'est bien connu), ni a t il pas moyen de détécter automatiquement le lecteur physique ?

Publié : dim. 06/janv./2008 20:58
par case
le problème c'est justement ce que les lecteurs virtuels essaient de se faire passer pour de vrais lecteurs aux yeux de windows donc a mon avis c'est pas gagné :)

ouvre les tous :p

Publié : dim. 06/janv./2008 22:09
par venom
ouvre les tous
oui c'est une solution.

mais moi j'ai déduit ce ci je peut me tromper :wink: mais :

a ma connaissance les lecteurs virtuelles prennent automatiquement une lettre qui n'existe pas donc comme a l'origine tu a au minimum 1 lecteur disons ( E: ) si tu rajoute un lecteur virtuelle il va donc s'appeler ( F: ). donc a mon raisonnement le mieu est de lister les lecteurs et d'ouvrir le 1er ce qui chez moi donne ce ci :wink: .

Code : Tout sélectionner

InitAudioCD()
 UseAudioCD(0) ;<----- le lecteur 0 donc le 1er
  EjectAudioCD(1)
petit code mais fonctionne parfaitement chez moi.



@++

Publié : lun. 07/janv./2008 12:34
par SpaceMan
@ venom
je ne pense pas trop que ça puisse marcher, la preuve j'ai 3 lecteurs:
2 DVD et 1virtuel (et qui s'affiche dans cet ordre)mais lorsque je déconnecte un lecteur physique et que je le remets, il occupe désormais la 3ème place et le dernier lecteur passe en position 2

comme l'a dit case impossible de faire la difference entre un disque vistuel et un physique.

Publié : lun. 07/janv./2008 18:29
par venom
a oui bien vu spaceman bon et bien il y a qu'une seiul solution ouvrir tout les lecteurs :D .

ou réussir a comuniquer avec daemon tools pour savoir quel lettre il utilise mais sa c'est une autre histoire :wink: .


@++