Hi guys,

I've spent a little time investigating the Vista "blank window" issues
that have been raised on the users list, and come up with a couple of
ideas.

There are two things you can launch from DQSD, a) searches and b) URLs
(and a couple of other things, but let's leave it at that).

Then there's a setting that affects how these launches are performed
-- the launchmode, which can be 0) Use IE or 1) Use default browser.

So there's essentially a behavior matrix for what happens in the
respective cases-

                   0                                                         1
a         form.submit                                Write out .html
file to submit form in body onload + ShellExecute(file)
b         window.open + window.navigate   ShellExecute(URL)

Most of these methods have one issue or another with IE's new
Protected Mode, because DQSD runs in un-PM, but launches searches and
URLs that require PM, so there tends to be a lot of intermediary
windows launched that bridge between the two modes.

As if this wasn't complicated enough to follow, all cases with
launchmode 0 happen in script, and all cases with launchmode 1 happen
inside DQSDTools.Launcher.

I'm wondering whether there would be value in moving all this logic
into DQSDTools, and moving the actual logic to a simple class
hierarchy of Launchers. Something like-

  class Launcher
  {
  public:
      virtual void SubmitForm(IHTMLFormElement* pForm, VARIANT options);
      virtual void LaunchUrl(BSTR url, VARIANT options);
  };

and then with implementations for the respective launch modes, say,
IELauncher and DefaultBrowserLauncher.

The primary benefit of having the complete logic in C++ code, is that
we can (hopefully) use new Vista APIs to safely bridge between
un-protected and protected mode.

What's also cool about this is that we can easily select
implementation based on launchmode, and adding a launchmode is as
simple as adding a new implementation...

...which leads me to another thing: we should probably add a new
launchmode called Explicit, which comes with an explicit browser path.
That way, users can launch their searches with a specific browser.
This should please the x64 crowd, who want to use the 32-bit Internet
Explorer even if DQSD runs in the 64-bit version of the browser.

So... Anyone opposed to moving form submittal/URL launching entirely
into DQSDTools? What are the drawbacks I don't see?

Thanks,
- Kim

------------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It is the best place to buy or sell services for
just about anything Open Source.
http://p.sf.net/sfu/Xq1LFB
_______________________________________________
Archive: https://lists.sourceforge.net/lists/listinfo/dqsd-devel

Reply via email to