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

C++ Discussion :

[API]Comment détruire une fenêtre à coup sur.


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 101
    Points : 59
    Points
    59
    Par défaut [API]Comment détruire une fenêtre à coup sur.
    Bonjour à tous ,

    Voilà je n'arrive pas à détruire une fenêtre créé par l'appel d'une DLL (VLC) dans mon programme, dans un cas bien precis.
    VLC est un programme permettant de diffuser et de visualiser de la vidéo sur internet. Dans mon programme l'utilisation des différentes fonctions de la DLL VLC ne pose pas de problème à l'exeption d'un cas particulier : Lorsque je déconnect brutalement mon câble réseau là, la vidéo reste figué et je peux plus fermer ma fenêtre. Ni pas les fonction classique de la DLL ni par l'utilisation de l'API windows avec des fonction tel que :
    HWND hVlc = FindWindow("VLC DirectX", NULL);
    DeleteObject(hVlc);
    DestroyWindow(hVlc);
    Si quelqu'un peut m'aider . Merci .

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    hello,

    Est-ce que le code de destruction est reelement executé ? Il y pourrait avoir une instruction qui genère une attente du fait de la déco...
    Pour les details, cherche tout seul !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 101
    Points : 59
    Points
    59
    Par défaut
    Oui le code est bien executé. Il me génère une erreur (le programme se figue) au moment de l'exécution si j'utilise une fonction d'arret VLC. Je rappel qu'il n'y à aucun problème avec ces fonctions quand je ne déconnect pas mon câble réseau.
    Si j'utilse une fonction API windows :
    int toto=0;
    HWND hVlc = FindWindow("VLC DirectX", NULL);
    toto = DeleteObject(hVlc);
    toto = DestroyWindow(hVlc);
    "hVlc !=0" -> je récupère donc le bon handle en fonction du nom de ma class
    "toto == 0"-> Echec du DeleteObject
    "toto == 0"-> Echec du DestroyWindow

    J'ai même essailler de détruire l'espace mémoire de la librairie VLC,
    FreeLibrary(libVlcDll);
    puis de lancer les fonction API, sans succès.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 101
    Points : 59
    Points
    59
    Par défaut
    Est-ce que quelqu'un connait une invite de commande pour tuer un process ou quel DLL (si DLL il y a) est appelé par le gestionnaire de tache pour détruire un process ?

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    DeleteObject() n'est pas censé marcher sur les fenêtres.
    DestroyWindow() ne marche que sur une fenêtre dans le thread courant.

    Pour fermer une fenêtre dont le thread répond encore, tu peux tenter un SendMessage(..., WM_CLOSE, ...) dessus. Je conseillerais d'utiliser plutôt SendMessageTimeout() dans ce cas précis.

    Sinon, pour tuer un processus, il y a plusieurs méthodes:
    http://www.developpez.net/forums/sho...62&postcount=4
    Pour un autre processus, ignorer ExitProcess() (évidemment) et remplacer PostQuitMessage() par PostThreadMessage(WM_QUIT) (mais de toute façon, ça ne marchera que si le thread en question répond toujours).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/02/2013, 12h49
  2. Comment centrer une fenêtre sur l'écran?
    Par bygui dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 07/04/2006, 10h25
  3. [eclipse][plugin] Comment avoir une fenêtre avec focus
    Par relivio dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/04/2004, 15h54
  4. Je n'arrive pas à détruire une fenêtre
    Par CORREGE Frédéric dans le forum MFC
    Réponses: 6
    Dernier message: 22/02/2004, 20h28
  5. [API Windows] Mettre une fenêtre à jour
    Par Zazeglu dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 22/01/2004, 15h48

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