WebBrowserでのフォントサイズ変更について

解決


まりの  2006-01-04 04:02:32  No: 93454

VB.NET 2003で、ActiveXのWebBrowserを使っているのですが、フォントサイズの変更がうまくいきません。ご存じの方、ご教授ください。

ここの、2004/8/30の同様の質問を参考に、以下のようなコードを書いてみました。

Dim result As VariantType

AxWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, CLng(0), result)

しかし、これを実行すると、下のようなメッセージが出てうまくいきません。
「'System.Runtime.InteropServices.COMException' のハンドルされていない例外が axinterop.shdocvw.dll で発生しました。  追加情報 : 登録されていないドロップ先の登録を解除しています」

よく分かっていないので、等価な書き換えができていないのだと思います。どのようなコーディングをすればよいのか教えてください。よろしくお願いします。


特攻隊長まるるう  2006-01-06 00:33:10  No: 93455

WebBrowser は専門外なので詳しい検証はできませんが、
とりあえず、むちゃくちゃな部分だけ指摘しておきます。

>AxWebBrowser1.ExecWB〜
引数の数が4つに見えますが気のせいですか?
>ここの、2004/8/30の同様の質問を参考に、
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200408/04080135.txt
過去ログ見ると3つのようですが?

>Dim result As VariantType
VariantType はヘルプ見れば分かることですが、ただの列挙型
です。実体は Integer で[VB6.0]の Variant 型とはまったく違います。
[Visual Basic 6.0 ユーザーのための Visual Basic .NET 移行ガイド]
http://www.microsoft.com/japan/msdn/net/vbtransitionguide/
の第 4 章を読んでください。
[Vb6.0] → [VB.NET]
Variant → Object
Long → Integer
となってます。


.  2006-01-06 02:15:45  No: 93456

Public Function GetFontSize(ByVal ctrl As AxSHDocVw.AxWebBrowser) As Integer
        'フォントサイズをゲットする
        Dim val As Object = New Object
        Dim result As Object = New Object
        Try
            ctrl.ExecWB(SHDocVw.OLECMDID.OLECMDID_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, val, result)
            Return CInt(result)
        Catch
            Return -1
        End Try
End Function

Public Sub SetFontSize(ByVal ctrl As AxSHDocVw.AxWebBrowser, ByVal fontSize As Integer)
        'フォントサイズをセットする(0〜4)
        Dim val As Object = fontSize
        Dim result As Object = New Object
        ctrl.ExecWB(SHDocVw.OLECMDID.OLECMDID_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, val, result)
End Sub

こんなんで正常に動いたけどどう?


魔界の仮面弁士  2006-01-06 02:34:42  No: 93457

>  登録されていないドロップ先の登録を解除しています
単にタイミングの問題でしょう。
ページの読み込みが完了していない状態で、そのコマンドを使うと、
たとえ VB6 であったとしても、同様のエラーが生じます。
http://fukkey.dyndns.org/pins/vb/040331/52869.html

> OLECMDEXECOPT_DONTPROMPTUSER, CLng(0), result)
『CLng(0)』ではなく、『0I』を指定してみてください。
第3引数のデータ型は重要です。

> 引数の数が4つに見えますが気のせいですか?
本来は、4つ指定するべきでしょう。省略しても動作するようですけどね。
http://msdn.microsoft.com/library/en-us/com/html/ae1592b6-2afd-4379-a18e-d46b226bc9e2.asp
http://msdn.microsoft.com/workshop/browser/webbrowser/reference/methods/execwb.asp

> Variant → Object
第4引数の型が違っていても結果が返されるようですが、
一応、Object型に統一しておいた方が良いでしょうね。


まりの  2006-01-08 23:36:59  No: 93458

特攻隊長まるるうさん、.さん、魔界の仮面弁士さん、ありがとうございました。
おかげさまでフォントサイズの変更ができました。
.さんのように、ボタンを押したときにフォントサイズを変更するようにしたらうまくいきました。
魔界の仮面弁士さんがおっしゃるように、エラーメッセージは、タイミングの問題のようです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加