craig,

I think you hit on a buggy-boo or at least, a deficiency in the way kixtart handles COM calls in 4.0

Based on my testing of your script, it would appear that the webbrowser object is expecting a VARIANT BOOL passed as the second parameter. Most COM objects will try to coerce the passed value to a required value. For example, the string "1" becomes true as does "this" or 1 is true.

My guess is that kixtart 4.0 passes all numbers as VARIANT INTS or LONGS ... but the webbrowser isn't doing the conversion in this particular method call.

Just as a test, I converted your script to kixtart 3.63 OLE calls, where one can explicitly specify the parameter types. And sure enough, when forced to BOOL (b), the method call works, heres that script. This script determines which version of kixtart is being used and makes the appropriate COM/OLE calls ... try it with 3.63 and it works great:


break on


if (@kix < "4.00")


?"OLD OLE FUNCTIONS:"

$ie= olecreateobject("internetexplorer.application")

$= olecallfunc($ie,"navigate","s","http://www.kixtart.org")

while olegetproperty($ie,"busy") <> "0" and @error = 0 loop

$= oleputproperty($ie,"visible","s","1")

; $= olecallfunc($ie,"showbrowserbar","sb","{EFA24E62-B078-11D0-89E4-00C04FC9E26E}","1")

$= olecallfunc($ie,"showbrowserbar","sb","{30D02401-6A81-11D0-8274-00C04FD5AE38}","1")

?"@ERROR rs=$rs"

$ = olereleaseobject($ie)


else


?"NEW COM FUNCTIONS:"

$ie = createobject("internetexplorer.application")

$ie.navigate("http://www.kixtart.org")

while $ie.busy and not @error loop

$ie.visible = 1

$ie.showbrowserbar("{EFA24E62-B078-11D0-89E4-00C04FC9E26E}","1")

$ie = 0


endif

exit 1

I think you/we should flag this as a potential kixtart 4.0 COM issue .. what you think ?

-Shawn

[ 02 February 2002: Message edited by: Shawn ]