• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            歲月流冰的技術(shù)博客--笨瑜

            No prepare is prepare to lose~~~~~~

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              15 隨筆 :: 0 文章 :: 8 評(píng)論 :: 0 Trackbacks
            最近遇到一個(gè)問(wèn)題,在一個(gè)WinForm窗口中,按ALT+Z能夠?qū)崿F(xiàn)最小化到托盤(pán)及從托盤(pán)回復(fù)正常窗口。
            剛開(kāi)始,試著在窗口的KeyPress事件中添加,但是當(dāng)窗口最小化到托盤(pán)后,焦點(diǎn)已經(jīng)不在窗口上了,因此將不能捕捉鍵盤(pán)按鍵按下的事件,因此不能從托盤(pán)彈出。經(jīng)測(cè)試,這種方法是錯(cuò)誤的。
            既然KeyPress事件不能解決問(wèn)題,那么為什么不能添加熱鍵呢?
            添加熱鍵的方法是
            BOOL RegisterHotKey( 
              HWND hWnd, 
              
            int id, 
              UINT fsModifiers, 
              UINT vk 
            );
            其中參數(shù)hWnd是注冊(cè)熱鍵的窗口句柄,id是熱鍵的標(biāo)識(shí)符,fsModifiers是在創(chuàng)建WM_HOTKEY消息時(shí)必須跟用戶定義的按鍵一同按下的特殊組合鍵,他的值為:
            Value Description
            MOD_ALT Either ALT key must be held down.
            MOD_CONTROL Either CTRL key must be held down.
            MOD_KEYUP Both key up events and key down events generate a WM_HOTKEY message.
            MOD_SHIFT Either SHIFT key must be held down.
            MOD_WIN Either WINDOWS key was held down. These keys are labeled with the Microsoft Windows logo.
            我們可以使用這個(gè)函數(shù)注冊(cè)我們的熱鍵。
            在C#中使用這個(gè)函數(shù),我們必須從user32.dll中將此函數(shù)導(dǎo)入,而且必須重寫(xiě)WndProc函數(shù)來(lái)捕捉熱鍵消息。
            以下為示例代碼:
            [DllImport("user32.dll")]
                    
            public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint control, Keys vk);
                    [DllImport(
            "user32.dll")]
                    
            public static extern bool UnregisterHotKey(IntPtr hWnd, int id); 

                    
            private void Form1_Load(object sender, EventArgs e)
                    
            {
                        RegisterHotKey(
            this.Handle, 8881, Keys.Z);
                        
            this.Hide();
                        
            this.ShowInTaskbar = true;
                        
            this.comboBox1.SelectedIndex = 0;
                    }


                    
            protected override void WndProc(ref Message m)
                    
            {
                        
            switch (m.Msg)
                        

                            
            case 0x0312:
                                
            if (m.WParam.ToString().CompareTo("888"== 0)
                                
            {
                                    
            if (bIsShowed)
                                    
            {
                                        
            this.Hide();
                                        
            this.ShowInTaskbar = true;
                                        
            this.WindowState = FormWindowState.Minimized;
                                        
            this.notifyIcon1.Visible = true;
                                        
            this.bIsShowed = false;
                                    }

                                    
            else
                                    
            {
                                        
            this.Visible = true;
                                        
            this.ShowInTaskbar = false;
                                        
            this.WindowState = FormWindowState.Normal;
                                        
            this.Activate();
                                        
            this.notifyIcon1.Visible = false;
                                        bIsShowed 
            = true;
                                    }

                                    UnregisterHotKey(
            this.Handle, 888);
                                    RegisterHotKey(
            this.Handle, 8881, Keys.Z);
                                }

                                
            break;
                            
            default:
                                
            break;
                        }


                        
            base.WndProc(ref m);
                    }
            posted on 2007-12-10 09:37 歲月流冰 閱讀(1226) 評(píng)論(2)  編輯 收藏 引用 所屬分類(lèi): C#

            評(píng)論

            # re: C#中添加熱鍵的方法 2007-12-10 11:38 <a href=http://minidx.com>minidxer</a>
            不符合法在首頁(yè)標(biāo)準(zhǔn)哈  回復(fù)  更多評(píng)論
              

            # re: C#中添加熱鍵的方法 2008-09-11 18:20 包你滿意
            不錯(cuò),向樓主學(xué)習(xí)了  回復(fù)  更多評(píng)論
              

            久久久久久亚洲Av无码精品专口| 久久夜色精品国产亚洲| 久久婷婷国产麻豆91天堂| 天天久久狠狠色综合| 久久国产AVJUST麻豆| 99国产欧美精品久久久蜜芽| 内射无码专区久久亚洲| 亚洲AV无码一区东京热久久| 久久精品国产一区二区三区| 久久婷婷五月综合97色| 久久久久亚洲av成人无码电影| 久久青青草原亚洲av无码app| 国产精品欧美久久久久无广告| 久久久久亚洲AV无码专区首JN| 国产精品九九久久免费视频 | 蜜桃麻豆www久久国产精品| 蜜臀av性久久久久蜜臀aⅴ| 久久综合久久鬼色| 国产精品青草久久久久福利99| 亚洲国产精品无码久久久秋霞2| 一本综合久久国产二区| 久久久精品视频免费观看| 久久久久久狠狠丁香| 久久发布国产伦子伦精品| 婷婷伊人久久大香线蕉AV| 亚洲欧洲精品成人久久奇米网| 大蕉久久伊人中文字幕| 午夜不卡888久久| 国产精品欧美久久久天天影视 | 亚洲国产精品久久久久网站 | 欧美亚洲国产精品久久高清| 人妻无码久久精品| 久久综合亚洲色一区二区三区| 国产L精品国产亚洲区久久| 久久综合狠狠综合久久激情 | 久久精品视频网| 国产成人综合久久久久久| 93精91精品国产综合久久香蕉 | 久久久久精品国产亚洲AV无码| 久久国产欧美日韩精品免费| 亚洲精品乱码久久久久久蜜桃不卡 |