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 で発生しました。 追加情報 : 登録されていないドロップ先の登録を解除しています」
よく分かっていないので、等価な書き換えができていないのだと思います。どのようなコーディングをすればよいのか教えてください。よろしくお願いします。
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
となってます。
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
こんなんで正常に動いたけどどう?
> 登録されていないドロップ先の登録を解除しています
単にタイミングの問題でしょう。
ページの読み込みが完了していない状態で、そのコマンドを使うと、
たとえ 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型に統一しておいた方が良いでしょうね。
特攻隊長まるるうさん、.さん、魔界の仮面弁士さん、ありがとうございました。
おかげさまでフォントサイズの変更ができました。
.さんのように、ボタンを押したときにフォントサイズを変更するようにしたらうまくいきました。
魔界の仮面弁士さんがおっしゃるように、エラーメッセージは、タイミングの問題のようです。
ツイート | ![]() |