PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Connaitre la fenêtre active d'une autre application
Connaitre la fenêtre active d'une autre application
Débuté par Michel, 21 avr. 2009 18:04 - 4 réponses
Posté le 21 avril 2009 - 18:04
Bonjour,
Je dois développer une application externe qui peut être intégrée dans Sage Gescom l 100.
Je voudrais a partir de cette application Windev connaitre le handle de la fenêtre sage pour la fermer, mettre a jour les données pouis envoyer un double clic a l'écran top most du moment.
Comment faire.
1) pour récupérer le handel ou le nom de la fenêtre SAGE.
2) pour la fermer.
3) envoyer le double clic

Merci
Posté le 21 avril 2009 - 19:42
Voici le code que j'utilise

// code dans un bouton
nFichier est un entier = fOuvre("C:\HandleFenêtre.txt", foCréation)
SI nFichier=-1 ALORS
Erreur("Problème fichier")
FinProgramme()
FIN
// On lance l'énumération
AppelDLL32("User32", "EnumWindows", &EnumFenêtre, nFichier)
// On ferme le fichier
fFerme(nFichier)

// code de la procedure "call back"
PROCEDURE EnumFenêtre(nHwnd est un entier, nFichier est un entier)
// On écrit dans le fichier
fEcritLigne(nFichier, nHwnd)
RetourFonction est un entier // Type C :INT
hWnd est un entier // Type C :HWND
lpString est une chaîne // Type C :LPSTR, c'est l'adresse d'une chaîne, il est
aussi possible de spécifier directement une chaîne
nMaxCount est un entier = 255 // Type C :int
str est une chaîne

RetourFonction=AppelDLL32("USER32","GetWindowTextA",nHwnd,lpString,nMaxCount)
fEcritLigne(nFichier, lpString)
RENVOYER Vrai

Le but est de récupérer les noms des fenêtres dont celles de sage (ou autre appli) pour pourvoir fermer fermer celle qui m'intéresse. Dans ce code, j'essaie de voir comment sont coder les noms de fenêtre.
Posté le 03 décembre 2012 - 15:15
Bonjour,
J'ai la même problématique, as tu trouvé une solution ?
Posté le 20 mai 2019 - 11:03
Bonjour,

Si c'est juste pour fermer une application dont vous connaissez le nom de l'executable (ex: monappli.exe)
vous pouvez utiliser la commande dos 'TASKKILL', regardez la syntaxe avec 'TASKKILL /?'.
Cela pourrait donner :
LanceAppliAssociée("TASKKILL /IM monappli.exe /F")
N.B : Cette fonction va fermer TOUTES les applications avec ce nom (attention donc si vous ne voulez en fermer qu'une seule !).
Membre enregistré
69 messages
Popularité : +4 (4 votes)
Posté le 21 mai 2019 - 15:19
Bonjour,

Il est également possible de fermer l'autre application en envoyant un message Windows avec les touches ALT+F4 pour commander la fermeture de la fenêtre principale de l'autre application.

Voir Postmessage, SendMessage.

Bon développement