2009-11-27 6 views
4

J'essaie de créer une application qui doit verrouiller l'accès au PC pendant son exécution. Je dois faire fonctionner l'application au sommet, en mode plein écran, et m'assurer que l'alt-tabulation ne permet pas d'accéder à d'autres applications ou à la barre des tâches. Jusqu'à présent, j'ai défini TopMost = true, WindowStyle = WindowStyle.None et WindowState = WindowState.Maximized qui réalise la plupart de ce dont j'ai besoin, mais je reçois toujours des instances où la barre des tâches devient visible. J'ai essayé d'implémenter le comportement de LostFocus sur la fenêtre, mais cela ne semble pas me donner le comportement dont j'ai besoin.WPF en mode kiosque - problèmes de la barre des tâches

Quelqu'un peut-il me diriger dans la direction dont j'ai besoin pour mettre en œuvre ce comportement, s'il vous plaît?

Informations additionnelles
Malheureusement, la nature de ce projet est telle que nous ne pouvons pas modifier les machines clientes, et ils sont en cours d'exécution d'un mélange de XP, Vista et Win7. Les PC ne nous appartiennent pas, mais doivent être utilisés pour la livraison de contenu de manière aussi sécurisée que possible. Les propriétaires des PC sont conscients des restrictions liées à l'exécution du logiciel et sont heureux qu'ils soient "verrouillés" pendant l'exécution de notre application, mais ils ne peuvent pas être modifiés autrement.

Autres moyens
HakonB mentionné application BabySmash Scott Hanselman, alors je suis allé chercher sa façon de gérer la situation. Comme HakonB le dit, ce n'est pas la méthode la plus propre de gérer la perte de focus, mais cela semble fonctionner, ou du moins devrait le faire jusqu'à ce que je trouve une meilleure solution. Il utilise une minuterie qui se déclenche toutes les secondes et déclenche un appel à la méthode SetForegroundWindow (IntPtr hWnd) de user32.dll pour récupérer le focus, qu'il soit actif ou non. Merci pour le heads-up, HakonB!

+1

savez-vous qu'il ya une version de Windows Kiosk (je pense qu'il est XP Embedded ou quelque chose)? Peut-être que cela va répondre à votre besoin :) – OregonGhost

+0

La barre des tâches est rendue par Explorer.exe, vous pouvez donc tuer ou empêcher le démarrage. Je me souviens vaguement qu'il y avait une clé de registre qui sélectionnait le shell Windows - peut-être que cela pourrait être supprimé de sorte qu'aucun shell ne démarre. Vous pouvez toujours démarrer l'Explorateur manuellement à l'aide du Gestionnaire des tâches (à partir de Ctrl-Maj-Échap ou du menu Ctrl-Alt-Suppr). –

+0

Malheureusement, la nature de ce projet est telle que nous ne pouvons pas modifier les machines clientes, et ils exécutent un mélange de XP, Vista et Win7. Les PC ne nous appartiennent pas, mais doivent être utilisés pour la livraison de contenu de manière aussi sécurisée que possible. Je vais mettre à jour la question aussi. – ZombieSheep

Répondre

4

Jetez un coup d'oeil à BabySmash de Scott Hanselman. Vous pouvez trouver le site à BabySmash

Il avait quelques entrées de blog décrivant son travail pour faire l'application. Il dispose d'une application de sécurité pour bébé en mode kiosque.

Vous pouvez trouver le projet sur Codeplex

+0

J'ai déjà regardé BabySmash, et je n'ai pas pu déduire du code/XAML comment il a réussi à cacher la barre des tâches de cette façon. Je vais cependant relire les articles du blog, dans l'espoir de l'illumination. Merci. – ZombieSheep

+0

Il ne l'obtient pas aussi proprement que je l'aurais aimé: Il a une minuterie qui se déclenche une fois par seconde et dans l'événement de minuterie, il s'assure que sa fenêtre principale est la fenêtre de premier plan. La logique est dans le fichier Controller.cs. Btw, mon fils n'a rien cassé en se brisant :-) – HakonB

Questions connexes