気晴らしに TwiNetReader を開発していますが、
上記のように、テキストボックスも消すことができました。
ええ、これで、晴れて「つい読み専用」ということで。
# 実は「返信」ボタンをクリックした時に、現れるという仕組みを入れています。
暫く、自分で使ってから公開しますが、ノウハウの部分をちょとだけ。
右上の広告を消すのは、こんなソースです。
HtmlDocument doc = webBrowser1.Document;
// 広告を消す
el = doc.GetElementById(“side_ad_base”);
el.Style = “display: none”;
ブラウザの Document プロパティを取得して、GetElementById メソッドで拾ってきて、スタイルを設定するだけ。
これをブラウザのCompleted イベントの中に入れればOKです。
さらに、昔の HTML DOM を知っている人ならば、ネイティブの DOM を扱いたいわけで、この場合は、「mshtml.IHTMLElement」を使います。
HtmlElement.DomElement プロパティ (System.Windows.Forms)
http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=JA-JP&k=k(SYSTEM.WINDOWS.FORMS.HTMLELEMENT.DOMELEMENT);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&rd=true
使い方は、
-
「mshtml.tlb」 を参照設定する( mshtml.dll ではない)
-
mshtml.IHTMLElement i = doc.DomElement as mshtml.IHTMLElement;
な感じでキャストすればOK。
あとは、旧来のHTML DOM として扱えます。
これ、何故使うのかというと、なぜか .NET の DOM だと class 名が取れません。
なので、DomElement から、ClassName を参照しないといけないという、、、何故なんでしょうね?
そんな訳で、ツイートのテキストボックスを一括で消すように
foreach (HtmlElement item in doc.GetElementsByTagName(“fieldset”))
{
mshtml.IHTMLElement i = item.DomElement as mshtml.IHTMLElement;
if ( i.className == “common-form standard-form” ) {
el_input =item;
el_input.Style = “display: none;”;
break;
}
}
な、ソースを書いています。
el_input は、再表示するために保存しているのです。