Empecher le changement de fênetre

clem0338 Messages postés 65 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 9 mars 2008 - 14 sept. 2005 à 10:19
clem0338 Messages postés 65 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 9 mars 2008 - 14 sept. 2005 à 12:02
Bonjour,



Je voudrais savoir s'il y a une technique pour empecher l'utilisateur
de sélectionner une autre fênetre que celle de mon appli ( j'ai essayé
avec WM_ACTIVATE, WM_KILLFOCUS et les API SetForegroundWindow,
SetFocus, ... mais rien n'y fait)



Merci pour vos réponse.

Clem0338

16 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
14 sept. 2005 à 10:23
Mets ta fenetre en Maximized, puis ajoute lui le style top on most.
Elle sera tout le temps au premier plan.
0
clem0338 Messages postés 65 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 9 mars 2008
14 sept. 2005 à 10:27
Merci, mais malheureusement, je voudrais quel ne soit pas en Maximized justement, (je suis chiant non ??? )



Je pensai aussi à faire un clip cursor, mais finallement, ca ne va pas avec le projet



Merci encore

Clem0338
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
14 sept. 2005 à 10:28
J'oubliais,
Pour le style top most c'est : WS_EX_TOPMOST
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
14 sept. 2005 à 10:34
SetWindowLong( hWnd, GWL_STYLE, GetWindowLong(hWnd, GWL_STYLE) | WS_EX_TOPMOST );

Vala :p
if(!Meilleur("Joky")) return ERREUR;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
14 sept. 2005 à 10:35
L'autre solution est alors de faire un hook globale sur la souris.
Tu detectes les clics souris qui sont en dehors de ta zone client et si c'est le cas tu redonnes le focus a ta fenetre.
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
14 sept. 2005 à 10:38
Lol c'est une autre méthode ouai :D

Une autre encore, c'est de lister toutes les fenêtres, et toutes les cachées et voila lol :p



Le hook ca va loin quand même
if(!Meilleur("Joky")) return ERREUR;<
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 sept. 2005 à 10:40
Qu'une fenêtre soit topmost n'empêche pas l'utilisateur d'en mettre une autre au 1er plan, le system modal a disparu avec le 16 bits, depuis le 32 bits l'utilisateur doit toujours avoir la main.
On peut détecter le changement d'app de 1er plan et y ramener la sienne mais totalement déconseillé, ceci s'apparenterait à un virus ou autre truc malfaisant.

ciao...
BruNews, MVP VC++
0
clem0338 Messages postés 65 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 9 mars 2008
14 sept. 2005 à 10:41
OK;

if ( poli ) {

MessageBox ( NULL, "Merci pour vos réponse, j'ai pas
trouvé mon bonheur mais je vais faire avec", "..::Encode merci::..",
MB_ICONEXCLAMATION );

} else {

MessageBox ( NULL, "Ouaips", "Pourquoi pas",
MB_ICONERROR );

}

Clem0338;
0
clem0338 Messages postés 65 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 9 mars 2008
14 sept. 2005 à 10:44
BruNews,

l'application que je suis en train de développer doit servir
d'interface utilisateur sur un PC dédié à cette interface, le but etant
d'empecher "monsieur tout le monde" d'acceder à Windows



pourrais tu développer ton explication STP.



Merci

Clem0338
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 sept. 2005 à 10:59
oui j'entrevoyais ce que tu veux mais il n'y a pas trop moyen d'empêcher l'utilisateur de naviguer entre les progs.
On peut intercepter WM_ACTIVATEAPP et ramener son prog devant mais pas très joli. Il faudrait refaire un shell et remplacer celui de Windows.

ciao...
BruNews, MVP VC++
0
clem0338 Messages postés 65 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 9 mars 2008
14 sept. 2005 à 11:04
Cool, merci pour ta réponse, aurais tu par hazard quelques zéxemples?
Merci pour cette réponse qui me parrait beaucoup mieux correspondre à
mon attente

Clem0338
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
14 sept. 2005 à 11:20
Pourquoi ne pas mettre la fenetre en Maximized, supprimer la barre de titres et faire un hook sur le raccourci clavier comme Ctrl+Alt+Suppr, Al+Tab, ALt + Echap...

Les utilisateurs n'aurait d'autre choix que se se servir de ton appli a moins de rebooter le PC.

Pour info, c'est ce qui est fait ans les logiciels industrielles.

Cette solution reste propre et très évolutive. Par la suite tu pourras toi meme géré tes raccourcis, afin de donner la possibilités d'ouvrir d'autre programme.
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
14 sept. 2005 à 11:23
Joky> Pour mettre une fenetre au premier plan, pas besoin de passer par SetWindowLong...
Soit tu le fais a la création en passant le style WS_EX_TOPMOST, soit tu le fais a n'importe quel moment dans ton prog avec :

SetWindowPos(hWnd,HWND_TOPMOST,X,Y,CX,CY,0);

X, Y etant les coordonnées du coin haut gauche de ton appli.
CX, CY etant la taille de ta fenetre.
0
clem0338 Messages postés 65 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 9 mars 2008
14 sept. 2005 à 11:34
C'est exactement ce que je fais actuellement ( un hook sur le clavier
pour bloquer les touches + "DLL Injection" pour bloquer CAD +
suppression de la barre des taches et des icones du bureau, Hook sur la
souris pour bloquer clic sur le bureau ).



Pour le TOP_MOST, je le fais directement avec CreateWindowEx( WS_EX_TOPMOST, "toto", ....



Il ne me manque plus que l'intégration en tant que shell (j'ai déjà
trouvé quelques choses intérressante pour ca, Merci BruNews).



Pourriez vous m'expliquer comment créer un composant Internet Explorer dans une fênetre???

Clem0338
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 sept. 2005 à 11:49
CTRL_ALT_SUPPR ne peut pas être hooké, il est enregistré exclusif (RegisterHotKey) par Winlogon au démarrage system, interception seulement possible en kernel mode dans driver.

ciao...
BruNews, MVP VC++
0
clem0338 Messages postés 65 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 9 mars 2008
14 sept. 2005 à 12:02
Je sais, c'est pourquoi j'ai du passé par une dll avec injection de
code dans SAS de WinLogon.exe pour annuler les touches et ca marche
vraiment nickel.

Clem0338
0
Rejoignez-nous