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 :

Capter les évènements Windows liés au branchement d'un disque amovible


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Capter les évènements Windows liés au branchement d'un disque amovible
    Bonjour à tous,

    Je sais qu'il est possible de capter l'évènement qui arrive lors de l'insertion d'une clé usb (API("USER32", "RegisterWindowMessageA", "QueryCancelAutoplay")).
    Grâce à cela j'ai la possibilité de ne pas afficher la fenêtre qui demande quoi faire lors de l'insertion d'un disque amovible.

    J'aimerais maintenant savoir s'il est possible de capter les messages suivants:
    - Exemple pour une clé usb qui a été "arrachée" (non retirée correctement) : Un message proposant l'analyse et la réparation de la clé apparait. Je souhaiterais ne pas avoir ce message.
    - Avec la fonction USBDéconnecte, un message "popup" windows apparait pour indiquer qu'il est possible de retirer la clé. J'aimerais savoir s'il est possible d'avoir un retour sur usbdeconnecte(). Et s'il est possible de dire à windows de ne pas afficher ce popup ?

    Merci d'avance.
    Google est ton ami !

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 208
    Points : 9 212
    Points
    9 212
    Par défaut
    Je pense que tu as plus ou moins répondu à ta question : il faut passer par les API. C'est du système "pur".
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    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
    Effectivement ^^

    Mais j'ai justement créé ce post pour savoir si quelqu'un avait déjà fait cela car j'ai beaucoup de mal pour trouver les appels qu'ils faut faire à l'API....
    Google est ton ami !

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    Il faut créer un thread avec une fenêtre masquée (dans le code du projet) qui ne fait rien d'autre que d'attendre pour le message WM_DEVICECHANGE, et utiliser RegisterDeviceNotification lors de la création de la fenêtre masquée.

    Pour plus d'informations à ce sujet, veuillez consulter le lien Device Events sur MSDN.

    ...

  5. #5
    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 Patrice et merci pour ton aide.

    Après lecture de la page MSDN je rencontre des problèmes pour implémenter tout cela sous Windev.... J'essaie de transformer l'exemple fourni (c++) en w-langage mais je mis perd (https://msdn.microsoft.com/fr-fr/lib...(v=vs.85).aspx)

    Auriez-vous le temps pour m'aiguiller un peu sur la procédure à mettre en place pour s'abonner à ce service de notification ?
    Google est ton ami !

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    Le lien que vous référencez ne marche pas.

    L'idée, c'est de créer une fenêtre qui dispose de sa propre pompe de message, comme dans l'exemple "MIDI Piano" que j'ai publié il y a peu en code WinDev.

    Vous pouvez reprendre tout le code, en ne gardant dans WndProc que le traitement des événements et passer tous les autres messages à la fonction par défaut de Windows à savoir: DefWindowProc.

    La fenêtre elle-même (de type POPUP et HIDDEN) peut être vide avec une largeur et une hauteur de zéro, elle doit fonctionner dans un thread pour ne pas perturber le fonctionnement de l'application WinDev proprement dite.

    ...

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/10/2013, 23h40
  2. Réponses: 1
    Dernier message: 05/04/2011, 11h48
  3. Réponses: 0
    Dernier message: 11/12/2010, 12h58
  4. [C#] Timer sur les évènements des messages Windows
    Par Nullos Oracle dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/09/2006, 11h33
  5. [API windows] Récupérer proprement les évènements clavier...
    Par heider dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 20/03/2006, 13h05

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