|
Donner la mains à une autre application |
Débuté par Romuald Besset, 05 mai 2009 14:05 - 3 réponses |
| |
| | | |
|
| |
Posté le 05 mai 2009 - 14:05 |
Bonjour, Je dois basculer entre 2 projets WinDev via une touche de fonction. Je gère l'évènement de la touche dans chaque projet.
Là, je sais -vérifier si mon autre exécutable est lancé (ExeLancé), - le lancer (LanceAppli) - récupère les PID des process en cours (ExeListeProcessus)
- Trouver le handle d'une fenêtre dont j'ai le nom (SysFenHandle) - Donner le focus à une fenêtre dont j'ai le Handle(SysDonneFocus)
Il me manque une étape et c'est l'objet de ma question : Comment trouver le nom de la fenêtre en cours (ce nom change) dans un programme dont on a le PID,le nom etc ?
mes recherches ne m'ont mené nulle part de concluant.
Bien cordialement, R&B |
| |
| |
| | | |
|
| | |
| |
Posté le 05 mai 2009 - 16:23 |
une variable globale au projet qui stocke le nom de la fenêtre en cours. Et ceci dans chaque projet. Sinon un table hf avec 1 rubrique Login connecté + 1 Rub le nom de la fenêtre en cours.
Bon dev |
| |
| |
| | | |
|
| | |
| |
Posté le 05 mai 2009 - 17:32 |
je suis tombé sur quelquechose qui approche ma solution et que je vais creuser : http://forum.pcsoft.fr/thread.awp…
L'idée de stocker la fenêtre en cours est toutefois à l'étude.
Bien cordialement R&B |
| |
| |
| | | |
|
| | |
| |
Posté le 06 mai 2009 - 11:22 |
Un mélange de ce que j'ai pu trouver en cherchant "EnumWindows" et des fonctions WinDev précitées m'a permis de sortir de ce mauvais pas.:
Procedure Retour_VLB(wMessage, wParam, lParam) SI wParam = VK_F2 ALORS cExeCherché est une chaîne cLProcess est une chaîne cProcess est une chaîne cExe est une chaîne nPid est un entier cExeCherché = "MONEXE.exe" nNbLancé est un entier nNbLancé = ExeLancé(cExeCherché) SI nNbLancé>0 ALORS
cLProcess = ExeListeProcessus(exeNomLong,exePID) SI Position(cLProcess,cExeCherché)<>0 ALORS POUR TOUTE CHAINE cProcess DE cLProcess SEPAREE PAR RC cExe = ExtraitChaîne(cProcess,1) SI Position(cExe,cExeCherché) ALORS nPid = Val(ExtraitChaîne(cProcess,2)) SORTIR FIN FIN FIN SI nPid=0 ALORS
ExeTermine("MONEXE.exe") nPid = LanceAppli("MONEXE.exe",exeActif,exeNonBloquant) SINON gnPidExe = nPid
ListeHwndWindows est une chaîne ASCIIZ sur 513 = "" API("user32", "EnumWindows", &EnumWindowsProc &ListeHwndWindows)
cFenêtre est une chaîne POUR TOUTE CHAINE cFenêtre DE ListeHwndWindows SEPAREE PAR CRLF gnHwnd=Val(cFenêtre) SI SysHandleValide(gnHwnd) ALORS SysDonneFocus(gnHwnd) FIN
FIN SINON
nPid = LanceAppli("MONEXE.exe",exeActif,exeNonBloquant) FIN FIN FIN
FUNCTION EnumWindowsProc(lgHwnd est un entier, pAdresse est un entier )
processId est un entier AppelDLL32("USER32","GetWindowThreadProcessId",lgHwnd, &processId)
SI processId = gnPidExe ALORS
HwndWindows est une chaîne ASCIIZ sur 513 TitreWindows est une chaîne ASCIIZ sur 513 bVisible est un booléen
API( "USER32", "GetWindowTextA", lgHwnd, &TitreWindows, 512)
bVisible = API("USER32","IsWindowVisible",lgHwnd)
SI SansEspace(TitreWindows) <> "" ET bVisible = Vrai ALORS
Transfert(&HwndWindows,pAdresse, 513) HwndWindows = SansEspace(HwndWindows) SI HwndWindows <> "" ALORS HwndWindows += CRLF HwndWindows += lgHwnd Transfert(pAdresse,&HwndWindows,513) END END RENVOYER True
|
| |
| |
| | | |
|
| | | | |
| | |
|