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:
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.