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都可以结合使用以提供最多的功能。

相关问题