C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: WebBrowserコントロールでの画像保存


(過去ログ 76 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■45078 / inTopicNo.1)  WebBrowserコントロールでの画像保存
  
□投稿者/ Kagerou (1回)-(2009/12/29(Tue) 01:12:14)

分類:[.NET 全般] 

WebBrowserコントロールを利用して機能特化ブラウザを作成しています。
IE同様に、右クリック→「前に戻る」の機能も追加したのですが、
「名前を付けて画像を保存」の実装方法が分かりません。

分からない点は以下の二点です。
・右クリックが押された場所にある画像の特定を ToolStripMenuItem と EventArgs だけでできない。
・WebBrowserに読み込まれたキャッシュの利用方法が分からない。(WebClient等での再ダウンロードは避けたい。)

自作ユーザーコントロールに、WebBrowser, ContextMenuStrip, その他コントロールが集約されているという構成になっています。
WebBrowserを継承したコントロールの方が良かったでしょうか?

よろしくお願いいたします。
引用返信 編集キー/
■45082 / inTopicNo.2)  Re[1]: WebBrowserコントロールでの画像保存
□投稿者/ Hongliang (534回)-(2009/12/29(Tue) 05:25:56)
> ・右クリックが押された場所にある画像の特定を ToolStripMenuItem と EventArgs だけでできない。
これだけでは確かに不可能でしょうね。
ContextMenuStrip.Opened イベント辺りで、コンテキストメニューを開いたときのマウスカーソルの位置を取得し、(座標系を合わせて)HtmlDocument.GetElementFromPoint で選択している要素を取得する必要があるでしょう。img 要素なら子要素を持たないので楽なもんです。
こうやって取得した要素(まあマウスカーソルの位置だけでも構いませんが)をフィールドに置いておき、ToolStripMenuItem.Click イベントで使用するようにします。

> ・WebBrowserに読み込まれたキャッシュの利用方法が分からない。(WebClient等での再ダウンロードは避けたい。)
Win32API の GetUrlCacheEntryInfo 関数を使用するれば、キャッシュファイルのパスが取得できます。

> 自作ユーザーコントロールに、WebBrowser, ContextMenuStrip, その他コントロールが集約されているという構成になっています。
> WebBrowserを継承したコントロールの方が良かったでしょうか?
それが複数コントロールの集合体であるならユーザコントロールです。
引用返信 編集キー/
■45097 / inTopicNo.3)  Re[2]: WebBrowserコントロールでの画像保存
□投稿者/ Kagerou (2回)-(2009/12/30(Wed) 01:25:00)
No45082 (Hongliang さん) に返信

Hongliang さん、ありがとうございます。

>>・WebBrowserに読み込まれたキャッシュの利用方法が分からない。(WebClient等での再ダウンロードは避けたい。)
> Win32API の GetUrlCacheEntryInfo 関数を使用するれば、キャッシュファイルのパスが取得できます。
こちらは無事取得することができました。
Win32APIを本格的に使うのは初めてで、メモリの使い方は難しかったですが、勉強になりました。

HtmlDocument.GetElementFromPoint の方は後程試してみます。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -