2009-09-21 15 views
1

J'ai une application C# en cours d'exécution. Maintenant, je veux arrêter cette application lorsque le système est verrouillé. Comment puis je faire ça. Toute aide à ce sujet est vraiment appréciée.Comment identifier les touches du clavier en utilisant C#

Merci Hougen pour la solution. pourriez-vous s'il vous plaît me suggérer devrions-nous inclure des Dlls pour gérer "Microsoft.Win32.SystemEvents.SessionSwitch" cet événement? Et dans quelle couche ce code devrait résider. Je suppose que c'est dans la couche Business. Toute sugeestion regading cela?

+3

Qu'est-ce que votre question a à voir avec le clavier? – Joey

+0

Envisagez-vous d'attraper la combinaison de clavier Win + L? Je ne pense pas que cela résoudrait votre problème puisque l'ordinateur peut encore être verrouillé en utilisant d'autres méthodes ... –

+0

Voulez-vous dire verrouillé, comme dans Win + L, ou verrouillé comme gelé, s'est écrasé? –

Répondre

9

Facile. Créez un gestionnaire d'événements pour l'événement

Microsoft.Win32.SystemEvents.SessionSwitch 

. Dans celui-ci, vérifiez la propriété SessionSwitchEventArgs.Reason pour la valeur SessionSwitchReason.SessionLock.

Shyam Désolé de ne pas vous revenir tout de suite. Vous ne devriez pas avoir à inclure de DLL spéciales. La classe SystemEvents se trouve dans l'assembly System. Si ce gestionnaire appartient à la couche de gestion - je suppose qu'il appartient à tout projet contenant votre classe de service - celui qui hérite de WindowsService.

public MyService() 
{ 
    InitializeComponent(); 
    SystemEvents.SessionSwitch += SystemEvents_SessionSwitch; 
} 

void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e) 
{ 
    if (_isRunning) 
    { 
     // Pause 
    } 
} 
+0

Merci beaucoup. Je vais essayer avec cette approche et vous le faire savoir. –

+0

Devrions-nous inclure des Dll pour gérer cet événement? –

+0

Pouvez-vous me suggérer dans quelle couche cet événement devrait être soulevé? –