croquibus
Messages postés6Date d'inscriptionvendredi 23 mars 2007StatutMembreDernière intervention18 avril 2007
-
23 mars 2007 à 17:05
cs_patrick2023
Messages postés3Date d'inscriptiondimanche 18 janvier 2004StatutMembreDernière intervention 5 janvier 2016
-
28 mars 2008 à 17:59
Hello !!!
Voila, ma mission est d'automatiser entièrement le fonctionnement d'une application.
Je programme sous Windev et j'utilise l'appel d'API windows pour gérer un certain nombres d'actions.
Sur une fenêtre fille, je parviens bien à ouvrir une combo, à sélectionner une ligne précise parmi les différents éléments et la combo se referme bien sur mon élément sélectionné.
Maintenant, l'élément que j'ai sélectionné dans cette combo reste sur fond bleu comme si il avait le focus et donc ensuite je ne peu plus cliquer sur le bouton de validation de cette même fenêtre comme si je n'avais plus la main.
Si dans mon programme j'ignore le passage sur cette combo, le clic sur mon bouton de validation fonctionne.
Qu'elle est l'api qui me libèreait de cette impasse ?
cs_patrick2023
Messages postés3Date d'inscriptiondimanche 18 janvier 2004StatutMembreDernière intervention 5 janvier 2016 26 mars 2007 à 19:53
Bonjour croquibus,
bonjour les autres,
J'ai également l'intention de piloter une apllication en Windev. J'en suis au début. Je viens de récupérer les handle de la fenetre. Je ne sais pas encore comment distinguer les objets combos. Et encore moins de trouver leur contenu.
Une aide de ta part me serait précieuse.
Peux tu m'envoyer un exemple.
Merci.
croquibus
Messages postés6Date d'inscriptionvendredi 23 mars 2007StatutMembreDernière intervention18 avril 2007 26 mars 2007 à 09:51
Ok, merci pour cette réponse qui me va apparement.
Mais en tant que débutant comment faut-il que je renseigne les variables HwndBtnOk, WM_SetFocus et HwndCombo ???
Sous windev, ces valeurs sont de type entière.
Faut-il que j'indique le Handle de chacun des objets concernés de ma fenêtre dans ces variables ??
Si oui, comment récupérer les Handle d'un objet précis sur une fenêtre afin de pouvoir intervenir dessus ?
Merci encore et désolé pour ce départ un peu cahotique.
croquibus
Messages postés6Date d'inscriptionvendredi 23 mars 2007StatutMembreDernière intervention18 avril 2007 27 mars 2007 à 09:21
Salut Patrick,
Ok pour te retransmettre mon savoir mais comme dirait Ségolène (donnant donnant)
C'est à dire que si tu as des infos, merci de me les retransmettre à ton tour.
Bon, je ne sais pas si il y a d'autre méthode mais pour l'instant cela fonctionne.
Moi je lance une appli non Windev avec DDELANCE et ensuite :
//----------------------------------------------------------------------------------------------------------
// Comment tu dois déclarer les variables pour piloter la souris
//----------------------------------------------------------------------------------------------------------
sz
LEFTDOWN est une chaîne ASCIIZ sur
50
sz
LEFTUP est une chaîne ASCIIZ sur
50sz
ABSOLUTE est une chaîne ASCIIZ sur
50n
LDOWN est un entier système
n
LUP est un entier système
n
ABSO est un entier système
//---------------------------------------------------------------------------------------------------------------
// Comment tu dois renseigner les variables pour clic enfoncé ou pas
//---------------------------------------------------------------------------------------------------------------
sz
LEFTDOWN =
"H2"n
LDOWN = &
szLEFTDOWN sz
LEFTUP =
"H4"n
LUP = &
szLEFTUP sz
ABSOLUTE =
"H8000"
n
ABSO = &
szABSOLUTE//------------------------------------------------------------------------------------------------------
// Et là, tu balades ta souris où tu veux
//------------------------------------------------------------------------------------------------------
X
=
20
// Vers la droiteY
=
35
// Vers le basb
RetourneFonction =
API(
"USER32",
"SetCursorPos",
X,
Y)
b
RetourneFonction =
API(
"USER32",
"mouse_event",
nLDOWN +
nABSO,
X,
Y,
0,
0)
b
croquibus
Messages postés6Date d'inscriptionvendredi 23 mars 2007StatutMembreDernière intervention18 avril 2007 27 mars 2007 à 15:35
Bon, j'avance à pas de souris.
Ok pour la reprise de focus sur mon bonton de validation en sortant de ma combo.
Merci encore
Mais n'y a t'il pas de différence entre une fenêtre appartenant au monde de Windows comme c'était le cas pour cet première fenêtre et une fenêtre appartenant à un programme étranger à windows.
Car voila, mon premier travail était d'ouvrir et de sélectionner automatiquement une imprimante par défaut dans le monde windows. Ca c'est OK
Mais je suis maintenant dans une fenêtre fille appartenant à un programme non windows, sur laquelle je dois également sélectionner un élément dans une combo et là ????
Il ne se passe rien alors que je viens de le faire juste avant ????????
Je parviens bien à récupérer le handle et le nom de la fenêtre mère de l'application mais je ne parviens pas à connaitre le handle de cet petite fenêtre qui se trouve au centre de mon écran et de ce fait, je ne parviens pas à avoir la main dessus.
Une fois cette petite fenêtre affiché, j'ai beau envoyer des GetForegroundWindow, GetActiveWindows, C'est toujours le handle de la fenêtre mère qui apparait.
La question c'est, comment faire pour récuperer le handle de ce fichu petit bout de fenêtre ??
Car j'imagine que lorsque j'aurai son handle, que tout sera beaucoup plus facile pour moi.
croquibus
Messages postés6Date d'inscriptionvendredi 23 mars 2007StatutMembreDernière intervention18 avril 2007 28 mars 2007 à 16:13
Bon, j'ai finalement trouvé une patie des mes problèmes.
En fait mon programme de pilotage d'une autre appli était bon mais apparement il fonctionnait trop vite.
He voui, depuis que je lui est mis quelques temporisation dans le ventre, tout se déroule correctement pour l'instant.
Mais il me reste encore quelques obstacles à franchir.
Je n'arrive toujours pas à obtenir l'id d'un contrôle sur une de ces fenêtres.
Par exemple, à l'issue de mon choix d'imprimante (PdfCréator) entre autre j'aimerai personnaliser le nom du fichier que va me cracher PdfCréator dans le champ prévu à cet effet.
Mais pour cela, il me faut l'id de ce champ et je ne parviens toujours pas à le récupérer afin d'utiliser ensuite la fonction SendMessage(SetDlgItem ...) et le nom de mon fichier finale.
En deux mots, je souhaite modifier le contenu d'une zone de saisie.
ben_vip
Messages postés2Date d'inscriptionmardi 3 avril 2007StatutMembreDernière intervention 3 avril 2007 3 avril 2007 à 16:07
Bonjour a tous
Je me permet de poster a cet endroit car j'ai un souci (visiblement dans l'utilisation des API Windows sous Windev)
Je suis actuellement sous Windev 9.0, et je souhaite récupérer le Login Windows, dans le but de le concaténer à un nom de répertoire pour nettoyer les fichier temporary internet files.
J'ai essayé de chercher dans l'aide de Windev, sans résultat.
croquibus
Messages postés6Date d'inscriptionvendredi 23 mars 2007StatutMembreDernière intervention18 avril 2007 18 avril 2007 à 15:02
Hello !!!
me revoilou avec une petite question.
quelle instruction api permet de griser et de dégriser une zone EDIT.
Je vous rappel que j'utilise l'api au travers de Windev.
Mais donnez moi toujours les grandes lignes, je me débrouillerai avec les points de détail.
cs_patrick2023
Messages postés3Date d'inscriptiondimanche 18 janvier 2004StatutMembreDernière intervention 5 janvier 2016 28 mars 2008 à 17:59
Bonjour croquibus,
Excuses moi, je n'ai pas eu le temps de participer.
Cela m'intéresse toujours.
J'ai trouvé ce bout de code qui pourrait peut etre t'aider :
PROCEDURE
Griser_boutonFermer(
Handel est une entier système,
Griser est un booléen =
Vrai )
RetourFonction
est un booléen
countMenu
est un entier
SI
Handel =
0 ALORS RENVOYER
FauxSI
Griser ALORS
// Grisage de l'incone de fermeture du menu systéme de la fenêtre