vb6(SP6),XP(SP2),IE6.02です。
Private Declare Function UrlMkSetSessionOption Lib "urlmon.dll" _
(ByVal dwoption As Long, ByVal pBuffer As Any, _
ByVal dwbufferlength As Long, _
ByVal dwReserved As Long)
Private const Const URLMON_OPTION_USERAGENT = &H10000001
と宣言しました。
でコード部分に
Dim strUA as string
UAstr="TEST"
UrlMkSetSessionOption URLMON_OPTION_USERAGENT,strUA, LenB(strUA), 0
============
と書いたのですがエラーがでました。
宣言文の書き方がよくわかりません。教えてください。
参考になる文献や、HPなどでも構いませんので教えてください。。
http://www.activevb.de/rubriken/apikatalog/deklarationen/urlmksetsessionoption.html
.NETで同じようなこと?をされているヒトのスレ(ご参考)
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=3512
フォームにWebBrowserコントロールを貼り付けて、以下の確認をしました。
Option Explicit
Private Declare Sub UrlMkSetSessionOption Lib "urlmon.dll" _
(ByVal dwOption As Long, ByVal pBuffer As Any, _
ByVal dwBufferLength As Long, _
ByVal dwReserved As Long)
Private Const URLMON_OPTION_USERAGENT As Long = &H10000001
Private Sub Form_Load()
Me.WebBrowser1.Navigate2 "http://taruo.net/e/"
End Sub
Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
UrlMkSetSessionOption URLMON_OPTION_USERAGENT, "TEST", 4, 0
End Sub
もげさん再びレスありがとうございます!!
第二引数は文字列渡すのでbyValかと思ったのですが、byRef
にしたところ49エラーでした。(1番目のリンク参考に設定)
2番目のリンク参考に設定しましたが、
Integerだと&H10000001がvb6ではオーバーフロー(エラー6)になってしまいます。
それでそこだけLongにしてみましたが、49エラーでした。
VB.netの仕様がよくわからないのですが、
Integer型に強制的に変換されていると思います。
ふと思ったのですが、urlmon.dllっていうのは
IEと一緒にインストールされるので
色々やっているうちに、ヴァージョンが自分のマシンだけ違ってるのではないのか!?って思い始めてきました。
別のPCで試してみたいと思います。
どなたか、vb6でテストされてくださる方がいればお願いします。
もげさん!!ありがとうございました!
FunctionではなくSubにしたら動作しました!
こんなところに落とし穴があったとは。。
戻り値を返さないタイプだったのかな。。。
一つ勉強になりました。
もげさん感謝です。m(_ _)m
もげさんまたお世話になるときはよろしくお願いします。
ツイート | ![]() |