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 :

Comment fermer une application sans confirmation avec WM_CLOSE


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut Comment fermer une application sans confirmation avec WM_CLOSE
    Bonjour

    Voilà, j'utilise WM_CLOSE pour fermer des applications, cela fonctionne sauf quand l'une d'elle demande une confirmation

    .... retval = SendMessage(hwnd, WM_CLOSE, ByVal 0, 0)

    même si l'appli demande confirmation retval = 0 (en fait retval est la pour renvoyer un message d'erreur)

    Je voudrais pouvoir fermer l'application désirée, y a t'il moyen de forcer cela ?
    En fait, un destroy pur et dur !

    Merci

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Un clic sur la croix?
    Plus sérieusement, pourquoi as-tu besoin de la fermer de cette manière?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Ben oui.... le problème est que j'en ferme plusieurs à la fois...

    voici la fonction :
    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
    Private Sub ListePagesChrome(Deleted As Boolean)
    Dim ret As Long
    Dim I As Integer
    Dim Hwnd As Long
     
      lst.ListItems.Clear
     
      Hwnd = GetDesktopWindow()
      Hwnd = GetWindow(Hwnd, GW_CHILD) 
      Do While (Not IsNull(Hwnd)) And (Hwnd <> 0)
        Wind_Title = GetCaption(Hwnd)
        Wind_Class = GetClass(Hwnd)
        If Wind_Class = "Chrome_WidgetWin_1" And Len(Wind_Title) > 0 Then
          With lst.ListItems.Add(, , Hwnd)
            .SubItems(1) = Wind_Title
            .SubItems(2) = Wind_Class
          End With
        End If
        DoEvents
        Hwnd = GetWindow(Hwnd, GW_HWNDNEXT)     ' get the handle of the next window
        DoEvents
      Loop
     
      If Deleted Then
        I = lst.ListItems.Count
        For I = lst.ListItems.Count To 1 Step -1
          Set lst.SelectedItem = lst.ListItems(I)
          Hwnd = lst.SelectedItem.Text
          ret = SendMessage(Hwnd, WM_CLOSE, ByVal 0, 0): DoEvents
          lst.ListItems.Remove I
          DoEvents
        Next I
        DoEvents
        MsgWaitObj 1000
      End If
     
    End Sub

    Parfois il y a 20 pages ouvertes... et il y en a qui demandent confirmation.... Voilà la raison

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Sinon, tu attrapes la fenetre de confirmation, et tu la confirme.

    D'un autre coté, un programme qui te demande une confirmation, c'est parce qu'une erreur peut coûter cher.

    Sinon, il y a sigkill

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Ben j'ai essayé... mais alors je "tue" la boite de confirmation mais pas la page donc je boucle à l'infini....

    Pour le moment, je me dépanne en positionnant la fenêtre de confirmation et bouger la souris vers le bouton "yes" mais est ce que la boîte de dialogue aura toujours la même apprence ?
    je ne pense pas... donc le mieux est d'intercepter ce message et y repondre

    certain qu'il y a une solution plus propre.... si mes souvenirs sont bons (suis un peu rouillé question programmation) il y a une autre fonction que sendmessage ()

    en fait, je migre un vb6 vers vb.net et pas évident donc ce qui passe pas je fais des dll en C++

  6. #6
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Donc tu as une application qui essaie de fermer proprement toutes les fenêtres de Chrome?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Et voilà une solution radicale après maintes lecture...

    moyen de peaufiner cela (mais pas le temps pour le moment).. mais lister les processus en cours mettre dans un listbox et choisir qui killer etc etc...

    documentation : https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function ProcessList()
     Dim hSnapshot As Long
     Dim uProcess As PROCESSENTRY32
     Dim r As Long
     
      hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
      If hSnapshot = 0 Then Exit Function
       uProcess.dwSize = Len(uProcess)
       r = ProcessFirst(hSnapshot, uProcess)
       Do While r
        If InStr(uProcess.szexeFile, "chrome.exe") Then    ProcessTerminate (uProcess.th32ProcessID)
        r = ProcessNext(hSnapshot, uProcess)
        Loop
    End Function
    .. bon pour le moment en vb6... mais facile de la transposer en c++
    je dois killer toutes les pages chrome (dans mon cas) et la c'est radical... !!!

    merci a ceux qui ont voulu m'aiguiller mais comme dit au premier post je cherchais une solution radicale

    Au plaisir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fermer une application sans confirmation ?
    Par napidev dans le forum Général VBA
    Réponses: 0
    Dernier message: 06/09/2013, 14h57
  2. [win 2003] Comment démarrer une application sans se logger?
    Par spiwis dans le forum Windows Serveur
    Réponses: 7
    Dernier message: 11/07/2007, 15h00
  3. Réponses: 0
    Dernier message: 11/05/2006, 08h19
  4. Réponses: 0
    Dernier message: 24/03/2006, 08h33
  5. Réponses: 0
    Dernier message: 17/10/2005, 08h05

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