Bonjour,
J'arrive à récupérer le handle d'une fenêtre, mais je n'arrive pas à récupérer son nom (celui qui apparait dans le gestionnaire des tâches, onglet Applications).
Quelqu'un peut m'aider?
Merci d'avance.
Bonjour,
J'arrive à récupérer le handle d'une fenêtre, mais je n'arrive pas à récupérer son nom (celui qui apparait dans le gestionnaire des tâches, onglet Applications).
Quelqu'un peut m'aider?
Merci d'avance.
Salut,
Il faut utiliser l'API GetWindowThreadProcessId:
La variable lpProcessID retournera le PID de l'application contenant le handle spécifié.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 lpProcessID est un entier système handle_fen est un entier systeme = ton_handle API ("USER32","GetWindowThreadProcessId",handle_fen,&lpProcessID)
Ensuite tu utilises la fonction ExeListeProcessus et tu boucles sur les process en comparant leur PID avec lpProcessID.
A+
Vince
Ok, merci
et concrétement, comment on boucle avec la fonction ExeListeProcessus?
simplement en regardant l'aide pour connaitre la valeur de retour de la fonction.
Puis en utilisant
Code : Sélectionner tout - Visualiser dans une fenêtre à part POUR TOUTE CHAINE <s> DE <CHAINE> SEPAREE PAR <Séparateur>
Désolé, mais je découvre le windev, je ne suis pas habitué, et je dois corriger un truc sur une appli existante. Donc j'essaye de me débrouiller, mais je ne sais pas trop où chercher.
Donc, est-ce que je dois m'orienter vers:
la suite je ne sais pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 lpProcessID est un entier système handle_fen est un entier systeme = ton_handle API ("USER32","GetWindowThreadProcessId",handle_fen,&lpProcessID) ListeAppli = ExeListeProcessus(IpProcessID, exeNomCourt) POUR TOUTE CHAINE lpProcessID DE ListeAppli SEPAREE PAR RC ...
ok, j'ai réussi.
Le problème est que ça me renvoie le nom du processus, or ce que je veux récupérer, c'est le nom de l'application (onglet Application) dans le gestionnaire de tâche)
Dans ce cas, utilises:
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 buf est une chaîne fixe sur 255 API ("USER32","GetWindowTextA",ton_handle,&buf,255)
Vince
ok, ça me renvoie le nom de la fenêtre en cours, mais le nom de la tâche est différent...
En fait:
nom de la fenêtre: "Saisie commercial"
nom du processus: "Cegid.exe"
nom de la tâche: "100 - CL-COMMERCIAL"
je veux donc récupérer la tâche.
Normalement c est bien le nom de la fenêtre;
T'as pas une copie d'écran ?
je viens de capter un truc:
la tâche "100 - CL-COMMERCIAL" correspond à la fenêtre principale;
Le nom de la fenêtre: "Saisie commercial" est une fenêtre ouverte depuis la fenetre principale.
Mais les 2 fenêtres ont le même idprocess...
Donc ce que je veux, c'est le nom de la fenêtre principale.
Dans ce cas, il faut lister toutes les fenetres ouvertes et les comparer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // Dans le code du projet par exemple lpProcessID est un entier système API ("USER32","GetWindowThreadProcessId",ton_handle_fenetre,&lpProcessID) API ("USER32","EnumWindows",&EnumWindowProc,lpProcessID)
Après a toi de voir si le 1er passage dans la condition donne bien la 1ere fenetre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 // procedure globale PROCEDURE EnumWindowProc(hwnd,lParam) lpProcessID est un entier système API ("USER32","GetWindowThreadProcessId",hwnd,&lpProcessID) SI lpProcessID = lParam ALORS buf est une chaîne fixe sur 255 API ("USER32","GetWindowTextA",hwnd,&buf,255) FIN RENVOYER Vrai
A+
Vince
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager