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

MFC Discussion :

[APi Window] Questions


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 21
    Par défaut [APi Window] Questions
    Bonsoir,
    est il possible d envoyer un message (PostMessage) a une fenetre de type dialog et si oui ttes (mm celle d un autre prog)?
    En fait, jessaie de fermer une fenetre d'Excel. Cette fenetre "dialog"
    s affiche apres l ouverture lorsque le fichier contient des classeurs lies.
    Elle contient 2 boutons. (oui et non). jai donc regardez avec spy++
    pour voir les infos que je pouvais recuperer.
    Ce qui m interesse c est le bouton non(qui peut etre activer avec la combinaison alt+n) et jai vu qu il avait un id control(ds spy++) de 00007 (qq chose comme ca). cet id peut il m aider ?

    Car pour l instant tout ce que jai fait c est soldé par un échec excepté le
    SetWindowText qui remplace bien le titre de la fenetre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if((window = FindWindow("#32770","Microsoft Excel")) != NULL) 
       { 
          AfxMessageBox("find it"); 
       //   window->SetWindowText("TA MERE"); 
       window->SetForegroundWindow(); 
       window->PostMessage(WM_SYSKEYDOWN, VK_MENU, NULL);  
       window->PostMessage(WM_KEYDOWN, 0x6E, NULL);  
        } 
       else 
          AfxMessageBox("rien");

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    voir ce post dans la faq:
    http://c.developpez.com/faq/vc/?page...dWindowDesktop
    avec l'exemple de fermeture.

    voir aussi:
    http://c.developpez.com/faq/vc/?page...ad#ProcessKill

    voir aussi comment parcourir les fenetres filles d'une fenetre :
    http://c.developpez.com/faq/vc/?page...etEditReadOnly

    ou plus precisement mon post ici:
    http://www.developpez.net/forums/vie...=809319#809319


  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 21
    Par défaut
    Merci de ta réponse.
    le probleme cest que la fenetre n'as pas la ptite croix donc elle ne peut
    pas recevoir de SC_CLOSE je pense.(en tt cas ca passe pas)
    Faut il envoyer les messages a cette fenetre ou à la fenetre mere.

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    essaye WM_CLOSE.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 21
    Par défaut
    ouinn rien a faire
    elle veut rien entendre cette maudite fenetre.
    faut envoyer le postmessage a cette fenetre ou la fenettre mere ?

  6. #6
    Membre éprouvé
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Par défaut
    WM_DESTROY peut-être ...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 21
    Par défaut
    no
    rien n y fait. c est la fenetre rebelle

  8. #8
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    WM_QUIT alors ??

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 21
    Par défaut
    MDRRR rieeeeeeeeeeeennnnnnnnn
    vous croyez vraiment que vous l'emportez face a la super fenetre Excel ?
    bcp trop forte pr vous

    sinon comment procederiez vous ?
    on est bien d accord ds lidee?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    window = FindWindow(class, nom);
    window->postmessage(...)
     et pouf elle doit se fermer ?
    ou faut il que jatteigne le bouton NON qui est ds le dialog ?
    sinon avec la simulation de pression de touche ca devrait marcher non ?
    comment faire un ALT+N a ce moment ?
    MERCI en tt cas a tous
    c est super sympa de m aider
    [/code]

  10. #10
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    ton problème ce qu'il te demande si tu veux sauver et que ca quitte par directement ? c'est ca ?

  11. #11
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    re,
    si tu connais l'id du bouton tu peux faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    pWnd->PostMessage(WM_KEYDOWN,' ');
    pWnd->PostMessage(WM_KEYUP,' ');
    note dans la liste des liens de mon post il y a une methode pour parcourir les fenetres filles d'une fenetre en controllant la classe lors du parcours et eventuellement le texte ça doit etre jouable ensuite Postmessage comme ci-dessus.

  12. #12
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    sinon, si tu veux quitter comme un bourrin, tu peux utiliser TerminateProcess(...)

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 21
    Par défaut
    ton problème ce qu'il te demande si tu veux sauver et que ca quitte par directement ? c'est ca ?
    la boite de dialogue apparait à l ouverture pour me dire que le classeur contient des lisaisons avec d autres sources de données.
    il me demande si jveux les mettre à jour.


    farscape
    jpense connaitre l ID. j'ai recup avec Spy++ un control ID ca doit etre ca non ?
    mais comment utiliser cette ID pour avoir un Handle du bouton ?

    nico-pyright(c)
    jpourrai faire ca mais le truc cest que je lance pas Excel ds un process.
    et jsuis pas sur que ca marche car cette maudite fenetre est bien résistante

    nous la fermerons cette grrr de fenetre

  14. #14
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    mais récuperer l'ID avec spy++, il risque pas d'etre différent d'un lancement à l'autre ?
    sinon, il faut utiliser GetDlgItem

    et pour TerminateProcess, si tu récuperes son handle avec FindWindow, tu devrais pouvoir la fermer

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 21
    Par défaut
    HIIIIIIIIIIIIIIIIIIII AHHHHHHHHHHHHHHHHHHHHHHH
    jai trouvé
    c est pas vraiment moi mais bon
    Jsuis trop content. un vrai gosse avec son joujou
    donc voila la soluce.
    donc pour tout ceux qui ont des fenetres rebelles !!

    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
     
    HWND hwndButton = NULL;
    	if (hwndParent = ::FindWindow("#32770", "Microsoft Excel"))
    	{
    		if (hwndButton = ::FindWindowEx(hwndParent, 0, "Button", "&Non"))
    		{
    			int nID = ::GetDlgCtrlID(hwndButton);
    			::SendMessage(hwndParent, WM_COMMAND, MAKEWPARAM(nID, BN_CLICKED), (LPARAM)hwndButton);
     
    		}
    		else
    		AfxMessageBox("none");
    	}
    	else
    	AfxMessageBox("no");
    ca peut mm s ajouter ds la Faq VC++
    jpense non ?

    Merci a tous en tout cas. Vous m avez bcp aidé.

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

Discussions similaires

  1. [Système/Fichiers/API] Questions au sujet des API windows
    Par JPras dans le forum C++Builder
    Réponses: 4
    Dernier message: 13/03/2014, 09h06
  2. [C++] 2 petites questions sur l'API Windows
    Par Fabien Henon dans le forum Windows
    Réponses: 15
    Dernier message: 25/12/2007, 11h54
  3. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2006, 15h28
  4. Deux pitites questions pour l'API Windows
    Par The Lord of Nesquik dans le forum Windows
    Réponses: 12
    Dernier message: 02/11/2006, 14h34
  5. Question API windows
    Par T-B dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 28/12/2005, 13h10

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