Page 1 sur 2
[..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 18:46
par Zippo
Salut tout le monde,
J'aimerais créer une gui fonctionnelle par dessus un jeu, en locurence Counter strike: source. J'aimerais faire apparaître une gui en plein jeu.
Merci d'avance

Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 18:48
par Tlem
Dans les propriétés étendue de votre GUI, utilisez WS_EX_TOPMOST.
Koda vous sera sans aucun doute très utile.

Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 19:34
par Zippo
Sa marche niquel pour les GUI ouvert sur le bureau ou autre mais pas dans un jeu pleine écran
Si quelqu'un à la solution.
Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 19:57
par zeshrek
DS_MODALFRAME est ton ami alors
Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 20:28
par Zippo
Non plus /:, Est-ce possible ?
Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 21:01
par leoueb
Bonsoir,
Pour ma part j'utilise ce code
1) Je crée une GUI avec variable de handle nommé "$Wiz_Message". il faut donc remplacer dans l'exemple "$Wiz_Message" par le handle de ta propre GUI.
2) Si besoin j'appelle la fonction 'SetWindowPos'
Au passage une fonction récupérée sur ce précieux Forum.
Code : Tout sélectionner
#include <Constants.au3>
SetWindowPos($Wiz_Message, $HWND_TOPMOST + $HWND_TOP, 0, 0, 0, 0, BitOR($SWP_NOMOVE,$SWP_NOSIZE))
;--------------------------------------------------------------------------
; Passage de la fenêtre en Mode TOP
;--------------------------------------------------------------------------
Func SetWindowPos($hwnd, $InsertHwnd, $X, $Y, $cX, $cY, $uFlags)
$ret = DllCall("user32.dll", "long", "SetWindowPos", "hwnd", $hwnd, "hwnd", $InsertHwnd, _
"int", $X, "int", $Y, "int", $cX, "int", $cY, "long", $uFlags)
EndFunc
Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 21:29
par ani
hihi, allez le mot clé est TOPMOST
voici de petit bout de code
le plus simple (1 pour mettre au premier plan 0 pour le retirer)
Code : Tout sélectionner
WinSetOnTop("[CLASS:SciTEWindow]", "", 1)
Msgbox(0,"","fenetre??")
+plus complexe
Code : Tout sélectionner
#include <Winapi.au3>
#include <Constants.au3>
Global $pRect = DllStructCreate($tagRect)
$win = WinGetHandle("[class:SciTEWindow]")
DLLCall("user32.dll","int","GetWindowRect", "hwnd", $win, "ptr",DllStructGetPtr($pRect))
MsgBox(0,"","Position:"&DllStructGetData($pRect,1) & ", "& DllStructGetData($pRect,2) & @LF & _
"Taille:"&DllStructGetData($pRect,3)-DllStructGetData($pRect,1) & ", " & _
DllStructGetData($pRect,4)-DllStructGetData($pRect,2) & @LF )
_WinAPI_SetWindowPos($win,$HWND_TOPMOST,DllStructGetData($pRect ,1),DllStructGetData($pRect ,2),DllStructGetData($pRect ,3)-DllStructGetData($pRect ,1),DllStructGetData($pRect ,4)-DllStructGetData($pRect ,2),$SWP_SHOWWINDOW)
;On vide la mémoire
$pRect = 0
Exit
y a bien d'autre manière

, allez une petite recherche

bon apprentissage et bonne continuation
Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 21:32
par overflow
Le TOP MOST ne passeras pas sur un jeu en plein-ecran
Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 22:03
par Zippo
Merci leoueb, mais ta technique marche pas non plus. Par contre, (dans le jeu) si je clique à l'endroit de l'interface, je fais un magnifique retour Windows. Sa prouve que il y es mais on ne le voit pas.
Tandis que TopMost (merci any) il n'a pas cette effet d'être là sans être là. L'autre solution est la plus proche mais encore défectueuse /:
Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 22:18
par ani
Comment récupére tu l'indice de l'interface ?
topmost = mettre en premier plan (always on top)
teste avec l'aide ("[class:HH Parent]")
voilà voilà
Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 22:23
par Zippo
HHPARENT ?
Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 22:26
par ani
nonnon :p cté pour tester le handle car avec scite on ne voit pas trop
donc tu le récupere comment ?
ps:tu as un outils normalement du nom de AU3info.exe "Autoit window info" , qui te permet de récuperer des info sur la fenêtre.
eedit:sinon passe par $WS_EX_APPWINDOW, çà le passera aussi au premier plan (force top-level)
Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 22:31
par Zippo
Je le récupère avec wingethandle.
Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 22:38
par Zippo
Oh! Autant pour moi, j'avais pas mis WinSetOnTop dans une boucle, à présent j'ai l'effet d'être là sans être là ^^
Re: [..] Gui Par dessus tout.
Posté : mer. 20 avr. 2011 23:36
par ani
Donc ?
Re: [..] Gui Par dessus tout.
Posté : jeu. 21 avr. 2011 00:57
par Zippo
Bah... non :'(
Re: [..] Gui Par dessus tout.
Posté : jeu. 21 avr. 2011 18:53
par leoueb
Salut,
Et je une question bête.
Par hasard, as tu essayé en parallèle de mettre un "BOTTOM" de la fenêtre de ton jeu ?
Re: [..] Gui Par dessus tout.
Posté : jeu. 21 avr. 2011 19:02
par Zippo
Bah non, comment faire ?
Re: [..] Gui Par dessus tout.
Posté : ven. 22 avr. 2011 22:23
par leoueb
Salut,
Je ne l'ai jamais fait, mais voici vers quel commande je chercherais :
1) Je récupère les infos de la fenêtre avec l'outils "AU3Info" fourni avec Autoit
2) J'irais d'abord voir la commande "WinSetOnTop" avec l'option "0" pour enlever le mode TOP de ton jeu.
3) J'irais également voir la commande "WinSetState" car avec cette commande tu peux faire :
@SW_HIDE = Hide window
@SW_SHOW = Shows a previously hidden window
@SW_MINIMIZE = Minimize window
@SW_MAXIMIZE = Maximize window
Voilà.
Re: [..] Gui Par dessus tout.
Posté : sam. 30 avr. 2011 18:47
par overflow
vous ne passerez pas au dessus un jeux en plein ecran
avec une simple gestion de fenetre
il te faudra t orienté vers les caractéristiques DIRECTX
fait une recherche sur "teamspeack overlay"
c est un prog qui ecrivait des infos par dessus un jeu en plein ecran
mais test sur des jeu solo chez toi car certain n aime pas ca le hook directx