Page 1 sur 1

[R] Interface devant les autres mais sans le focus

Posté : mar. 28 déc. 2010 16:15
par matheod
Bonjour,
J'aimerais savoir si il est possible de faire en sorte que l'interface de notre application soit devant les autres, mais sans quel prenne le focus, autrement dit, que la fenetre s'affiche mais qu'elle soit inexistante au niveau de la souris.
En gros si l'on clic sur notre application ca cliquera juste en dessous de l'application.
Merci
Bonne journée

Re: [..] Interface devant les autres mais sans le focus

Posté : mar. 28 déc. 2010 18:24
par zeshrek
En 1 mot : Oui !
Voir les styles associés a GUICreate

Re: [..] Interface devant les autres mais sans le focus

Posté : mar. 28 déc. 2010 18:28
par matheod
Justement, j'ai cherché à ce niveau là et je n'ai pas trouvé.

Re: [..] Interface devant les autres mais sans le focus

Posté : mar. 28 déc. 2010 19:15
par zeshrek
Et pourtant, c'est bien là. Allez, un petit indice le style a appliquer, c'est l'antépénultième*.





* Ce mot là, j'aurai jamais cru le placer sur un forum informatique !

Re: [..] Interface devant les autres mais sans le focus

Posté : mar. 28 déc. 2010 21:14
par Colin117
l'antépénultième, c'est pas l'avant dernier ? ou celui d'avant encore je sais plus xD. (oui je flood je sais je sort :()

@EDIT@

J'avais pas envie de flooder d'avantage, zeshrek ENORME ce lien O.O

Re: [..] Interface devant les autres mais sans le focus

Posté : mer. 29 déc. 2010 10:49
par zeshrek
Plus d'infos ICI
(a floodeur, floodeur et demi :D)

Re: [..] Interface devant les autres mais sans le focus

Posté : sam. 01 janv. 2011 17:15
par matheod
Tu pensais à quel style ?
Car j'ai testé tout les styles positionnés en avant dernier et aucun n'a fait ce que je voulais.

Re: [..] Interface devant les autres mais sans le focus

Posté : sam. 01 janv. 2011 17:35
par zeshrek
Bah c'est normal, l'antépénultième c'est pas l'avant dernier, mais celui d'avant !
Par contre, je me met publiquement une grosse baffe sur mon groin d'ogre, parceque je t'orientais a tort sur $DS_MODALFRAME qui n'a rien a voir avec ta demande).
Ceci dit, je ne crois pas qu'il soit possible de faire une GUI qui soit affichée mais qui quand tu cliques transmet le clic a la fenetre d'en dessous.

Re: [..] Interface devant les autres mais sans le focus

Posté : dim. 02 janv. 2011 09:32
par SagePourpre
C'est très possible...
En voici un exemple.


Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <Constants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
Opt('WinWaitDelay',0) ; Important afin de minimiser le délai d'opération

$gui = GUICreate('Meh !', 300, 300, -1, -1)
$active = WinGetHandle('[ACTIVE]')  ; On récupère la fenêtre active
GUISetState()   ; La fenêtre de ton application vole le focus
WinActivate($active) ; Le focus est redonné à la fenêtre qui avait le focus juste avant
GhostWin($gui, 100)  ; La fonction qui t'intéresse 

Sleep(4000)
GhostWin($gui)
Sleep(3000)


; Crée une fenêtre OnTop avec un niveau de transparence qui laisse passer la souris au travers.
; $trans :          0-255     0 = invisible            255 = opaque ( l'attribut OnTop est également désactivé)
Func GhostWin($hWnd, $trans = 255)
    Select
        Case $trans = 255
            WinSetOnTop($hWnd, "", 0)
            WinSetTrans($hWnd, "", $trans) ; No transparency
            _WinAPI_SetWindowLong($hWnd, $GWL_EXSTYLE, _
                    BitAND(_WinAPI_GetWindowLong($hWnd, $GWL_EXSTYLE), BitNOT($WS_EX_TRANSPARENT)))
                Case Else
            WinSetOnTop($hWnd,'',1)
            WinSetTrans($gui, "", $trans)
            _WinAPI_SetWindowLong($gui, $GWL_EXSTYLE, _
                    BitOR(_WinAPI_GetWindowLong($gui, $GWL_EXSTYLE), $WS_EX_TRANSPARENT))
    EndSelect
EndFunc   ;==>GhostWin
 

Re: [..] Interface devant les autres mais sans le focus

Posté : lun. 03 janv. 2011 21:07
par matheod
Oh merci beaucoup !
Mon sauveur ^^

Merci à tous ceux qui ont répondu à mon topic ;-)