IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Detection disques amovibles (USB) sous Citrix/TSE


Sujet :

WinDev

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut Detection disques amovibles (USB) sous Citrix/TSE
    Bonjour,
    Pouriez-vous me mettre sur quelques pistes pour le problème suivant :

    Mon programme tournerait pour un client, en citrix au lieu d'un environnement classique windows.
    Normalement j'ai une detection d'ajout ou de retrait de clé USB...qui me permets de l'identifier par sa lettre et son nom.

    Mais en citrix, la clé USB est mappé comme "disque amovible" sans plus de précisions.

    Comment m'y prendre ?

    Il doit y avoir un moyen assez simple pour détecter la présence ou nom d'un "disque amovible" ou "d'une lettre drive" en fonction du temps ?

    Normalement je procède ainsi ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Evénement("DeviceNotification", "FEN_main", WM_DEVICECHANGE)
     
    DEV_BROADCAST_HDR est Structure
        dbch_size       est un entier sans signe sur 4 octets
        dbch_devicetype est un entier sans signe sur 4 octets
        dbch_reserved   est un entier sans signe sur 4 octets
    FIN
     
     
    DEV_BROADCAST_VOLUME est Structure
        dbch_size       est un entier sans signe sur 4 octets
        dbch_devicetype est un entier sans signe sur 4 octets
        dbch_reserved   est un entier sans signe sur 4 octets
        dbcv_unitmask   est un entier sans signe sur 4 octets
        dbcv_flags      est un entier sans signe sur 2 octets
    FIN
     
     
    nRet est entier = 0
     
     
    // On bloque la popup de notification d'insertion Windows
    // qui demande ce qu'on veut faire du CD/DVD
     
     
    SI wMsg =  WM_QUERYCANCELAUTOPLAY ALORS 
        nRet = 1
     
    SINON // On gère l'insertion et la suppression d'un device
        SI wParam = DBT_DEVICEREMOVECOMPLETE OU wParam = DBT_DEVICEARRIVAL ALORS
            SI lParam ALORS
                stDevHDR est DEV_BROADCAST_HDR
                Transfert(&stDevHDR, lParam, Dimension(stDevHDR))
                SI stDevHDR:dbch_devicetype = DBT_DEVTYP_VOLUME ALORS
                    stDevVOL est DEV_BROADCAST_VOLUME
                    Transfert(&stDevVOL, lParam, Dimension(stDevVOL))
     
                    sDrive est chaîne = BFF_DEVICE_DRIVE(stDevVOL:dbcv_unitmask)
     
                    // StockageAmovibleRetiré
                    // ----------------------
                    SI wParam = DBT_DEVICEREMOVECOMPLETE ALORS
                            //rouge
                            FEN_main.BTN_USB..ImageFond = "USB_BLACK_90.PNG"
     
                    // StockageAmovibleInséré
                    // ----------------------
                    SINON SI wParam = DBT_DEVICEARRIVAL
                        sNomVolume est une chaîne
                        sNomVolume =fDisqueInfo(sDrive,fdNomVolume)
                        SI sNomVolume = "MERLIN" ALORS
                            //vert
                            FEN_main.ONG_choix=1
                            SI ThreadEtat("5") = threadInexistant ALORS ThreadExécute("5",threadNormal,ExploreMerlin)
                        SINON
                            //jaune
                            FEN_main.BTN_USB..ImageFond = "USB_YELLOW_90.PNG"
                            writeerror(sDrive+ESP+"is a removable drive but does not bear the name MERLIN")    
                        FIN
                    FIN
                FIN
            FIN
        FIN    
    FIN
    RENVOYER nRet

  2. #2
    Membre averti Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Points : 368
    Points
    368
    Par défaut
    Bonjour,

    Je suis hélas dans l'impossibilité de t'aider à ce sujet mais je m'intéresse fortement au code que tu as partagé ! De ce que j'ai compris tu as réussi à bloquer l'explorateur windows qui s'ouvre lors du branchement d'une clé usb ? sans modifier le registre windows ?

    Quand j'essaie d'intégrer ton code dans mon projet j'ai une erreur sur le WM_QUERYCANCELAUTOPLAY (non reconnue).

    Peux-tu me confirmer que cela bloque bien l'ouverture de l'explorateur ?

    Merci d'avance.
    Google est ton ami !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    le code n'est pas complet...il est basé sur un ancien post de Patrice Terrier :

    http://forum.pcsoft.fr/fr-FR/pcsoft....E9C154A1A844A8

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    si tu fais un "net use" dans la session ouverte, tu auras tous les lecteurs mappés dans la session. Ils sont en général appelé \\Client\A$, \\Client\C$, ...

    Pour l'usb, il faudrait stocker la liste à l'ouverture de session et voir quel est le lecteur supplémentaire ...

    Bon courage,

    Nicolas

Discussions similaires

  1. Pb avec un disque externe USB sous linux
    Par renardho dans le forum Matériel
    Réponses: 10
    Dernier message: 25/05/2009, 22h33
  2. Clé USB reconnue comme Disque Amovible
    Par sonorc dans le forum Composants
    Réponses: 14
    Dernier message: 22/04/2008, 12h18
  3. Detecter la position de lecteur amovible USB
    Par Socrat dans le forum C++Builder
    Réponses: 5
    Dernier message: 30/06/2007, 12h34
  4. Réponses: 2
    Dernier message: 29/03/2007, 15h45
  5. Pas de detection usb sous win 98 second edition
    Par LRobi dans le forum Windows 2000/Me/98/95
    Réponses: 3
    Dernier message: 30/01/2005, 19h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo