Disable Combination keys in Window Application

Hi all,

To workaround this , copy and paste following function in your application and call sampfn() function in page load event to disable keys.


#region global function
#region Dynamic Link Library Imports
[DllImport("user32.dll",SetLastError=true)]

private static extern int FindWindow(string cls, string wndwText);

[DllImport("user32.dll",SetLastError=true)]

private static extern int ShowWindow(int hwnd, int cmd);

[DllImport("user32.dll", SetLastError = true)]

private static extern long SHAppBarMessage(long dword, int cmd);

[DllImport("user32.dll", SetLastError = true)]

private static extern int RegisterHotKey(IntPtr hwnd, int id, int

fsModifiers, int vk);

[DllImport("user32.dll", SetLastError = true)]

private static extern int UnregisterHotKey(IntPtr hwnd, int id);
#endregion


#region Modifier Constants and Variables
// Constants for modifier keys
private const int USE_ALT = 1;
private const int USE_CTRL = 2;
private const int USE_SHIFT = 4;
private const int USE_WIN = 8;

// Hot key ID tracker
short mHotKeyId = 0;
#endregion



public void unreg()
{
UnregisterGlobalHotKey();
}
public void sampfn()
{
// Disable ALT+F4 - exit
RegisterGlobalHotKey(Keys.F4, USE_ALT);

// Disable CTRL+W - exit
RegisterGlobalHotKey(Keys.W, USE_CTRL);

// Disable CTRL+N - new window
RegisterGlobalHotKey(Keys.N, USE_CTRL);

// Disable CTRL+S - save
RegisterGlobalHotKey(Keys.S, USE_CTRL);

// Disable CTRL+A - select all
RegisterGlobalHotKey(Keys.A, USE_CTRL);

// Disable CTRL+C - copy
RegisterGlobalHotKey(Keys.C, USE_CTRL);

// Disable CTRL+X - cut
RegisterGlobalHotKey(Keys.X, USE_CTRL);

// Disable CTRL+V - paste
RegisterGlobalHotKey(Keys.V, USE_CTRL);

// Disable CTRL+B - organize favorites
RegisterGlobalHotKey(Keys.B, USE_CTRL);

// Disable CTRL+F - find
RegisterGlobalHotKey(Keys.F, USE_CTRL);

// Disable CTRL+H - view history
RegisterGlobalHotKey(Keys.H, USE_CTRL);

// Disable CTRL+Tab - view history
RegisterGlobalHotKey(Keys.Tab, USE_CTRL);

}



private void RegisterGlobalHotKey(Keys hotkey, int modifiers)
{
try
{
// increment the hot key value - we are just identifying

// them with a sequential number since we have multiples

mHotKeyId++;
if (mHotKeyId > 0)
{
// register the hot key combination
if (RegisterHotKey(this.Handle, mHotKeyId, modifiers,
Convert.ToInt16(hotkey)) == 0)
{
// tell the user which combination failed to register
// this is useful to you, not an end user; the user
// should never see this application run
UnregisterGlobalHotKey();
MessageBox.Show("Error: " + mHotKeyId.ToString() + " - " + Marshal.GetLastWin32Error().ToString(), "HotKey Registration");
}

}

}

catch
{

// clean up if hotkey registration failed -

// nothing works if it fails
//MessageBox.Show(e.ToString());
UnregisterGlobalHotKey();

}

}

public void fun()
{
UnregisterGlobalHotKey();
}

private void UnregisterGlobalHotKey()
{

// loop through each hotkey id and

// disable it

for (int i = 0; i < mHotKeyId; i++)
{

UnregisterHotKey(this.Handle, i);

}
}



protected override void WndProc(ref Message m)
{

base.WndProc(ref m);


// if the message matches,

// disregard it

const int WM_HOTKEY = 0x312;

if (m.Msg == WM_HOTKEY)
{

// Ignore the request or each

// disabled hotkey combination

}

}
#endregion




Happy Coding.......

No comments:

Post a Comment