[ZLM] The script below was written in October 2002, nowadays I would use [TWAPI] to change the desktop background: http://twapi.sourceforge.net/ui.html#set_desktop_wallpaper ---- This script sets the daily User Friendly strip as my desktop background. I post it here because it may be useful to someone. It uses [http] to download the image, [Img] to convert the gif to bmp and [ffidl] to call Windows API. The difficult part was locating the information about the Windows API. Please tell me if there is any obvious way to improve this. Keywords: Setting Windows Desktop background, SystemParametersInfo , SPIF_SENDCHANGE , SPIF_UPDATEINIFILE , SPIF_SENDWININICHANGE ---------- package require http package require Img load ffidl05.dll set target_page "http://www.userfriendly.org" ; # the page to molest set gif_image_path "c:\\gif.gif" ; # download the image here.. set bmp_image_path "c:\\bmp.bmp" ; # ... and feed Windows with this #Sugar is sweet ... proc between { start "and" end "in" text} { set string_start [string first $start $text] set string_end [string first $end $text $string_start] set start_removed [string replace [string range $text $string_start $string_end] 0 [expr [string length $start ]-1] ] return [string replace $start_removed end end ] } #I'm behind a proxy here, I must configure it... http::config -proxyhost 172.29.153.41 -proxyport 8080 #... now I can get the initial page set html [http::data [http::geturl $target_page]] #Image size parameters change, get the whole first: set url [between "\"Latest" in $html] #I only want the image url... set url [between "SRC=\"" and "\">" in $url] #...and write the image to a file: set gif_file [open $gif_image_path w+] http::geturl $url -blocksize 1024 -channel $gif_file close $gif_file #I have to convert to BMP to be able to use the Windows API call set image [image create photo -file $gif_image_path] $image write $bmp_image_path -format bmp #this fiddles with user32.dll and refreshes the background immediately ffidl::callout dll_SystemParametersInfo {int int pointer-utf8 int} int [ffidl::symbol user32.dll SystemParametersInfoA] dll_SystemParametersInfo 20 0 $bmp_image_path 3 exit ---- as mentioned above, using twapi looks like this...<
> (to have the hostname written to your wallpaper, for example) package require twapi package require Img canvas .c pack .c .c create text 100 100 -text "hostname: [info hostname]" update [image create photo -data .c] write kal1.gif set gif_image_path "kal1.gif" set bmp_image_path "kal1.bmp" #I have to convert to BMP to be able to use the Windows API call set image [image create photo -file $gif_image_path] $image write $bmp_image_path -format bmp twapi::set_desktop_wallpaper kal1.bmp exit [Category Application] - [Category Desktop]