*''twapi::systemtray'' [#eb297666]

システムトレイは[[winico:http://tktable.sourceforge.net/winico/]]を使うのが定番だけど、[[twapi:http://twapi.sourceforge.net/]]にもシステムトレイにアイコンを追加する機能があるのを見つけたので、忘れないために簡単なサンプルを書いておく。

**アイコンを読み込む関連(twapi/resource.tcl参照) [#e664997d]
,::twapi::load_icon_from_file,ファイルからicoを読み込む
,::twapi::load_icon_from_module,DLLやEXEからicoを読み込む
,::twapi::load_icon_from_system,システムOEMからicoを読み込む
,::twapi::free_icon,アイコンのハンドルを解放
マニュアル:http://twapi.sourceforge.net/resource.html

**システムトレイ関連(twapi/shell.tcl参照) [#m129aa22]
,::twapi::systemtray addicon,システムトレイにアイコン追加。idを返す
,::twapi::systemtray modifyicon,idのパラメータ(アイコンとか)を変更
,::twapi::systemtray removeicon,システムトレイから削除
マニュアル:http://twapi.sourceforge.net/shell.html

これだけ。引数のパラメータや定数はresource.tcl、shell.tclを読むこと。
アイコンをロードして、そのアイコンのハンドルをsystemtrayでaddiconするだけのようだ。

**サンプル [#nf722027]
クリックでアイコンの切り替え、ダブルクリックでメッセージ表示、右クリックでコンテキストメニューの表示。
 package require Tk
 package require twapi
 
 set state 1
 set ico1 [twapi::load_icon_from_system INFORMATION]
 set ico2 [twapi::load_icon_from_system WARNING] 
  
 proc ico_hook {id type loc time} {
     puts $id,$type,$loc,$time
     switch $type {
         lbuttonup {
             switch_state
             update_systemtray $id
         }
         lbuttondblclk {
             tk_messageBox -message "Ouch!"
         }
         contextmenu {
             $::popup post {*}$loc
         }
     }
 }
 
 proc quit {id} {
     twapi::systemtray removeicon $id
     exit
 }
 
 proc switch_state {} {
     if {$::state == 1} {
         set ::state 2
     } else {
         set ::state 1
     }
 }
 
 proc update_systemtray {id} {
     twapi::systemtray modifyicon $id -hicon [set ::ico$::state]
 }
 
 wm withdraw .
 
 set id [twapi::systemtray addicon $ico1 ico_hook]
 update_systemtray $id
 
 set ::popup [menu .popup -tearoff 0]
 $::popup add command -label "Exit" -command {
     quit $id
 }

**コメントをどーぞ [#d0577ca8]
#comment

----
[[CategoryTclTk]]


|New|Edit|Diff|History|Attach|Copy|Rename|
HTML convert time: 0.001 sec.