clem0338
Messages postés65Date d'inscriptionmercredi 19 juin 2002StatutMembreDernière intervention 9 mars 2008
-
14 sept. 2005 à 10:19
clem0338
Messages postés65Date d'inscriptionmercredi 19 juin 2002StatutMembreDerniè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)
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDerniè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.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.
clem0338
Messages postés65Date d'inscriptionmercredi 19 juin 2002StatutMembreDerniè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
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.
clem0338
Messages postés65Date d'inscriptionmercredi 19 juin 2002StatutMembreDerniè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
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDerniè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.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDerniè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.
clem0338
Messages postés65Date d'inscriptionmercredi 19 juin 2002StatutMembreDerniè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???
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.
clem0338
Messages postés65Date d'inscriptionmercredi 19 juin 2002StatutMembreDerniè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.