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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.40006 の関連記事表示

<< 0 >>
■40006  ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ RT -(2009/08/19(Wed) 13:53:47)

    分類:[C#] 

    たびたびお世話になります。RTです。

    Visual C# 2008 Express Editionで、開発を行っております。

    質問なのですが、ウェブブラウザで表示したページを、拡大・縮小表示したいのです。

    Document.Body.Style.Zoom;

    ↑は、C#のコードではないのですが、これに似たようなもので何かないでしょうか?


親記事 /過去ログ69より / 関連記事表示
削除チェック/

■40008  Re[1]: ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ Hongliang -(2009/08/19(Wed) 14:11:21)
記事No.40006 のレス /過去ログ69より / 関連記事表示
削除チェック/

■40011  Re[2]: ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ RT -(2009/08/19(Wed) 14:29:03)
記事No.40006 のレス /過去ログ69より / 関連記事表示
削除チェック/

■40017  Re[3]: ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ 通りすがり -(2009/08/19(Wed) 15:38:35)
    No40011 (RT さん) に返信
    以前このように書いていらっしゃるのですから

    No39943 (RT さん) に返信
    > ■No39936 (魔界の仮面弁士 さん) に返信
    >>今までのやりとりを見ていると、
    >>
    >>『○○という方法があります』
    >>『初心者向けでは無いと思います』
    >>『××という方法もあります』
    >>『使い勝手が悪いです』
    >>『では、△△という方法も…』
    >>
    >>が繰り返されているので、回答する意欲が削がれてしまいます。。。
    >>こちらから提示した情報が、理由説明がほとんど無いまま却下され続けるわけですから。
    >
    > すいませんでした。以後気を付けます。

    口先だけでなく、行動で示してくださいね。
記事No.40006 のレス /過去ログ69より / 関連記事表示
削除チェック/

■40018  Re[4]: ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ RT -(2009/08/19(Wed) 15:43:46)

    > 口先だけでなく、行動で示してくださいね。

    編集させていただきました。
記事No.40006 のレス /過去ログ69より / 関連記事表示
削除チェック/

■40139  Re[5]: ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ RT -(2009/08/20(Thu) 17:05:45)
    Private Sub Command1_Click()
    Me.WebBrowser1.Document.body.runtimeStyle.Zoom = "250%"
    End Sub

    Private Sub Command2_Click()
    Me.WebBrowser1.Document.body.runtimeStyle.Zoom = "50%"

    VBAでは、↑のようなコードで、出来るようです。
記事No.40006 のレス /過去ログ69より / 関連記事表示
削除チェック/

■40157  Re[6]: ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ 魔界の仮面弁士 -(2009/08/20(Thu) 19:19:26)
    No40139 (RT さん) に返信
    > Me.WebBrowser1.Document.body.runtimeStyle.Zoom = "250%"

    上記は <BODY> に対して style="zoom:250%" 相当の指定を行うための物です。
    この構文を理解するために、まずはアンマネージ DOM における
     .runtimeStyle
     .style
     .currentStyle
    の違いについて調べておいてください。


    さて、マネージ DOM でスタイルを指定する場合の話ですが、こちらは、HtmlElement クラスの
     .Style
    というプロパティが該当します。これは、アンマネージ版における .style に相当する物で、
     MessageBox.Show(webBrowser1.Document.Body.Style);
     webBrowser1.Document.Body.Style += ";Zoom:250%";
     MessageBox.Show(webBrowser1.Document.Body.Style);
    のような記述が可能です。


    ただし、currentStyle や runtimeStyle に相当する機能は用意されていないため、
    たとえば現在の拡大率を調べる必要があるならば、
     mshtml.IHTMLElement2 body = (mshtml.IHTMLElement2)webBrowser1.Document.Body.DomElement;
     MessageBox.Show((string)((mshtml.IHTMLCurrentStyle2)body.currentStyle).zoom);
     ((mshtml.IHTMLStyle3)body.runtimeStyle).zoom = "250%";
     MessageBox.Show((string)((mshtml.IHTMLCurrentStyle2)body.currentStyle).zoom);
    のように、アンマネージ版の DOM を使わねばなりません。



    No40008 (Hongliang さん) に補足
    > ただ、body の zoom を変更するとスクロールバーまで拡大縮小されるみたいですけど。

    その動作は、IE のバージョンによって異なります。
    また、後方互換モードか否かによっても変化します。

    具体的には、
     mshtml.IHTMLDocument5 doc = (mshtml.IHTMLDocument5)webBrowser1.Document.DomDocument;
     string compatMode = doc.compatMode;
    を実行したときに、compatMode が "BackCompat" となる Web サイトであればスクロールバーごと
    拡大されますし、"CSS1Compat" となる Web サイトならばスクロールバーは変化しないかと思います。
記事No.40006 のレス /過去ログ69より / 関連記事表示
削除チェック/

■40154  Re[1]: ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ 魔界の仮面弁士 -(2009/08/20(Thu) 18:57:04)
    No40006 (RT さん) に返信
    > 質問なのですが、ウェブブラウザで表示したページを、拡大・縮小表示したいのです。

    拡大・縮小というのが、IE3 以上でいうところの [表示]-[文字のサイズ] の機能でよければ、

     object pvaIn = 4; //文字サイズ。0=最小,1=小,2=中,3=大,4=最大
     object pvaOut = Type.Missing; // 変更結果(0〜4)のいずれかが返される
     ((SHDocVw.IWebBrowser2)webBrowser1.ActiveXInstance).ExecWB(
       SHDocVw.OLECMDID.OLECMDID_ZOOM,
       SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT,
       ref pvaIn,
       ref pvaOut);

    というコードを使うことができます。


    一方、それが IE7 以上でいうところの [表示]-[拡大]の方の意味だとすれば、

     object pvaIn = 250; //パーセント。10〜1000 の範囲
     object pvaOut = Type.Missing; // 変更結果が返される
     SHDocVw.OLECMDID OLECMDID_OPTICAL_ZOOM = (SHDocVw.OLECMDID)63;
     ((SHDocVw.IWebBrowser2)webBrowser1.ActiveXInstance).ExecWB(
       OLECMDID_OPTICAL_ZOOM,
       SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT,
       ref pvaIn,
       ref pvaOut);

    とすれば OK です。


    提示された style.zoom の方の話については、投稿を分けます。
記事No.40006 のレス /過去ログ69より / 関連記事表示
削除チェック/

■40163  Re[2]: ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ RT -(2009/08/20(Thu) 20:25:04)
    No40154 (魔界の仮面弁士 さん) に返信
    
     private void button8_Click(object sender, EventArgs e)
            {
                object pvaIn = 250; //パーセント。10〜1000 の範囲
                object pvaOut = Type.Missing; // 変更結果が返される
                SHDocVw.OLECMDID OLECMDID_OPTICAL_ZOOM = (SHDocVw.OLECMDID)63;
                ((SHDocVw.IWebBrowser2)webBrowser_Main.ActiveXInstance).ExecWB(
                  OLECMDID_OPTICAL_ZOOM,
                  SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT,
                  ref pvaIn,
                  ref pvaOut);
            }
    ↑のコードを使わせて頂きました。
    
     ((SHDocVw.IWebBrowser2)webBrowser_Main.ActiveXInstance).ExecWB(
                  OLECMDID_OPTICAL_ZOOM,
                  SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT,
                  ref pvaIn,
                  ref pvaOut);
    
     ↑の部分で、↓のエラーが出ます。
    登録されていないドロップ先の登録を解除しています (HRESULT からの例外: 0x80040100 (DRAGDROP_E_NOTREGISTERED))
    
    アドバイスお願いします。
    
    
記事No.40006 のレス /過去ログ69より / 関連記事表示
削除チェック/

■40172  Re[3]: ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ 魔界の仮面弁士 -(2009/08/20(Thu) 21:00:02)
    No40163 (RT さん) に返信
    > 登録されていないドロップ先の登録を解除しています (HRESULT からの例外: 0x80040100 (DRAGDROP_E_NOTREGISTERED))

    そのエラーは、以下の要因で発生する事があります。

    ・ドキュメントがロードされていない段階で呼び出した場合。
    ・pvaIn が「VT_I4」相当の型で無い場合(.NET 的には、Int32型の値を持った Object 型変数に相当)。
記事No.40006 のレス /過去ログ69より / 関連記事表示
削除チェック/

■40185  Re[4]: ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ RT -(2009/08/20(Thu) 23:39:38)
    No40172 (魔界の仮面弁士 さん) に返信
    > ■No40163 (RT さん) に返信
    >>登録されていないドロップ先の登録を解除しています (HRESULT からの例外: 0x80040100 (DRAGDROP_E_NOTREGISTERED))
    >
    > そのエラーは、以下の要因で発生する事があります。
    >

    > ・ドキュメントがロードされていない段階で呼び出した場合。

    ドキュメントが完全にロードされている状態で、実行ボタンを押しました。


    > ・pvaIn が「VT_I4」相当の型で無い場合(.NET 的には、Int32型の値を持った Object 型変数に相当)。

    object pvaIn = 250; は、Int32型の値を持った Object 型変数ではないのでしょうか?
記事No.40006 のレス /過去ログ69より / 関連記事表示
削除チェック/

■40205  Re[5]: ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ 魔界の仮面弁士 -(2009/08/21(Fri) 11:08:25)
    No40185 (RT さん) に返信
    >>>登録されていないドロップ先の登録を解除しています (HRESULT からの例外: 0x80040100 (DRAGDROP_E_NOTREGISTERED))
    >>そのエラーは、以下の要因で発生する事があります。
    >>・ドキュメントがロードされていない段階で呼び出した場合。
    > ドキュメントが完全にロードされている状態で、実行ボタンを押しました。
    あと、思いつく物と言えば、
     ・そのバージョンの IE でサポートされていない OLECMDID が指定されている。
     ・OLECMDID の指定と、pvaIn/pvaOut の組み合わせが正しくない(型および値の範囲)。
    ぐらいですかね。当方ではエラーなく呼び出せていますし。
    
    
    >>・pvaIn が「VT_I4」相当の型で無い場合(.NET 的には、Int32型の値を持った Object 型変数に相当)。
    > object pvaIn = 250; は、Int32型の値を持った Object 型変数ではないのでしょうか?
    OK です。
    指定としては正しいので、あとは環境側の問題など、別の要因があるのかも知れません。
    
    こちらでも検証してみますので、問題が発生したときの
     (1) 問題の発生したコード。
     (2) 表示させたサイトの URL。
     (3) Internet Explorer のバージョンおよび Service Pack。
     (4) Windows のバージョンおよび Service Pack。
     (5) .NET Framework のバージョンおよび Service Pack。
     (6) Visual Studio のバージョンおよび Service Pack。
    を提供していただけないでしょうか。
    
    
    ちなみに、当方で動作しているコードはこちら。
    
    
    // IE8
    // WinXP Pro/SP3
    // .NET Framework 3.5/SP1
    // VS2008 TeamDev/SP1
    
    using System;
    using System.Windows.Forms;
    using System.Diagnostics;
    
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            // SHDocVw.InternetExplorer ie = (SHDocVw.InternetExplorer)webBrowser1.ActiveXInstance;
            // ie.RegisterAsDropTarget = false;
            hScrollBar1.Minimum = 10;
            hScrollBar1.Maximum = 1000;
            hScrollBar1.LargeChange = 25;
            hScrollBar1.SmallChange = 1;
            hScrollBar1.Value = 100;
            hScrollBar1.Enabled = false;
            Text = "100%";
            webBrowser1.Navigate("http://openlab.ring.gr.jp/k16/htmllint/htmllint.html");
        }
    
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            Debug.WriteLine("Completed <- " + e.Url);
            hScrollBar1.Enabled = true;
        }
    
        private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
        {
            Text = hScrollBar1.Value + "%";
            object pvaIn = hScrollBar1.Value;
            object pvaOut = Type.Missing;
            SHDocVw.OLECMDID OLECMDID_OPTICAL_ZOOM = (SHDocVw.OLECMDID)63;
            try
            {
                SHDocVw.IWebBrowser2 wb = (SHDocVw.IWebBrowser2)webBrowser1.ActiveXInstance;
                wb.ExecWB(OLECMDID_OPTICAL_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, ref pvaIn, ref pvaOut);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }
    
        private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
        {
            Debug.WriteLine("Navigating -> " + e.Url);
            hScrollBar1.Enabled = false;
        }
    }
記事No.40006 のレス /過去ログ69より / 関連記事表示
削除チェック/

■40211  Re[6]: ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ RT -(2009/08/21(Fri) 13:16:19)
    2009/08/21(Fri) 13:17:33 編集(投稿者)

    No40205 (魔界の仮面弁士 さん) に返信

    IE6→IE8にアップデートすることで、問題解決することが出来ました。

    魔界の仮面弁士さん、Hongliangさん、通りすがりさんありがとうございました。

    またよろしくお願いします。
記事No.40006 のレス / END /過去ログ69より / 関連記事表示
削除チェック/

■40217  Re[7]: ウェブブラウザで表示したページを、拡大・縮小表示
□投稿者/ 魔界の仮面弁士 -(2009/08/21(Fri) 14:52:59)
    No40211 (RT さん) に返信
    > IE6→IE8にアップデートすることで、問題解決することが出来ました。
    
    だから最初に、
              **********************
    >> 一方、それが IE7 以上でいうところの [表示]-[拡大]の方の意味だとすれば、
              **********************
    と書いておいたのですけれどね。
    
    
    なお、ズーム値として指定可能な 10 〜 1000 という範囲については、
    下記のようにして調べる事が出来ます。
    
    object pvaIn = Type.Missing;
    object pvaOut = int.MaxValue;
    SHDocVw.OLECMDID OLECMDID_OPTICAL_GETZOOMRANGE = (SHDocVw.OLECMDID)64;
    SHDocVw.IWebBrowser2 wb = (SHDocVw.IWebBrowser2)webBrowser1.ActiveXInstance;
    wb.ExecWB(OLECMDID_OPTICAL_GETZOOMRANGE, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, ref pvaIn, ref pvaOut);
    
    int minimum = (int)pvaOut & 0xffff;
    int maximum = ((int)pvaOut >> 0x10) & 0xffff;
    
    
    そしてこうした、OLECMDID_OPTICAL_ZOOM や OLECMDID_OPTICAL_GETZOOMRANGE といった、
    OLECMDID 関連のコマンドについては、下記に一覧表があります。
    http://msdn.microsoft.com/en-us/library/ms691264.aspx
記事No.40006 のレス / END /過去ログ69より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -