首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 写屏幕保护程序如何屏蔽ALT 和 F4组合

2013-07-08 
C# 写屏幕保护程序怎么屏蔽ALT 和 F4组合我写的屏幕保护需要密码才可以退出。。。.net 4.5的框架。最近发现一

C# 写屏幕保护程序怎么屏蔽ALT 和 F4组合
我写的屏幕保护需要密码才可以退出。。。

.net 4.5的框架。

最近发现一个bug


一直按着ALT键,再按几次F4就可以把我的输入密码对话框和屏保都关闭了。


这个太绝了。。。


我要封杀ALT + F4组合。。。


怎么屏蔽之?谢谢、、、

网上搜的代码都不行。下面就是。


protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    return (keyData & Keys.Alt) != 0;
}




public class TestForm : Form
{
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        return (keyData & Keys.Alt) != 0;
    }
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        TextBox tx = new TextBox();
        this.Controls.Add(tx);
        tx.Text = "你尝试按Alt+F4?";
        tx.SelectionStart = tx.Text.Length;
    }
}



谁有办法啊 C# 屏幕保护 屏蔽ALT?和?F4组合
[解决办法]
我也试过了,是关不掉的,不知道是什么原因,再提供一个建议:
在程序中注册 alt-f4快捷键,这样可以屏蔽系统的alt-f4
要使用以下一些API:
RegisterHotKey, UnRegisterHotKey, GlobalAddAtom,
下面是DELPHI写的,供参考
Cardinal hotkey := GlobalAddAtom('No Alt-F4')-$C000;
boolean hotkeyok := RegisterHotKey(handle, hotkey, MOD_ALT, VK_F4);
if hotkeyok then
    UnRegisterHotKey(handle,hotkey);
[解决办法]
   protected override void WndProc(ref Message m)
        {
            const int WM_SYSCOMMAND = 0x112;
            const int SC_CLOSE = 0xF060;
            if (m.Msg == WM_SYSCOMMAND && m.WParam == (IntPtr)SC_CLOSE && m.LParam == IntPtr.Zero)
                return;
            base.WndProc(ref m);
        }

[解决办法]
 protected override void WndProc(ref Message m)
        {
            switch (m.Msg)


            {
                case 0x0010:                    
                    return;
                default:
                    break;
            }
            base.WndProc(ref m);
        }


不同全局钩子是不行的,毕竟通过热键按出任务管理器也能把程序给K掉

热点排行