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 :

Minimiser une application Externe [WD12]


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Points : 61
    Points
    61
    Par défaut Minimiser une application Externe
    Salut à tous


    Je voudrais savoir comment on fait pour Réduire la fenêtre d'un fichier.exe en ligne de commande (genre iconise() mais avec un fichier externe)

    par avance merci

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    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 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Tu dois récupérer le handle de cette appli. Regarde du côté de l'API EnumDesktopWindows. Tu dois utiliser cette API car le nom de l'exécutable n'est pas forcément le nom de la fenêtre ouverte. Par exemple : calc.exe -> calculatrice, notepad.exe -> Bloc-notes.

    Ensuite, tu utilises :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SysFenAffiche(HandleApplication,sfaMinimise)
    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 chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 995
    Points
    1 995
    Par défaut
    Hello,
    l'exécutable est lancé avec lanceappli?
    Si oui, fonction en parametre 'exeiconise'... et voir si tu veux que l'exe lancé bloque ton programme ou pas... auquel cas, utiliser le troisième parametre de la fonction 'exebloquant', etc....
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Points : 61
    Points
    61
    Par défaut
    Merci pour vos réponses

    Effectivement, l'application est lancé via lanceAppli

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LanceAppli(c:\Lancement\"WX150PACKHFSQLCS.exe /SILENT /PILOT="+sRepIni,exeActif,exeBloquant)
    le problème c'est qu'il est toujours visible.

    Je vais tenter de voir du coté de l'API EnumDesktopWindows

  5. #5
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Citation Envoyé par EDM-TAHITI Voir le message
    fonction en parametre 'exeiconise'
    Bonjour,
    Comme te l'as dit Eric, que je salut au passage, la fonction lance appli permet de mettre un paramètre exeiconise qui, comme son nom l'indique, iconise l'exe.
    Regarde l'aide de la fonction tu trouvera ton bonheur.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Points : 61
    Points
    61
    Par défaut
    Oui, Je vois où tu veux en venir, mais ce que je voulais dire c'est que quel que soit le paramètre que je mets à cette place (exeActif, exeMaximise, exeInactif ou encore exeIconise) ça donne toujours le même résultat.

    C'est peut être à cause du type de l'exécutable (auto-extractible)

  7. #7
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 995
    Points
    1 995
    Par défaut
    Hello,
    Bon, tu veux installer le pack HFCS au prime abord...
    Et tu le fais à chaque fois que tu délivres l'installation?
    Je souhaiterais avoir plus d'info sur le sujet, le pourquoi du comment...
    Là, il me manque quelques infos pour te répondre au plus près de tes demandes...
    Plus tu donneras d'infos, plus précises seront nos réponses....
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Points : 61
    Points
    61
    Par défaut
    Oui

    comme tu l'as dit, je veux que le serveur s'installe automatiquement avec lanceAppli et à l'aide d'un fichier ini (oui mais seulement quand le client le veut).

    voici la syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SI INILit("POSTE","TypPoste","",fRepExe()+["\"]+"IniPrincipal.ini")="Serveur" ALORS
    sRepIni est une chaîne = fRepExe()+["\"]+"InstCS.ini"
    SI OuiNon(Non,"Si vous cliquer oui, une installation de serveur s’effectuera autoamtiquement","","Cliquer NON si le serveur Hyperfile est déjà installé") ALORS
    SI PAS LanceAppli("C:\lancement\WX150PACKHFSQLCS.exe /SILENT /PILOT="+sRepIni,exeActif,exeBloquant) ALORS Erreur(ErreurInfo())
    FIN
    FIN
    et voici le contenu de mon "InstCS.ini"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [PILOTAGE]
    Plateforme=1
    MAJ=2
    CCHF=1
    [SERVEUR]
    Serveur=Portable1
    Port=4900
    Repertoire=E:\MonAppli
    [MACHINE]
    Nom=Portable1
    Voilà, s'il en manque encore, je prie de le signaler

    Merci

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Points : 61
    Points
    61
    Par défaut
    une précision: Je veux une installation silencieuse mais je croix que /SILENT non plus ne marche pas.

  10. #10
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    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 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Question : avec ma méthode (récupération du handle), tu as essayé ?
    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

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Points : 61
    Points
    61
    Par défaut
    bien sur, j'y travail en ce moment

    le problème c'est que j'arrive à récupérer le PID en non le handle

    En utilisant SysFenHandle() je ne sais pas quoi mettre comme paramètre, j'ai utilisé le nom du processus mais cela ne fonctionne pas (ni le titre de la fenêtre d'ailleurs).

    Pour récupérer le pid J'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    cExeCherché est une chaîne = "Pack.exe"
    cLProcess est une chaîne
    cProcess est une chaîne
    nPid est un entier = 0
     
    // récupèrer la liste des processus
    cLProcess = ExeListeProcessus(exeNomCourt,exePID)
    Trace(cLProcess)
     
    POUR TOUTE CHAINE cProcess DE cLProcess SEPAREE PAR RC
    	SI ExtraitChaîne(cProcess,1,TAB) ~= cExeCherché ALORS nPid = ExtraitChaîne(cProcess,2,TAB);Info(nPid)
    FIN
    Si vous pouvez m'aider à récupérer le handle à partir de ce pid...

  12. #12
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    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 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Le code d'appel pour trouver ton appli
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Recherche du nom de l'appli -> si pas trouvée, on sort
    gsNomAppliTrouvee = "" // variable globale
    sApplicationAtrouver = "Titre fenêtre"
    AppelDLL32 ("User32", "EnumDesktopWindows" , Null, &API_EnumerationFenêtres, sApplicationAtrouver )
    SI gsNomAppliTrouvee = "" ALORS
    	RETOUR
    FIN
    
    // Handle de la fenêtre
    hWnd = SysFenHandle(gsNomAppliTrouvee)
    nResFocus = SysFenAffiche(hWnd ,sfaMinimise)
    La procédure qui va énumérer toutes les fenêtres "ouvertes".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PROCEDURE API_EnumerationFenêtres(nHwnd est un entier, TitreApplication est une chaîne)
    sTitreFenetre est une chaîne
     
    // Récupération du titre de la fenêtre
    sTitreFenetre = SysFenTitre(nHwnd)
     
    SI (Position(Majuscule(sTitreFenetre),Majuscule(TitreApplication)) <> 0) ALORS 
    	gsNomAppliTrouvee = sTitreFenetre
    FIN
     
    RENVOYER Vrai
    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

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Points : 61
    Points
    61
    Par défaut
    Mille mercis pour vos aides

    Ca fonctionne bien maintenant

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Engineering
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Engineering
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 25
    Points
    25
    Par défaut maximiser un exe externe non windev
    Bonsoir Frenchsting,

    Je suis débutant en Windev et je cherche à pouvoir maximiser un exe externe (non windev) a mon appli. J'ai bien lu les posts de ce sujet et tenté d'utiliser votre code mais je n'arrive pas à l'utiliser.
    Je souhaiterai pouvoir maximiser un exe externe sur clic d'un bouton de mon appli windev.

    Pouvez vous m"expliquer en détail comment fonctionne votre code?

    Cordialement.

    Yanick Lusson

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Engineering
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Engineering
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    Re Bonsoir,

    J'ai essayer de voir simple et ce que je veux faire fonctionne tout simplement avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    hwnd est un entier = SysFenHandle("TOTO")
    nResFocus est un entier = SysFenAffiche(hwnd ,sfaMaximise)
    Autant pour moi

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 23/01/2008, 09h17
  2. Fermer une application externe
    Par jean tof dans le forum C++Builder
    Réponses: 2
    Dernier message: 02/05/2006, 16h18
  3. [Système][Runtime]lancer une application externe
    Par mencaglia dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 22/09/2005, 17h27
  4. Réponses: 6
    Dernier message: 07/09/2005, 20h31
  5. [Excel] Utiliser une application externe par une macro
    Par thierry2.dlp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2005, 22h07

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