私は少し前に c++ で mshtml ベースのエディターに取り組み、現在の選択範囲のテキスト スタイルを取得するために次のコードのようなことを行いました。
CComQIPtr<IOleCommandTarget> spCmdTarg(pDispDoc);
if (pStyle && spCmdTarg)
{
const ULONG uNumCmnds = 4;
OLECMD arrCmnds[uNumCmnds];
arrCmnds[0].cmdID = IDM_BOLD;
arrCmnds[1].cmdID = IDM_ITALIC;
arrCmnds[2].cmdID = IDM_UNDERLINE;
arrCmnds[3].cmdID = IDM_STRIKETHROUGH;
if ( SUCCEEDED(spCmdTarg->QueryStatus(&CGID_MSHTML, uNumCmnds, arrCmnds, NULL)) )
{
pStyle->SetBold(arrCmnds[0].cmdf & Shdocvw_tlb::OLECMDF_LATCHED);
pStyle->SetItalic(arrCmnds[1].cmdf & Shdocvw_tlb::OLECMDF_LATCHED);
pStyle->SetUnderline(arrCmnds[2].cmdf & Shdocvw_tlb::OLECMDF_LATCHED);
pStyle->SetStrikeThrough(arrCmnds[3].cmdf & Shdocvw_tlb::OLECMDF_LATCHED);
}
}
このコードを c# でどのように変換できるか、mshtml のインターロップ レイヤーで何が利用できるかはよくわかりませんが、これが何かを始めるのに役立つことを願っています。