## # Add pop-up menu options, puts a command next the the "open" entry, # note the "open" entry is what happens when you double click a file # Tom Wilkason # # $class # Some name you are giving for this file type, this should be associated # with the file extension you are concerned about. # e.g. .mp3 file (default) = mpegaudiofile # mpegaudiofile is the class # $shellPath # HKEY_CLASSES_ROOT\\$class\\shell # $tclproc # Procedure within your TCL application you want to be called, # the file name here is passed as an argument to it # $CMHName # Some unique name you are giving that specific command (e.g. snAmp.play) # $shellContextText # Shell context menu text (RMB pop-command) # $myAppPath # The complete path/command to launch your application # The file(s) selected in explorer will be handed as parameters # # And if you want DDE Support # # $ddeTopic # The name of the dde server name you establish in your TCL code # package require dde # set ddeTopic MyDDETopic # (or whatever) # dde servername $ddeTopic # TclEval # Not really necessary # This create registry entries like this # HKEY_CLASSES_ROOT\$class\shell # \$CMHName (default) = $shellContextText # \$CMHName\ddeexec (default) = $tclProc "%1" # \$CMHName\ddeexec\Application (default) = TclEval # \$CMHName\ddeexec\Topic (default) = $ddeTopic proc regContextHandler {args} { package require registry if {[llength $args] >= 4} { foreach {class shellContextText CMHName myAppPath} $args {break} if {[catch { set shellPath "HKEY_CLASSES_ROOT\\$class\\shell" registry set $shellPath\\$CMHName "" "$shellContextText" registry set $shellPath\\$CMHName\\command "" "$myAppPath \"%1\"" } result]} { return -code $result } } ;## ;# Add DDE Options ;# if {[llength $args] == 6} { foreach {tclProc ddeTopic} [lrange $args 3 end] {break} if {[catch { registry set $shellPath\\$CMHName\\ddeexec "" "$tclProc {%1}" registry set $shellPath\\$CMHName\\ddeexec\\Application "" TclEval registry set $shellPath\\$CMHName\\ddeexec\\Topic "" $ddeTopic } result]} { return -code $result } } }