是否可以修改 COM 事件方法传递的函数参数的内存值?COM 对象中的属性值需要编辑。
Refresh
我正在尝试为 ActiveX 控件设置自定义用户代理,如果用户选择或打开链接页面,则使用自定义标题重新导航加载页面不成功。该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)
}
}