There is a very simple solution to this problem so long as the device supports locking the device, which is on most WM5 and later devices. This code should work on CE devices also. Simply P/Invoke the keybd_event procedure passing hex 0x85.
For a list of key codes see here: http://msdn.microsoft.com/en-us/library/bb431750.aspx
So I have knocked up a very simple application with one button which locks the device:
Click to show a larger image
When we click the Lock button you'll notice the menubar soft input 1 changes to read Unlock and the device is completely inaccessible, tapping even the start menu will not work apart from soft input 1:
Click to show a larger image
Clicking Unlock shows this screen:
Click to show a larger image
Of course clicking Unlock in the middle of the screen returns to you're app.
This approach can be used for many different features, check out the list of codes above. A simple way of achieving many features of the device.
The code looks like the following:
[DllImport("coredll.dll", EntryPoint = "keybd_event", SetLastError = true)]
internal static extern void keybd_event(byte bVk, byte bScan,
int dwFlags, int dwExtraInfo);
private void lockDevice_Click(object sender, EventArgs e)
{
keybd_event(0x85, 0,0,0);
}
2 comments:
Thank you very much - exactly what I was looking for days now :)
Hi,
thank you for your code and explanation. Do you know a way to capture all Key-Events (especially the Screen-Unlock-Event)? I tryed with
SetWindowsHookEx(WH_KEYBOARD_LL, hookDeleg, GetModuleHandle(null), 0);
I reveice the events sent from my application, but can not capture the event of unlocking the screen.
Thanks in advance
tom@voodoo-arts.net
Post a Comment