COM イベント メソッドによって渡される関数パラメーターのメモリ値を変更することは可能ですか? COM オブジェクトのプロパティ値を編集する必要があります。
ActiveX コントロールのカスタム ユーザー エージェントを設定しようとしていますが、ユーザーがRefresh
リンクされたページを選択または開いた場合、カスタム ヘッダーを使用して読み込みページを再ナビゲートできませんでした。また、メソッドで設定されたヘッダーはNavigate()
フレーム付きページには適用されません。
MSDN ( http://msdn.microsoft.com/en-us/library/aa768326%28v=vs.85%29.aspx ) によると、ヘッダー値のパラメーターは ByRef として渡されます。
それで単純に新しい価値を入れてみたのですが、うまくいきませんでした。
ですから、メモリに格納されている値を直接変更すれば実現できるのではないかと考えています。そこで、以下を試してみましたがうまくいきません。
何か案が?
oWB := new WebBrowser("http://sofiablue.net/")
Class WebBrowser
{
__New(strURL) {
static WB
Gui, New, Resize
Gui, Add, ActiveX, vWB w780 h580 , Shell.Explorer
Gui, show, w800 h600
ComObjConnect(WB, this)
WB.Navigate(strURL
, "_self"
, null
, null
, "User-Agent: tester")
Loop
Sleep 10
Until (WB.readyState=4 && WB.document.readyState="complete" && !WB.busy)
}
BeforeNavigate2(oParams*) {
; oParams[6] := "User-Agent: modified" ; this does not work.
; StrPut("User-Agent: modified", oParams.GetAddress(6)) ; does not work
this.StrPutVar("User-Agent: modified", oParams[6], "utf-16") ; does not work
}
StrPutVar(string, ByRef var, encoding)
{
; Ensure capacity.
VarSetCapacity( var, StrPut(string, encoding)
; StrPut returns char count, but VarSetCapacity needs bytes.
* ((encoding="utf-16"||encoding="cp1200") ? 2 : 1) )
; Copy or convert the string.
return StrPut(string, &var, encoding)
}
}