3

我想在Winforms Web瀏覽器控件中使用拼寫檢查工作。瀏覽器控件中的拼寫檢查不能在IE11仿真下工作

這是我目前的C#代碼:

try 
{ 
    String appname = Process.GetCurrentProcess().ProcessName + ".exe"; 
    RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION", RegistryKeyPermissionCheck.ReadWriteSubTree); 

    object ieVal = key.GetValue(appname, null); 
    MessageBox.Show(ieVal.ToString()); 

    if (ieVal == null || (int)ieVal != 11001) 
    { 
     key.SetValue(appname, 11001, RegistryValueKind.DWord); 
    } 

    key.Close(); 
} 
catch 
{ 
    MessageBox.Show("Registry stuff didn't work"); 
} 

MessageBox.Show(webBrowser1.Version.ToString()); 

webBrowser1.DocumentText = "<html><head><body><div spellcheck=\"true\" style=\"width:100%; height:100%;\" contenteditable=\"true\"></div>" 
      +"<script>alert(navigator.userAgent);</script>" 
      +"</body></html>"; 

所以首先我設置適當的註冊表項,使瀏覽器模擬IE11

然後我添加一個div標籤設置爲true拼寫檢查屬性。

版本的MessageBox.Show(webBrowser1.Version.ToString())顯示的是:

11.0.9600.18525 

navigator.userAgent表明,JavaScript顯示爲:

Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko 

所以它看起來像Web瀏覽器控件使用IE11。但是當我輸入拼寫檢查不起作用。

注意:當我運行的HTML代碼與真正的IE瀏覽器一切正常。

此外,在實際的瀏覽器顯示的navigator.userAgent是:

Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko 

注2:當我運行我的Windows 10計算機進行拼寫檢查工程應用。但我需要使它在Windows 7機器上運行。

+0

spellchek?滑稽! – TaW

回答

0

我在窗體上使用WebBrowser控件時遇到了非常類似的問題,並找到了兩個解決方案,每個解決方案都有不同的效果,這兩個解決方案都可以使用。

  1. 在HTML中使用spellcheck=true

    添加屬性spellcheck=true到HTML或身體或TEXTAREA標籤,根據您想要實現的,可以讓拼寫檢查文本輸入框(我的測試是在Windows 10上)。

    請注意,文本框中的任何現有文本都沒有拼寫檢查 - 您必須輸入NEW文本。當使用預填充文本框運行測試EXE時,這會引發我的注意,該文本框從未獲得小紅色下劃線它的拼寫錯誤。對於FEATURE_SPELLCHECK

  2. 註冊表項,這確實不同的東西。它允許TinyMCE中的拼寫檢查工作在我們的嵌入式Web瀏覽器控件中。它本身並沒有在文本區域中啓用拼寫檢查。

    請參閱下面的鏈接,以獲取與您正在設置的註冊表項相關的註冊表項的引用。但是,它需要一個新的鍵,然後是一個與您正在運行的EXE名稱相匹配的值。在我而言,這涉及到創建FEATURE_SPELLCHECKING註冊表項,然後用名稱TEST123.EXE一個DWORD和價值1

    https://msdn.microsoft.com/en-us/library/ee330735%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396#spellchecking

    我發現這個通過下面鏈接的頁面,如果有人報告它不工作的Windows 7的。需要注意的是這個人還以「本地用戶」鍵,這並不在我的經驗,工作努力吧:

    https://social.msdn.microsoft.com/Forums/ie/en-US/515fa4b1-2b85-46e4-a041-7dc27c4539c4/how-to-enable-spell-checker-in-web-browser-control-for-ie10?forum=ieextensiondevelopment

  3. 使用兩種以上。

    我們發現上面的方法2滿足了我們大部分的需求,因爲我們使用的是TinyMCE。但是,在其他應用程序中,1和2都可以結合使用以提供最多的功能。

相關問題