Ouverture de CD qui ne fonctionne pas

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Ouverture de CD qui ne fonctionne pas

Message 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
;
;}
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message 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
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message 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: .



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message 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 ?
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message 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
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message 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.



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Message 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.
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message 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: .


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre