Sign up on the Revelation Software website to have access to the most current content, and to be able to ask questions and get answers from the Revelation community

OLE browser control - can't do two Navigate in a row (OpenInsight 32-bit Specific)

At 21 MAY 2003 10:42:59AM Oystein Reigem wrote:

I have an OLE browser control and I want to do two Navigate in a row. But it seems the second one kills the first one.

In case you wonder why somebody would do two Navigate in a row - here are examples of what I want to achieve:

Example 1:

/* clear browser and write new content with JavaScript */

URL =Drive() : "\html\blank.htm"

Stat=Send_Message( @Window : ".OLE", "Navigate", URL )

URL =javascript:document.write("Some text ")'

Stat=Send_Message( @Window : ".OLE", "Navigate", URL )

Example 2:

/* write with JavaScript a piece at a time */

/* (there's a limit to how much can be written at once) */

URL =javascript:document.write("Some text ")'

Stat=Send_Message( @Window : ".OLE", "Navigate", URL )

URL =javascript:document.write("More text ")'

Stat=Send_Message( @Window : ".OLE", "Navigate", URL )

I can get these examples to work if I split them over two button CLICK events, with one Navigate in each. That might be a clue. Putting a delay() between them doesn't help. It's like the two messages are not processed until the current event finishes. And then the second one has taken out the first one or something.

Please help.

- Oystein -


At 21 MAY 2003 02:33PM Oystein Reigem wrote:

More info:

- OI 4.1.2.

- Problem occurs with other messages than Navigate (GoHome).

- Problem also occurs when the two messages are different (GoHome + Navigate).

- Haven't tried other OLE controls.

Please help.

- Oystein -


At 23 MAY 2003 03:34AM Oystein Reigem wrote:

Revelation,

Any comments or suggestions?

- Oystein -


At 23 MAY 2003 10:28AM Bob Carten - Revelation Technical Support wrote:

Oystein:

You can change QualifyEvent to get the OLE events to run asynchronously

Then you loop with yield() and keep looking at the 'ReadyState' property

I think.

BTW, what did you do to piss off Osama?


At 23 MAY 2003 10:41AM [url=http://www.sprezzatura.com" onMouseOver=window.status= Click here to visit our web site?';return(true)]The Sprezzatura Group[/url] wrote:

Bob

The Sprezzatura Group

World Leaders in all things RevSoft


At 23 MAY 2003 05:56PM Oystein Reigem wrote:

Bob,

You can change QualifyEvent to get the OLE events to run asynchronously

Thanks. Found it in the docs. Will try on Monday.

Then you loop with yield() and keep looking at the 'ReadyState' property

OK.

I think.

OK. :-)

BTW, what did you do to piss off Osama?

- Send fighter planes to Afghanistan?

- Expel suspected terrorist Mullah Krekar?

- Show too many American series on TV?

- Oystein -


At 26 MAY 2003 06:54AM Oystein Reigem wrote:

Bob,

I can't get it to work. Would you mind having a look at what I've done?

My browser OLE control is called "OLE". Here's what I do to get the OLE events to fire immediately:

declare function Send_Message

EventName=ALL_OLES"
Qualified=1
* =Synchronous flag.
* 0=event is posted to the Windows message queue
* to be processed at a later time.
* 1=event is fired immediately
Qualified=1
ret=Send_Message( @Window : ".OLE", "QUALIFY_EVENT", EventName, Qualified )

Is this correct?

My next question is about that "ReadyState" property. Which value should I look for? I've done some experiments where I first send a "Navigate" message to the control, then do a loop where I call Yield() and check for ReadyState. Here are some typical sequences of ReadyState values:

1 1 3 3 3 3 3 3 4 4 4 4 4 4 4 4 … 4 4 4 …

1 1 1 1 1 1 1 1 1 1 1 1 1 3 4 4 4 4 4 4 4 … 4 4 4 …

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 … 4 4 4 …

From these results I guess that 4 means ready. But I have no luck with the following code:

$insert Logical
declare function Get_Property
declare function Set_Property
declare function Send_Message
declare subroutine Yield

URL =Drive() : "\html\blank.htm"
Stat=Send_Message( @Window : ".OLE", "Navigate", URL )

Ready=0
Cnt=0
loop
while Ready  4
  Yield()
  Ready=Get_Property( @Window : ".OLE", "OLE.ReadyState" )
  Cnt += 1
  if Cnt ] 10000 then
    * something must have gone wrong
    debug
  end
repeat

URL =javascript:document.write("blah [b]blah[/b] blah")'
Stat=Send_Message( @Window : ".OLE", "Navigate", URL )

Still only the last of the two messages works.

- Oystein -


At 26 MAY 2003 07:07AM Oystein Reigem wrote:

Bob,

Sorry. Somehow my code had lost that

Qualified=0

line.

Thanks!

- Oystein -

View this thread on the forum...