C# WebBrowser禁止F5重新整理

來源:互聯網
上載者:User

標籤:

    在用寫一個案頭軟體的過程中,用到webbrowser實現介面。這時有一個禁止webbrowser通過f5按鍵進行重新整理的要求。本著邊做邊學的原則,本菜查了一下百度,原來這麼簡單,代碼如下:

this.webBrowser1.WebBrowserShortcutsEnabled = false;

    哈哈,成功了。繼續完成接下來的任務,寫著寫著,發現不對,很不對勁。剛剛那一句代碼,不僅把F5這個快速鍵禁用了,而且連ctrl+c、ctrl+v這些快速鍵一併禁止了。這該如何是好。這時本菜第一反映:鍵盤鉤子。可是轉念一想,用了C#還要動用鉤子,明顯是姿勢不對啊。嗯,不到最後萬不得已,絕不動用鉤子寶典。接下來,本菜已在不歸路上越走越遠。

    走遍了大街,串遍了小巷,翻遍了百度,查遍了google,最後連msdn和open stack都查了個遍。看到各國網友的答案是:很難做到,幾乎不可能。(看到坑爹隊友不局限在我們身旁)。正當本菜要拿起鉤子寶典之時,抱著最後一絲掙紮的希望,翻了一翻webbrowser的函數列表,翻著翻著,頓時眼前一亮,鏘鏘鏘鏘:

public class WebBroswer : System.Windows.Forms.WebBrowser{        public WebBroswer()            : base()        {        }        public override bool PreProcessMessage(ref Message msg)        {            switch (msg.Msg)            {                case ApiCaller.WM_KEYDOWN:                    int vk = Ptr.PtrToInt(msg.WParam);                    if (vk == 116) return false;    //鉤掉f5                    break;                            }            return base.PreProcessMessage(ref msg);        }}

    本次大法的主要思路是,重載WebBrowser,處理掉F5的鍵盤訊息。(上面代碼中的ApiCaller類是一個自訂類,只要判斷WM_KEYDOWN即可)

    其實在此之前,本菜在WndProc和DefWndProc這兩個函數之間折騰很久。一直沒轉過彎來,WebBrowser的鍵盤訊息WM_KEYDOWN、WM_KEYUP壓根兒不會經過這兩個函數。因為在這兩個函數之前,就分發到內部子控制項了。好在及時醒悟,這次完全是吃了沒文化的虧,希望這些經曆小結,能給大家帶來協助。如果這個知識點對您有用,請繼續傳播下去。

C# WebBrowser禁止F5重新整理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.