2009-07-23 10 views
8

J'ai besoin de montrer la forme comme haut niveau à l'échelle du système, par ex. over/all/autres fenêtres à l'écran. Je me rends compte que c'est une pratique de l'IU habituellement/mauvaise /, mais j'ai un scénario très spécifique à l'esprit.Comment faire pour modal système de formulaire en utilisant C#?

Nous avons l'intention d'utiliser des PC Windows normaux pour les caisses enregistreuses. Il y a une option sur l'écran pour ouvrir le tiroir-caisse. Ce serait plutôt mauvais pour quelqu'un d'appuyer sur un écran et d'avoir accès à de l'argent quand le commis ne regarde pas. Nous avons donc équipé les PC de lecteurs RFID et chaque employé a sa propre carte RFID qui sera utilisée pour l'authentification.

J'ai besoin cependant d'un mécanisme pour verrouiller l'ordinateur (ou le rendre inutilisable) quand l'employé s'en va. Se déconnecter semble trop gênant.

Toutes idées sont les bienvenues.

LP, Dejan

+0

Donc, fondamentalement, vous voulez ré-écrire la partie de verrouillage de Windows? Eh bien, bonne chance pour obtenir la sécurité assez bien. –

+0

Non, je n'ai pas l'intention de le faire. Idéalement, je voudrais/utiliser/la partie de verrouillage de Windows. Si vous avez une idée de comment le faire à partir de C#, je serais heureux de savoir. –

+2

Le vendeur peut verrouiller les fenêtres à l'aide de la touche Win + L. Quand il revient, il peut simplement le déverrouiller en entrant son mot de passe. Est-ce que ça ne marchera pas? – chikak

Répondre

8

Eh bien, après une journée d'essai et d'erreur, je suis venu à une sorte de solution.

Il comprend les étapes suivantes:

1. Lorsque le bouton "Lock" est pressée nouvelle (vide)/bureau/est créé. Le programme est exécuté sur ce bureau avec un formulaire en plein écran et une procédure de connexion. Il n'y a rien d'autre à commuter ou exécuter sur ce bureau.

2. Le gestionnaire de tâches est désactivé via le registre. Bien sûr, quelqu'un non invité peut toujours accéder au menu Ctrl-Alt-Suppr, mais il n'y a rien de mal particulier qu'il puisse faire là-bas.

3. Alt-F4 et tels sont désactivés.

4. Lorsque l'authentification est effectuée, le programme revient au bureau d'origine et tout se déroule normalement.

Il y a un certain P/Invoke requis, bien sûr. Si quelqu'un veut faire quelque chose de semblable, peut-être s/il trouvera mon exemple nu os utile - link text

LP, Dejan

-2

Form a une propriété TopMost.

mis Form.TopMost = true

+0

Cela n'aide pas. On peut simplement appuyer sur la touche Windows. –

1

Je pense que vous aurez besoin de regarder en appelant vers le bas à l'API Win32 pour y parvenir.

Vous aurez besoin de regarder dans:

ShowWindow et SetWindowPos

et les invoquer avec un code similaire à ce qui suit (notez c'est pseudo-code):

[DllImport("user32.dll")] 
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 

static void ShowTopmost(Form frm) 
{ 
    ShowWindow(frm.Handle, SW_SHOWMAXIMIZED); 
    SetWindowPos(frm.Handle.ToInt32(), HWND_TOPMOST, 
     0, 0, [width of desktop], [height of desktop], 
     SWP_SHOWWINDOW); 
} 
+0

Merci pour suggestion, même si je suis allé un autre itinéraire ... –

Questions connexes