2009-04-09 2 views
5

Silverlight 응용 프로그램의 로그인 화면에서 Caps Lock이 토글되어 있는지 확인해야합니다. 이것은 KeyUp 또는 KeyDown 이벤트를 처리하여 충분히 쉽지만 키를 누르지 않아도 토글 링되었는지 여부를 어떻게 결정합니까?Caps Lock이 Silverlight 응용 프로그램에서 전환되는지 확인하는 방법?

내가 원한 이유는 Silverlight 응용 프로그램이 실행되는 동안 사용자가 Caps Lock 키를 누르지 않고 로그인 화면에 도달하기 전에 토글 한 경우입니다. 나는 그 (것)들에게 자물쇠가 위에다는 것을 아직도 경고 할 필요가있다.

Silverlight에서는 관리되지 않는 코드를 처리 할 수 ​​없으므로 다음 기능이 작동하지 않습니다.

[DllImport ("user32.dll")] 내부 정적 외부 짧은 GetKeyState (int keyCode);

답변

4

대문자 잠금을 감지하는 방법은 KeyValue와 KeyEventArgs의 이동을 검사하는 것입니다.
KeyValue가 (예를 들어) 'A'이지만 Shift가 false이면 대문자 잠금이 켜짐입니다.
가장 좋은 방법은 아니지만 how ajax applications has been doing it입니다.

+0

고맙습니다. Silverlight XAML의 코드 숨겨진 KeyUp/KeyDown 이벤트에서이를 확인하는 방법이 있습니까? – Rogan

+0

예, JavaScript 이벤트와 SilverLight 이벤트가 매우 희박합니다. 코드를 가져 와서 C#으로 번역하십시오. –

+0

좋은 해결책 Shay +1 –

0

내가 아는 한 당신은 할 수 없습니다. 앱에서 키가 올라가거나 내려갈 때 픽업을 할 수는 있지만 사용자가 앱을 나가면 어떤 상태인지 알 수 없습니다.

SL3에서 추가 지원을 보지 못했지만 특별히 찾고 있었을 수는 없습니다.

0

Silverlight는 클라이언트 측에서 Win32 DLL을 호출하는 것을 지원하지 않습니다. 따라서 위의 기술을 사용하여 Capslock 키를 눌렀는지 여부를 테스트 할 수 없습니다. KeyDown 이벤트를 사용하고 시스템 키를 테스트 해 보셨습니까? 나는 그렇게하지 않았지만 그것은 직감이다.

+0

예, KeyDown 및 KeyUp 이벤트는 정상적으로 작동하지만 Caps Lock 키를 눌렀을 때가 아닌지 여부를 결정하려고합니다. 누군가가 Caps Lock을 내 Silverlight 응용 프로그램으로 이동하기 전에 토글을 실행하면 경고 메시지를 표시해야합니다. – Rogan