Accueil > Forum > > > > cacher une fenetre avant son ouverture
cacher une fenetre avant son ouverture
vendredi 2 juillet 2010 à 19:21:29 |
cacher une fenetre avant son ouverture

youpiyoyo
|
Bonjour,
J'aurai une petite question, je cherche a cacher une fenêtre avant son ouverture. A la base je suis en c# et je me suis dit que la meilleure façon de faire ca était un hook sur le shell....
Bref me voici dans mes vieux souvenir de c++.
Bref je suis dans le hook de creation de fenetre et je scan les noms de class quand il choppe "IEframe" il le hide donc le principe exemple:
GetClassNameA(hwnd,classtest,50);
if (strcmp(classtest,"IEFrame")!=0) break;
g_OldEdit =(WNDPROC)SetWindowLong(hwnd, GWL_WNDPROC, (LONG)fSetStyle);
dans mon fSetStyle rediriger J'ai dans un premier temps essayer de overrider le style de la cration de fenetre avec un
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_VISIBLE);
sans succes
ou je rentrerai pas dans les details mais un copy memory base un peu sur l idee de ce site [ Lien ]
Je suis a cours d idee car j"arrive a faire ce que je veux faire c"est a dire empecher de montrer une fenetre avant sa creation juste showwindow(hwnd, SW_hide) aurait ete si simple.
@+
youpi :)
|
|
dimanche 4 juillet 2010 à 15:16:50 |
Re : cacher une fenetre avant son ouverture

racpp
|
Salut,
Une petite remarque concernant ton premier bout de code. Le flag GWL_WNDPROC dans SetWindowLong() permet de changer la procédure de la fenêtre et non son style. Il s'agit sûrement d'une erreur de copier/coller.
Pour que la modification de certains styles soit effective, il faudra ensuite appeler SetWindowPos() avec le flag SWP_FRAMECHANGED en dernier paramètre. A tester donc.
Il parait qu'il s'agit d'une fenêtre appartenant à un autre process. Tu peux t'inspirer de mon dernier code source dans lequel on sous-classe une telle fenêtre par injection de DLL. Dans la procédure de sous-classement, on peut intercepter WM_SHOWWINDOW, WM_WINDOWPOSCHANGING ou WM_WINDOWPOSCHANGED etc. Il est également possible d'utiliser SetWindowPlacement() au lieu de ShowWindow(). Une autre manière de "cacher" une fenêtre est de lui donner des dimensions nulles grâce à SetWindowPos(). Tout dépend de ce que tu veux faire exactement. Ce ne sont là que des idées. J'espère qu'elle te seront utiles.
|
|
mardi 6 juillet 2010 à 17:17:01 |
Re : cacher une fenetre avant son ouverture

youpiyoyo
|
Salut racpp,
effectivement, je penses que tu n'es pas loin de la solution.
je suis arriver a cacher la fenetre avant sont apparition avec
case WM_WINDOWPOSCHANGING:
((WINDOWPOS *)lParam)->flags &= ~SWP_SHOWWINDOW;else((WINDOWPOS *)lParam)->flags &= SWP_SHOWWINDOW;
break;
en revanche, si j'ai envie de la rendre visible j'ai pas encore reussi. Concernant le SWP_FRAMECHANGED je n'étais pas au courant il va falloir que je test. et concernant le GWL_WNDPROC oui je sous class bien mon windows procédure le nom de fstyle est peut être mal choisit
voici la def:
LRESULT CALLBACK fSetStyle(HWND hwnd,UINT Msg,WPARAM wParam, LPARAM lParam)
sinon les dimensions null avec setwindowpos ne marche pas, en revanche je pourrais faire un setwindowpos avec des coordonnées négatives mais je préfère ne pas utiliser cette méthode pour le moment.
il faut que je teste SetWindowPlacement
le top serait que cela marche
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_VISIBLE);
SetWindowPos() avec le flag SWP_FRAMECHANGED qui marche
en tout cas merci, je suis toujours ouvert a d'autre suggestion.
@+
youpi :)
|
|
mardi 6 juillet 2010 à 17:18:09 |
Re : cacher une fenetre avant son ouverture

youpiyoyo
|
pour le
case WM_WINDOWPOSCHANGING:
((WINDOWPOS *)lParam)->flags &= ~SWP_SHOWWINDOW;else((WINDOWPOS *)lParam)->flags &= SWP_SHOWWINDOW;
break;
enleve le else
@+
youpi :)
|
|
mardi 6 juillet 2010 à 18:07:34 |
Re : cacher une fenetre avant son ouverture

racpp
|
Pour changer le style d'une fenêtre on n'a pas besoin de la sous-classer. Tu peux assigner à la fenêtre une propriété avec SetProp(). Cette propriété sera utilisée comme flag permettant de cacher ou montrer la fenêtre selon sa valeur 0 ou 1 par exemple. Dans le traitement de WM_WINDOWPOSCHANGING utilise GetProp() pour récupérer cette valeur. SetWindowPos() provoque l'envoi du message WM_WINDOWPOSCHANGING.
|
|
mardi 13 juillet 2010 à 21:45:29 |
Re : cacher une fenetre avant son ouverture

youpiyoyo
|
J'essaye de voir avec ton GetProp, je suis entrain de voir dans le msdn mais je suis pas sur de comment tu veux faire par contre...
imaginons j'ai le handle de ma windows (hwnd) qui entrain de se creer (WM_create)
qu'est ce qu'il doit recuperer comme lpString [in] du getprop j'ai du mal a comprendre, pourrais-tu eclaircir par un exemple.
@+
youpi :)
|
|
mercredi 14 juillet 2010 à 15:57:35 |
Re : cacher une fenetre avant son ouverture

youpiyoyo
|
ecoute j'y arrive avec ton setprop et ton getprop
merci
@+
youpi :)
|
|
Cette discussion est classée dans : ouverture, cacher, fenetre, hwnd, color
Répondre à ce message
Sujets en rapport avec ce message
Ma fenetre reapparait........ SNIF!! [ par nerone21 ]
Bonjour a tout le monde, je sollicite votre aide pakeu ma méchante application qui doit dés son premier allumage aller dans la tray se maximise et rev
Copier un tableau de couleur vers la fenetre [ par supergrey ]
Bonjour, je voudrais copier les données d'un tableau de char contenant des valeurs RGB vers la fenetre de mon application.J'ai chercher mais je ne tro
Recuperer titre de la fenetre en premier plan [ par XKaliBur ]
Voila en résumer ce que je veut fair : récupérer la liste des titre des fenetre qui passent en premier plan, pour ça je récupère le handle de la fenet
SetWindowPos ou MoveWindow [ par mogwai93 ]
BonjourJ'aimerais redimensionner un objet HWND (static) sur une fenetre scrollabletout en gardant son alignement de départ (centré par rapport à la fe
Focus transprence reglable[c++] [ par kiki67100 ]
Salut a tous jai un code qui permet de changé le niveau de la transparence d'une fenetre qui se trouve dans le Focus en appuiyan sur SHIFT+HAUT pour a
COMBOBOX [ par Ilmen_ ]
[color=#5B0080]Alors voilà, j'ai un problème avec les COMBOBOX du programme que je suis en train d'écrire.\n Le contenu de mes SendMessage() ne s'affi
SetWindowText - Ne marche pas de C++ a VB!!! Aidez-moi:( [ par pepsidrinker ]
Aidez-moi svp.Voila,J'ai un DLL fait de c++ qui change le texte d'une fenetre avec SetWindowText.Voici le code (tout simple)--------------------------
Ajout d'une fenetre supplémentaire en plus de la fenetre principale dans un programme en win32 [ par djin94 ]
Bonjour à tous. Je butte actuellement sur un problème. Je souhaite en fait ajouter une fenetre transparente avec CreateWindowEx( ) pour créer une OSD
auto cacher une fenetre d'un programme [ par deck_bsd ]
Yop à tous,Voila, j'ai un programme dont j'aimerai bien qu'il tourne en arrière plan. Pour cela je voudrait que dés qu'il se lance, la fenêtre princip
SDL_Surface to HWND [ par unionx ]
Bonjour j'ai un question qui m'interesse beaucoup est je veux avoir un aide si il est possible , merci avance .bonne voila mon question* - je v
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|