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.

Code : Tout sélectionner

SetWindowState(0, #PB_Window_Minimize)
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.

:wink:

Re: Focus Window

Publié : lun. 24/mai/2021 22:14
par Ekim
Salut @Matc56, carrément le planificateur ? 8O

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
:wink:

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_ 8)

Il faut vraiment que je trouve une alternative au Ctrl+A puis Ctrl+C via SendMessage ou keybd_event_ ou autre peu importe :wink:

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