3

Winforms Webブラウザコントロールでスペルチェックの作業をしようとしています。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>"; 

ブラウザは、その後、私はtrueに設定スペルチェック属性を持つdivタグを追加IE11

をエミュレートするように、したがって、最初、私は適切なレジストリキーを設定します。

ある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を使っているようなので、それはそう。しかし、スペルチェックを入力すると機能しません。

注:実際のIEでこのHTMLコードを実行すると、すべて正常に動作します。

また、実際のブラウザ上に表示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コントロールを使用すると非常によく似た問題があり、それぞれが異なるエフェクトを使用する2つのソリューションが見つかりました。どちらも使用できます。

HTMLで spellcheck=trueを使用して
  1. は、HTMLまたはBODYまたはTEXTAREAタグに属性spellcheck=trueを追加し、あなたがそれを実現したい場所に応じて、スペルがテキスト入力ボックスにチェックできるようになります(私のテストをし、 Windows 10で)。

    テキストボックス内の既存のテキストはスペルチェックされていないことに注意してください。新しいテキストを入力する必要がありました。これは、テスト用のEXEを事前に入力したテキストボックスそのスペルミス。 FEATURE_SPELLCHECK

    このため

  2. レジストリエントリは異なる何かをしました。 TinyMCEの埋め込みWebブラウザコントロールでスペルチェックを行うことができました。それ自身では、テキスト領域のスペルチェックを有効にしませんでした。

    設定したレジストリキーに近いレジストリキーへの参照は、下のリンクを参照してください。ただし、新しいキーと実行しているEXEの名前と一致する値が必要です。私の場合、これは私は以下のリンク先のページを介してこれを見つけ1. ​​

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

    FEATURE_SPELLCHECKINGレジストリキー、および、名前TEST123.EXEとのDWORD値を作成関与、どこの誰かはそれがために働いていない報告します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. 上記の両方を使用してください。

    TinyMCEを使用しているので、上記のアプローチ2が私たちのニーズの大部分を満たしていることがわかりました。しかし、他のアプリケーションでは、1と2の両方を組み合わせて使用​​することができます。

関連する問題