Version 16 of Advanced browser management

Updated 2004-02-11 18:28:18

See also "Using Tcl to write WWW client side applications within the WWW browser", "BrowseX", "Invoking browsers", ...


I'll explain this at some point:

    package require tcom
    wm overrideredirect . on
    pack [canvas .c -background blue -height 20 -width 20]

    proc paste_on_top_IE toplevel {
        set application [::tcom::ref getactiveobject \
                             InternetExplorer.Application]
        wm geometry . +[$application Left]+[$application Top]
        raise .
        update idletasks
        after 300 [list paste_on_top_IE $toplevel]
    }

    paste_on_top_IE .

Notice the use made of tcom.

[Eventually explain Browser Helper Objects, XUL, toolbar SDK, ...]


Communication with an existing browser instance, as opposed to invoking browsers:

  • windows: netscape (and other browsers) respond to a few DDE commands.
  • unix:
  • mozilla / netscape: recognizes a -remote flag that attempts to re-use an existing browser process, or you can communicate with netscape on unix without the -remote flag with an extension[L1 ] [L2 ]:
  • konqueror: in KDE you can make use of the "kfmclient" command (type "kfmclient --commands" for reference).

Yes, it does, eventually. There is a Tcl-extension that does the same thing (communicating with Netscape using X Window Properties) without starting another instance of Netscape, which works much faster (almost instantly and without any overhead). I haven't tried it with recent versions of Tcl/Tk, though.

ftp://ftp.procplace.com/pub/tcl/sorted/net/netscape-remote-v1.2/


Jacob Levy Pat Thoyts and I were hacking around on the Tcl chat. The goal was to write some Tcl code that makes Internet Explorer go to a website while sending an HTTP REFERER header under the control of the directing Tcl program. Pat came up with the following, using tcom:

    package require tcom                               ;# Use tcom
    set url http://www.targetsite.com/                 ;# The site to visit
    set referer http://www.referringsite.com/          ;# The "faked" referring site
    set flags 0                                        ;# Any flags to send
    set targetframe ""                                 ;# Where to display visited site
    set postdata ""                                    ;# Any post-data to send
    set headers "Referer: $referer\n"                  ;# Headers to send (incl
                                                       ;# "faked" referer)

    set ie [tcom::reference createobject "InternetExplorer.Application"]
    $ie Visible 1
    $ie Navigate $url $flags $targetframe $postdata $headers

You can try and see what happens, by hitting http://mod3.net/cgi-bin/test3.cgi which is a CGI script that will print out the CGI environment. You'll see that it sends whatever HTTP Referer you said to send.


Category Internet