想给程序设置一个老板键,大家帮忙出出注意!!越详细越好!!
程序运行后:
按下ctrl +F1 的时候,隐藏窗体;
按下ctrl +F2 的时候,显示窗体;

解决方案 »

  1.   

    你是一定要用程序实现还是说只要实现即可/只要实现即中,用Hoekey这个软件试试吧!算得上完美。
    可以隐藏任意程序的窗口,至少我还没遇到过不能隐藏的。
    至于你说的这个:
    1:注册全局热键;
    2:在热键中隐藏你所有的程序窗口;
      

  2.   

    另外,全局热键的注册及使用请参考这里:http://www.cnblogs.com/TianFang/archive/2007/05/14/745489.html
      

  3.   

    最好用程序实现.Hoekey这个软件(谢推荐),这个软件还是第一次听说,先去看看.
    弄程序实现当然最好了啊.呵呵
    up.
      

  4.   

    还有参考这里:
    http://blog.csdn.net/s4gg/archive/2008/09/24/2974812.aspx
      

  5.   

    这篇文章不错.刚看了啊下.c#里面只要一用到api的地方,就感到有点畏惧了.
    .但许多地方不是很理解.....慢慢看下去...
      

  6.   

    后面那篇文章也不错。
    我整理了一下放两段代码出来:首先是一个静态类,里面处理与HotKey有关的函数,这个基本上是原文复制。只修改了一些访问限制符。
    using System;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;namespace WTest26
    {
        public static class HotKey
        {
            [DllImport("user32.dll")]
            private static extern int RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk);
            [DllImport("user32.dll")]
            private static extern int UnregisterHotKey(IntPtr hwnd, int id);        public const int WM_HOTKEY = 0x312; //窗口消息-热键
            public const int WM_CREATE = 0x1; //窗口消息-创建
            public const int WM_DESTROY = 0x2; //窗口消息-销毁
            public const int MOD_ALT = 0x1; //ALT
            public const int MOD_CONTROL = 0x2; //CTRL
            public const int MOD_SHIFT = 0x4; //SHIFT
            public const int VK_SPACE = 0x20; //SPACE         /// <summary>
            /// 注册热键
            /// </summary>
            /// <param name="hwnd">窗口句柄</param>
            /// <param name="hotKey_id">热键ID</param>
            /// <param name="fsModifiers">组合键</param>
            /// <param name="vk">热键</param>
            public static void RegKey(IntPtr hwnd, int hotKey_id, int fsModifiers, int vk)
            {
                bool result;
                if (RegisterHotKey(hwnd, hotKey_id, fsModifiers, vk) == 0)
                {
                    result = false;
                }
                else
                {
                    result = true;
                }
                if (!result)
                {
                    MessageBox.Show("注册热键失败!");
                }
            }        /// <summary>
            /// 注销热键
            /// </summary>
            /// <param name="hwnd">窗口句柄</param>
            /// <param name="hotKey_id">热键ID</param>
            public static void UnRegKey(IntPtr hwnd, int hotKey_id)
            {
                UnregisterHotKey(hwnd, hotKey_id);
            }
        }
    }
      

  7.   

    然后是程序部分如何使用的代码了,按你的要求。Ctrl+F1,Ctrl+F2。
    不过一定要注意理解注册时使用的4个参数的根据。
    后面两个参数好理解一个是Ctrl,Shift,Alt这些功能键是否处理,一个是按下的其它非功能键,比如ABCD之类的。
    对于注册时使用的第1个参数,handler这是你用于接收热键消息的窗口句柄,这个固定。
    第2个参数是热键的编号,它不一定要等于你要注册的热键的VK码,可以是其它值,只要不与现有的热键编号相同或者冲突即可。否则会导致已有的热键不可用。具体的你可以去查MSDN。
    using System;
    using System.Diagnostics;
    using System.Windows.Forms;
    using System.Web;namespace WTest26
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private const int VK_F1 = 112;
            private const int VK_F2 = 113;        protected override void WndProc(ref Message m)
            {
                base.WndProc(ref m);
                switch (m.Msg)
                {
                    case HotKey.WM_HOTKEY: //窗口消息-热键
                        switch (m.WParam.ToInt32())
                        {
                            case VK_F1:         //隐藏热键ID
                                this.Hide();
                                break;
                            case VK_F2:         //显示热键ID
                                this.Show();
                                break;
                            default:
                                break;
                        }
                        break;
                    case HotKey.WM_CREATE: //窗口消息-创建
                        //注册Ctrl+F1                    
                        HotKey.RegKey(Handle, VK_F1, HotKey.MOD_CONTROL, VK_F1);
                        HotKey.RegKey(Handle, VK_F2, HotKey.MOD_CONTROL, VK_F2);
                        break;
                    case HotKey.WM_DESTROY: //窗口消息-销毁                    
                        HotKey.UnRegKey(Handle, VK_F1);
                        HotKey.UnRegKey(Handle, VK_F2);
                        break;
                    default:
                        break;
                }
            }
    }
      

  8.   

    private const int VK_F1 = 112;
    private const int VK_F2 = 113;
    问题已经解决.但偶还想知道:ctrl + F1 的键值 怎么是112,ctrl +F2 的键值 113,
    这个结果是怎么来的?
    如果是 shift +ctrl + F1 ,键值又是多少.先把帖子结了!
      

  9.   

    说明一下:
    VK_F1 = 112;并不是Ctrl+F1的键值,而是F1的VK(VirtualKey)值.这个值是固定的(具体的内容可以查MSDN,我发的链接中的后面那个地址中也有).Ctrl,Shift,Alt这些功能键也有键值,但在这里不需要考虑.因此从你那的编码的角度,如果你要用shift+ctrl+F1,你需要这样调用:HotKey.RegKey(Handle, VK_F1, HotKey.MOD_CONTROL|HotKey.Mod_SHIFT,VK_F1);最后面那个参数就是F1的键值,而前面表示需要组合按下Ctrl,Shift.另外再提醒一次,第二个参数是表示你的程序在系统里注册热键时所使用的一个"编号",与你使用的热键具体是哪个没有任何关系,你所唯一需要保证或者说需要注意的就是不要与其它全局热键冲突,否则会导致之前使用这个"编号"的热键失效,也就是你的这个注册覆盖了它之前的注册.