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

Windows XP Discussion :

Fermer une fenêtre


Sujet :

Windows XP

  1. #1
    Candidat au Club
    Homme Profil pro
    Caissier
    Inscrit en
    Janvier 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Caissier

    Informations forums :
    Inscription : Janvier 2023
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Fermer une fenêtre
    Bonjour,

    Je suis nouveau sur le forum, alors soyez indulgent, merci

    Voila j'ai développé un petit programme en RapidQ, c'est du basic qui est très similaire à Visual basic, donc pas de problème pour moi pour comprendre le Visual Basic.

    J'ai remarqué que certaine fenêtre de Windows XP ne veulent plus se fermer quand on appui sur le bouton prévu à cette effet, si j’appuie sur ctrl+Alt+Suppr
    j'ai une boite de dialogue qui apparait avec tout les programmes qui son chargé, mais impossible de voir ma fenêtre qui ne veut pas se fermer.....

    J'ai donc développé un petit programme on me servant des API de Windows XP pack 3, pour essayer de remédier à se problème.

    Malheureusement je n'y arrive pas,j'arrive à récupérer le titre, la class, le handle, mais les fenêtres toutes simple ne veulent pas se fermer

    C'est une partie du code allégé, c'est pour éviter de se perde dans les détailles et essayer de résoudre le problème, si vous le voulez avec code + compilation, je le mets ici.

    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
    
    $Include "Rapidq.inc"
    
    TYPE POINTAPI
      X AS LONG
      Y AS LONG
    END TYPE
    
    Declare Function SendMessageA Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
    Declare Function GetAsyncKeyState Lib "user32" alias "GetAsyncKeyState" (vKey As Long) As long
    Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
    Declare Function CloseHandle Lib "kernel32" Alias "CloseHandle" (ByVal hObject As Long) As Long
    Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
    
    
      Dim Handle as integer
      Dim Utiliser as integer
      
       Dim Souris AS POINTAPI
    
      Const WM_SETFOCUS As Long = &H7
      Const WM_CLOSE As Integer = &H10
      Const PROCESS_ALL_ACCESS As Long = &H1F03FF
    
         Utiliser = 1 : VK_RBUTTON = 2 : VK_LBUTTON = 1 : Touche = 65
               
        ClassNom$ = Space$(100)  
       
        Titre$ = space$(100)
       
       do
         GetCursorPos(Souris)
         LenClass = GetClassName(Handle,@ClassNom$,100)
         LenTitre = GetWindowText(Handle,@Titre$, 100)
    
         Edit1.text = left$(Titre$,LenTitre)
         Edit2.text= str$(Handle)
         Edit3.text = left$(ClassNom$,lenClass)
    
      If  GetAsyncKeyState(VK_RBUTTON) <>  0 then
          SendMessageA(Handle,WM_CLOSE,0,0)
          CloseHandle(Handle)   
        elseif GetAsyncKeyState(Touche) <> 0 then
            Utiliser = 0
        end if
    
        loop until Utiliser = 0
    J'utilise la fonction SendMessageA(Handle,WM_CLOSE,0,0) pour essayer de fermer la fenêtre, j'ai des trucs qui disparaitre, mais pas la fenêtre.

    Avez vous une idée, ou une solution avec un API ?

    Merci pour ceux qui pourrons m'aidez

  2. #2
    Membre éclairé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2015
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Septembre 2015
    Messages : 204
    Points : 839
    Points
    839
    Par défaut
    Tu n'es peut-être pas dans le bon salon, j'aurai posté dans un des salons de prog

    sinon regarde du côté de DestroyWindow (hWnd)
    ou SendMessageA(hWnd,WM_DESTROY,0,0)

  3. #3
    Candidat au Club
    Homme Profil pro
    Caissier
    Inscrit en
    Janvier 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Caissier

    Informations forums :
    Inscription : Janvier 2023
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Xelland a écrit : Tu n'es peut-être pas dans le bon salon, j'aurai posté dans un des salons de prog
    Oui, je m'en suis aperçus une fois avoir posté ce message, j'ai donc reposté le message sur forum de programmation du site de Developpez.com ce qui fait qu'il y a maintenant 2 posts

    Merci pour ta réponse,

    SendMessageA ne fonctionne pas, il me ferme juste les text , combobox, listbox....

    je vais essayé avec DestroyWindow et vous tiendrez au courant du résultat

    A+

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Tu ne cibles clairement pas le bon objet. Comment récupères-tu le handle ?

    Sinon pour récupérer le handle de la fiche en connaissant celui d'un de ses contrôles : GetAncestor(Handle, GA_ROOT).

  5. #5
    Candidat au Club
    Homme Profil pro
    Caissier
    Inscrit en
    Janvier 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Caissier

    Informations forums :
    Inscription : Janvier 2023
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Écrit par Andnotor : Tu ne cibles clairement pas le bon objet. Comment récupères-tu le handle ?
    J'utilise pour récupération du handle WindowFromPoint, dans mon programme il est paramétré comme ceci

    Handle = WindowFromPoint(Souris.X,Souris.y)

    Après rien de plus simple d'avoir le titre de la fenêtre avec GetWindowText
    LenTitre = GetWindowText(Handle,@Titre$, 100)

    J'ai bien un retour du titre de la fenêtre

    Écrit par Andnotor : Sinon pour récupérer le handle de la fiche en connaissant celui d'un de ses contrôles : GetAncestor(Handle, GA_ROOT)
    Je vais voir ce que ça donne, mais à mon avis ça va pas changer grand chose

    Voici les résultats de l'api DestroyWindow (hWnd) ça ne fonction pas

    Merci pour votre implication, et vos réponses

    A+

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/03/2022, 11h58
  2. Fermer une application Windows
    Par telecnop dans le forum Langage
    Réponses: 20
    Dernier message: 28/06/2006, 21h15
  3. Une FFT tres rapide
    Par JuJu° dans le forum Autres éditeurs
    Réponses: 13
    Dernier message: 06/11/2003, 14h03
  4. [VB6]Fermer une application avec VB
    Par Mylou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/04/2003, 21h32
  5. Fermer une application à l'aide de OnIdle
    Par Thierry Rapp dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/08/2002, 12h44

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