ハードなソフトの話

アクセスカウンタ

zoom RSS Tcl/TkからWindowsエクスプローラを呼び出す

<<   作成日時 : 2009/07/18 00:25   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

Tcl/Tkに詳しい人にはつまらない話かもしれない。
Tcl/Tk から Windows エクスプローラを呼び出すには意外に手間がかかる。
次のサンプルプログラムは疑問が残るが、なんとなく実用的な動作をする。
package require Tk

entry .ePath -width 80
button .bExp -text "Explore..." -command { cmdExplore [.ePath get] }
pack .ePath -side left
pack .bExp -side left 

proc cmdExplore { filepath } {
    if { [ file exists $filepath ] == 0 } {
        tk_messageBox -type ok -icon warning -message "the path doesn't exist"
        return
    }
    set cmdfilepath [ regsub -all {\\} $filepath {\\\\} ]
    eval exec cmd /c start explorer $cmdfilepath 
}

このプログラムを実行すると次のような画面が表示される。
画像

つまり、パスをキーボードから入力して[Explore...]ボタンをクリックすると、指定パスでWindowsエクスプローラが起動する。
ただ、それだけのことだが、次の点を工夫している。

  1. Windowsの explorer コマンドで存在しないパスを指定すると勝手にドキュメントフォルダなどを開くので実行前に file exists コマンドでチェックしている

  2. コマンド引数として渡すときにバックスラッシュ(円記号)が問題を起こすので、regsubで \ を \\ に変換している。

  3. そのまま explorer を exec で実行すると、”Error: child process exited abnormally"になるので、cmd /c startで起動している。

  4. 引数が正しく評価されるようにeval を使っている


最後の工夫は下記のページを参考にした。
http://www.geocities.co.jp/SiliconValley/4137/dir1/exectips.html
まだまだTcl言語の評価タイミングについてきちんと理解できていない。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Tcl/TkからWindowsエクスプローラを呼び出す ハードなソフトの話/BIGLOBEウェブリブログ
文字サイズ:       閉じる