Page 1 sur 1
Focus Window
Publié : lun. 17/mai/2021 21:02
par Ekim
Bonsoir à tous)
Actuellement je bloque sur un problème concernant le focus de ma fenêtre, en gros j'essaie de faire perdre volontairement le focus de ma fenêtre pour permettre à une autre fenêtre de passer devant, cette deuxième fenêtre ne fait pas partie de mon appli, il s'agit d'un programme tiers
Ma question est la suivante, y a t il une fonction prédéfinit nativement dans PB pour permettre à ma fenêtre de perdre son focus sans pour autant la faire descendre ?
Je vous remercie pour votre soutien

Re: Focus Window
Publié : mar. 18/mai/2021 1:00
par Ekim
Il y a peut-être la solution de retrouver sa propre fenêtre pour ensuite manipuler le handle
Handle = FindWindow_(0,"ma fenêtre")
SetForegroundWindow_(Handle)
Sauf que la commande "SetForegroundWindow" met la fenêtre en avant et non pas en arrière comme je le souhaitais

Re: Focus Window
Publié : mar. 18/mai/2021 1:06
par case
du coup si tu met le programme tier en avant ca marche pas ?puisque la tu n'utilise pas une commande purebasic mais une API windows?
sinon toujours avec les apis
Code : Tout sélectionner
win=OpenWindow(#PB_Any,0,0,500,500,"je vais tout en bas")
SetWindowPos_(WindowID(win),#HWND_BOTTOM,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
Repeat
ev=WaitWindowEvent(0)
Until ev=#PB_Event_CloseWindow
Re: Focus Window
Publié : mar. 18/mai/2021 21:45
par Ekim
Salut @Case ton code est sympa et m'apprend des choses au passage)
Mais si j'ai bien compris, il n'est pas possible de faire autrement que de faire descendre la fenêtre ?
Peut-être en fouillant côté constante il y a la solution
#HWND_BOTTOM
Re: Focus Window
Publié : mer. 19/mai/2021 11:35
par Ollivier
Une méthode non subversive sous Windows seulement consiste à détecter la fenêtre active avant d'ouvrir une fenêtre PureBasic avec GetForegroundWindow_().
Re: Focus Window
Publié : mer. 19/mai/2021 15:45
par Micoute
Moi j'utilise IsWindow(fenetre).
Re: Focus Window
Publié : jeu. 20/mai/2021 8:39
par case
la fenêtre ne "descend" pas verticalement, elle se met en arrière plan, derrière toute les autre fenêtres.
Re: Focus Window
Publié : lun. 24/mai/2021 14:17
par Ekim
Oui exact, plus certaines commandes ne semblent pas fonctionner avec toutes les applis((
Par exemple, au travail, on a un logiciel de gestion de stock qui semble être immunisé

La seule chose que je pourrais essayer est la sélection du texte contenu dans la fenêtre,
Donc si quelqu'un connaît les commandes qui peuvent intervenir ainsi, je suis preneur à 100%
Re: Focus Window
Publié : lun. 24/mai/2021 15:31
par Marc56
Plusieurs solutions:
1. Minimiser la fenêtre (dès l'ouverture ou après) donc la fenêtre précédente devient active.
2. Si l'application n'a pas besoin de l'utilisateur, faire une application console et la lancer par le planificateur de tâches (taskschd.msc) à l'ouverture de session, à une certaine heure etc.

Re: Focus Window
Publié : lun. 24/mai/2021 22:14
par Ekim
Salut @Matc56, carrément le planificateur ?
Pour l'explication, j'essaye d'automatiser les différentes tâches sur l'appli pro, concernant les focus des fenêtres, je pense avoir la solution grâce à vous
Mais dorénavant, j'aimerais aller plus loin, pour cela mettre tout les armes de mon côté, c'est-à-dire, j'aimerais dans un deuxième temps capturer le texte de l'application (qui est en mode console), ceci me permettrait de ne pas reproduire la gestuelle constamment, mes doigts vous remercieront

Existerait il une ou des commandes spécifiques a sendmessage_ ou à keybd_event_ pour faire une sélection complète uniquement du contenu texte de la l'appli pro s'il vous plaît ?
Re: Focus Window
Publié : mar. 25/mai/2021 10:33
par Marc56
Ne pas confondre le
planificateur et le
gestionnaire de tâches. Le panificateur c'est la commande
AT (ou maintenant
schtasks.exe en ligne de commandes ou
taskschd.msc en GUI), donc une façon de lancer un programme à une certaine heure ou en fonction d'évènements. Donc on peut s'en servir pour lancer un programme en arrière plan sans avoir à en faire un service.
Si ton programme console ne fait qu'afficher du texte et que tu n'a pas d'interaction, alors lances-le depuis ton programme PB (RunProgram) et récupère les lignes de sorties.
Regarde l'exemple donné par RunProgram()
https://www.purebasic.com/french/docume ... ogram.html

Re: Focus Window
Publié : mar. 25/mai/2021 20:55
par Ekim
J'y ai pensé au Runprogram mais cela ne fonctionne pas sur l'appli pro, aussitôt une alerte sécurité neutralise mon appli pb puis fait planter tout le Pc, il se met à ramer comme cela ne devrait pas être permis
Mais par contre, il ne semble pas s'opposer au FindWindow_
Il faut vraiment que je trouve une alternative au Ctrl+A puis Ctrl+C via SendMessage ou keybd_event_ ou autre peu importe

Re: Focus Window
Publié : mar. 25/mai/2021 22:11
par Ar-S
C'est quoi ton soft ?
Re: Focus Window
Publié : mar. 25/mai/2021 22:57
par Ekim
Lequel, soft perso ou de la boîte ?
Re: Focus Window
Publié : lun. 31/mai/2021 0:28
par Ekim
Allo mars ici la terre