Permalink
Branch: master
Find file Copy path
68de712 Sep 4, 2018
1 contributor

Users who have contributed to this file

441 lines (361 sloc) 18.2 KB
TClock Light 改造版 by K.Takata
Ver.kt180904 (based on tclocklight-040702-3)
1.概要
 タスクトレイの時計を改造するソフトである TClock Light (かずぼん氏作)(*1) を
K.Takata が勝手に改変したものです。
 消費メモリの削減、ログ表示の改善、アラーム機能の強化、Vista/7/8/10 への対応、
x64 への対応などの変更を行っています。
(*1) http://homepage1.nifty.com/kazubon/tclocklight/
2.インストール
 一般ユーザー権限で書き込み可能な適当なディレクトリを用意し、そこに OS に
合わせて x64 版 (64bit) または x86 版 (32bit) のいずれかのファイルを解凍して
ください。(C:\Program Files などにはインストールしないでください。)
 以下のようなディレクトリ構成になっていることを確認してください。
tclock インストール先
│ tcdll.tclock
│ tclock.exe
│ tcplayer.exe
│ tcprop.exe
│ tcsntp.exe
│ tctimer.exe
└─lang
tclang-ja.txt
tclang.txt
tcmenu-ja.txt
tcmenu.txt
 この状態で tclock.exe を実行すると、TClock Lightが起動します。
 TClock Light を起動した際に、"language file not found" と表示される場合や、
時計を右クリックした際に、メニューに Exit TClock としか表示されない場合は、
インストールに失敗しています。上記のようなディレクトリ構成になっていることを
再度確認してください。
 オリジナルの TClock Light と同様に、スタートアップに登録する機能はないため
自動起動をさせるには、スタートアップに手動で登録する必要があります。
 スタートアップは、通常以下の場所にあります。(<user> の部分は自分のユーザー
名に読み替えてください。)
C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
3.変更点
 オリジナルのバージョンである tclocklight-040702-3 からの変更点を
以下に示します。
3.1. 消費メモリの削減
 IME 関連の DLL を読み込まないように変更することで、消費メモリを削減
しました。(tclock.exe)
3.2. 右クリックメニューの挙動が不自然な点を修正
 右クリックメニューがキーボードで操作できなかったり、メニュー以外の領域を
クリックしてもメニューが消えないことがある問題を修正しました。
3.3. 右クリックメニューにアクセスキーを追加
 右クリックメニューにアクセスキーを追加することで、キーボードで素早く
項目を選択できるようにしました。
3.4. アラーム機能を強化
 レジューム時(スリープや休止状態からの復帰時)にプログラムを実行できる
ようにアラーム機能を強化しました。
 例えば、ノートパソコンなどで timeadjx(*2) を使う場合などに有用です。
(timeadjx を使うと時計の精度を向上させることができますが、休止状態などを
使うと設定が初期化されてしまうため、復帰時に再実行する必要があります。)
(*2) http://www.monyo.com/technical/products/timeadjx/
3.5. 時刻合わせの設定画面でログを読み込むように変更
 時刻合わせの設定のダイアログボックスを表示する際に、ログ (SNTP.txt) の
最新 2KB を読み込んで表示するように変更しました。
3.6. 時刻合わせのログの表示欄を少し拡大
 ログの表示行数が 1行増えるはずです。
3.7. デフォルトの NTP サーバを変更
 デフォルトの NTP サーバを ntp1.jst.mfeed.ad.jp から、ラウンドロビンを
利用した ntp.jst.mfeed.ad.jp に変更しました。(サーバの負荷軽減のため)
3.8. XP テーマ変更時に時計の背景がおかしくなってしまうバグを修正
 TClock板の「TClock Lightスレッド@別館 part1」(*3) の 17氏 の修正を
組み込みました。
(*3) http://tclock2ch.no.land.to/cgi-bin/test/read.cgi/tclock/1112788230
3.9. Vista 以降で時計の文字の表示がおかしい問題を修正
 Vista で時計の文字の表示位置が上にずれたり、文字色がおかしい問題を
修正しました。
(Vista/7 では、WinXP と同じ処理で表示すればよいのだが、バージョン判定処理が
間違っており、Win2k と同じ処理で表示していたのが原因。)
3.10. Vista 以降で管理者権限で起動するとメニューが表示されない問題を修正
 Vista/7 で tclock.exe を管理者権限で起動すると、UIPI (User Interface
Privilege Isolation) の制限で、時計を右クリックしてもメニューが
表示されなかった問題を修正しました。
3.11. Vista 以降のカレンダーに対応
 Vista 以降では、時計を左クリックするとカレンダーが表示されますが、この
カレンダーを TClock Light から表示することができるようになりました。
3.11.1. Vista/7/8/10 の設定
 「プロパティ」→「マウス操作」→「クリック」のシートを選択し、ボタンに
「左ボタン」「シングル」を選択し、機能に「TClockのコマンド」を選択し、
番号欄に「134」と入力すると、左クリックでカレンダーが表示されます。
 ダブルクリックにコマンドが登録されていると、シングルクリックかダブル
クリックかの判別が必要になるため、シングルクリックしてからカレンダーが
表示されるまでに、多少時間が掛かります。シングルクリックですぐにカレンダー
が表示されるようにするには、ダブルクリックにはコマンドを登録しないように
しておく必要があります。なお、Vista 以降では時計をダブルクリックしても
「日付と時刻のプロパティ」が表示されなくなりましたので、ダブルクリックの
コマンドは削除しておくと、Vista 以降の標準と同じ操作になります。
3.11.2. Windows 10 Anniversary Update の設定
 Win10AU では、カレンダーの表示タイミングが変更されました。従来は、時計を
左ボタンで押すと表示されていましたが、Win10AU では、時計を左ボタンで押して
から離すと表示されるようになりました。
 「プロパティ」→「マウス操作」→「クリック」のシートを選択し、「常に
左ボタンメッセージを通過させる」にチェックを入れると、Win10AU の標準と同じ
動作でカレンダーが表示されるようになります。なお、この設定を行った場合、
他の左ボタンに設定した機能はすべて無視されます。
3.12. 他の改造版の修正・機能拡張を取り込み
3.12.1. 修正の取り込み
 他の TClock Light 改造版によるバグ修正を一部取り込んでいます。詳細は更新履歴
を参照してください。
3.12.2. 機能拡張の取り込み
 以下の TClock Light 改造版の機能拡張をソースレベルで一部取り込んでいます。
それぞれの機能拡張はオフにしてありますので、使用する際には設定を変更して
コンパイルする必要があります。詳細は config-kt.txt を参照してください。
・tclocklight-050716 (TClock Lightスレッド@別館 part1 11氏)
・TClock Light Unofficial 060502 (by ◆FDQ3TClock氏)
・tclocklight- 080409 (by slic氏)
あるいは、別配布の custom 版が使用できます。custom 版でどの機能が有効化されて
いるかは、ソースファイル内の source_all\config.h および source_custom\config.h
で確認できます。(custom 版の詳細については説明を省きます。)
3.13. x64 への対応
 x64 に正式対応しました。
 なお、x64 への対応は tclocklight-040702-3-amd64 (*4) を参考にしています。
(*4)
http://www.program-lab.jp/blog/progmemo/archives/2005/05/tclock_lightox6.html
3.14. High DPI への対応
 High DPI に対応したことで、メニューやダイアログボックスがきれいに表示される
ようになりました。
3.15. 書式 _m, _d, _h, _n を追加
 月、日、時、分が 2 桁に満たない場合、先頭にスペースを入れる書式として、
_m, _d, _h, _n を追加しました。
 例えば、"_h:nn:ss" という書式を設定すると、" 9:59:59" から "10:00:00" に
表示が切り替わっても、時計の幅がずれなくなりました。
4.判明している制約・問題点
4.1. 管理者権限で起動しないと、tcsntp.exe による時刻合わせができない
 時刻を設定するには管理者権限が必要です。そのため、Vista 以降で
UAC (User Account Control) が有効な場合に、tcsntp.exe を使って SNTP で
時刻合わせをしたい場合は、tclock.exe を管理者権限で起動しなければ
いけません。しかしこれを行うと、TClock Light から起動される他のプログラムも
管理者権限で起動されることとなり、セキュリティー上の危険性が高くなるので
お薦めしません。
4.2. スタートアップで tclock.exe を管理者権限で起動できない
 UAC が有効な場合、スタートアップで tclock.exe を管理者権限で起動しようと
しても、ブロックされてしまいます。管理者権限で起動するためには、毎回手動で
ブロックを解除する必要があります。
(スタートアップの代わりにタスクスケジューラを使えば、ブロックは回避でき
ますが、前述のようにセキュリティー上の観点からお薦めしません。なお、タスク
スケジューラを使う場合は、Explorer の起動後に TClock Light が起動するよう
に設定する必要があります。)
※以上のような問題があるため、Vista 以降での時刻合わせは、TClock Light の機能を
使わずに、OS の標準機能を使うことをお薦めします。設定の詳細は、例えば以下の
サイトを参照してください。
http://wiki.nothing.sh/page?NTP
http://www.daytradenet.com/blog/tokidoki/archives/12/11/041530.html
※他の方法としては、タスクスケジューラから tcsntp.exe を定期的に起動する
ようにし、tclock.exe は通常権限のまま起動する方法もあります。
4.3. スタートボタンの改造が機能しない
 スタートボタンを改造する、時計にスタートメニューの各機能が動作しません。
現時点では修正の見通しは立っていません。
4.4. C:\Program Files 以下にインストールすると時計が改造できない
 UAC が有効な場合、C:\Program Files 以下のファイルを変更するには管理者権限が
必要です。TClock Light を C:\Program Files 以下にインストールすると、設定
ファイル (tclock.ini) を正しく読み書きできなくなるため、時計が改造できない
などの問題が発生します。
 回避方法としては、TClock Light は一般権限で書き込めるフォルダにインストール
するようにしてください。
 どうしても C:\Program Files 以下にインストールしたい場合は、tclock.ini を
一般ユーザーが書き込みできるように、アクセス許可を変更してください。
4.5. Win10AU でマルチディスプレイ使用時、メインの時計しか改造できない
 Windows 10 Anniversary Update ではマルチディスプレイ使用時に、メインの
ディスプレイ以外にも時計が表示できるようになりましたが、現時点では、メイン
以外の時計は改造できません。
4.6. リモートデスクトップで接続時に表示がちらつく
 リモートデスクトップで接続したときに、時計の表示がちらつくことがあります。
5.更新履歴
2005/04/07
・メモリ消費量削減。
2005/04/09
・右クリックメニューの挙動改善。
・右クリックメニューにアクセスキー追加。
2005/04/26
・アラーム機能強化。
2005/04/29
・ログ表示改善。(SNTP.txt の末尾 2KB を読み込んで表示。)
・デフォルト NTP サーバ変更。
2005/05/07
・メニューの順番を修正。
2005/05/12
・ログ表示改善。(行単位で表示。)
2006/01/04
・時刻合わせ精度向上版を組み込む。
・ログ表示改善。(tclocklight-050716 を参考に修正)
 ゴミを表示しないように修正。
 ダイアログを開いたときにログの最終行を表示するように改善。
2007/03/21
・ログ表示改善。
 ログファイルサイズが 2KB に満たないときは、ファイルの先頭から表示するよう
に修正。(今までは、行単位で表示されるようにするために、最初の改行までは
必ず読み飛ばしていた。そのため先頭行が表示されなかった。)
・メモリ消費量削減機能の修正。
 DisableIME() で FreeLibrary() が実行されない可能性があったのを修正。
・XP でテーマ変更時の動作の修正。
・時刻合わせ精度向上版の組み込みをやめた。
 (実行エラーが発生することがあったため。)
2007/12/23
・Vista のカレンダー表示に対応。(コマンド番号 134 を使用)
・リンカオプションで /WS:AGGRESSIVE を指定することで、メモリ使用量を削減。
(tclock.exe のみ)
・tclocklight-040702-3-amd64 を参考に、X64 用にコンパイルできるように修正。
動作は未確認。
(新しい PSDK を入れていない VC6 でもコンパイルできるように対策済み。)
・tclocklight-050716 の修正をいくつか取り込む。
- アラームの書式でうっかり0時間おきや0分おきにすると無限ループになるのを修正
- WinXP以外で背景色1のチェックを外すと表示がおかしくなるのを修正
- 書式Yの値が10の累乗の時、1桁表示されないのを修正
- TransparentBlt()をWin98では使わないように修正(リソースリークするらしい)
- 数字を入力するべきエディットボックスは数字以外入力できないように修正
- アラームの曜日の設定の表示を修正
2007/12/29
・X64 対応修正その2。DialogProc の戻り値を BOOL から INT_PTR に修正。
動作は未確認。
2009/06/27
・Vista でメイリオなどを使ったときに文字がにじむのを修正。
・Vista でデフォルトフォントとしてメイリオを取得できるように修正。
・x64 対応の修正漏れがあったため修正。(sntp.c L53 / int → SOCKET)
・x64 に正式に対応。
・DLL のベースアドレスを設定。(0x66040000 または 0x60066040000)
・コンパイル方法に関する修正
- x64 コンパイル時の作業/出力ディレクトリを、x86 とは別にした。
- x64 コンパイル時も NODEFAULTLIB でファイルサイズを小さくできるようにした。
- VC2005 以降を使ったときに出る、セキュリティが弱い関数に対する警告を
抑制した。(_CRT_SECURE_NO_WARNINGS)
2009/06/28
・Vista Aero 不使用時の文字描画方式を以前のものに戻した。
 (低スペックマシンで文字がちらつく場合があったため。)
2009/07/04
・tclocklight-050716 の修正をいくつか取り込む。
- WinXP SP2でモニターOFFが使えないかもしれないのを修正したかも
・他の改造版による機能拡張をソースレベルで組み込み。
 config.h を修正してコンパイルすることで、各機能を個別に有効化/無効化できる
 ようにした。
・機能の有効化/無効化対応の都合上、プロパティ画面のページ順序を一部入れ替え。
2009/07/08
・XP などで文字色の初期値が正しく設定されない場合があったのを修正。
・Vista でも音量関連機能が使えるように修正。
・x64 でメモリ関連の書式が動かなかったのを修正。
・メモリ使用率の計算がバグっていたのを修正。
・メモリ関連の書式で小数部を扱えるように変更。
・メモリ関連の書式に GB 単位の書式を追加。
2009/07/12
・DWM 使用有無のチェックを簡略化。
・format-kt.txt 追加。
・XP でタスクバーボタンをグループ化しないようにした場合、「タスクバーに
アイコンのみを表示」設定を有効にできるように変更。
・Win2k 以降では、メッセージ専用ウィンドウを使うことで、メモリ消費量削減。
・Vista でスタートボタンを隠せるように変更。
2009/07/18
・http://distantland.hp.infoseek.co.jp/tclock/mod/ で公開されていた
「TClock Light 時刻合わせ精度向上版」および tclocklight-050716 の
tcsntp 関連の修正をマージ、さらに独自に精度向上。
- Distantland 版では RFC 1769(最新は RFC 4330)に従って、パケットの往復
時間を考慮して時刻合わせをするように修正。
- 050716 版では Distantland 版 を Borland C++ でコンパイルできるようにする
ため、インラインアセンブラ部分を C に修正。(修正の過程で、0.1% 程度の
計算誤差が含まれていた模様。)
- いずれの版も GetSystemTimeAsFileTime() の精度については全く考慮して
いなかったため、考慮するように修正。
(GetSystemTimeAsFileTime() は、XP 以前では、たいていの場合 15ms 程度の
分解能しかないため、tcsntp を使って時刻合わせをした直後に、再度 tcsntp を
実行しても 15ms 程度のずれが出る場合があった。なお、Vista 以降では分解能は
1ms に向上している模様。)
・権限がない状態で、tcsntp を使って時刻合わせをしようとした場合に、ログに
エラーの原因を残すように修正。
2009/07/19
・メッセージ専用ウィンドウを使うと、「レジューム時に実行」が機能しなくなる
(=WM_POWERBROADCAST を受け取れなくなる)ことが判明したため、元に戻した。
・Vista で C:\Program Files 以下にインストールした場合の制限事項を追記。
2009/07/23
・デスクトップアイコンに関する機能を有効化したときに、更新間隔に合わせて
デスクトップアイコンがちらついていたのを修正。
2009/07/27
・XP で「タスクバーにアイコンのみを表示」設定を使えるようにする条件を間違えて
いたのを修正。(タスクバーボタンのグループ化ではなく、「タスクバーボタンを
スライドする」を off にしたときに使えるように修正。)
・Vista で Aero と互換のないソフトを使うことで、一時的に Aero がオフになった
場合に、文字がちらつくのを修正。
2009/07/29
・時刻合わせの設定画面を表示中に tcsntp /silent を実行した場合でも、時刻
合わせが行われるように変更。
・Vista では、時刻合わせの設定画面の「今すぐ同期」ボタンにシールドアイコンが
表示されるように変更。(ボタンを押すと、昇格ダイアログが表示され、許可した
場合には時刻合わせが行われる。)
・x64 で CPU 使用率の拡張書式が使えなかったのを修正。
2009/08/22
・時計ウィンドウにフォーカスがあるときに、アプリケーションキーを押して
メニューを出すと、変な位置に表示されるのを修正。
・隠しウィンドウのウィンドウスタイルを WS_DISABLED に変更。(環境によっては
さらなる省メモリ化。)
2009/09/06
・Vista でネットワーク送受信量の拡張書式を使うと、実際の転送量よりも大きい
数値が表示されるのを修正。
・ネットワーク送受信量に、無線 LAN の送受信量を含めるように修正。
2009/09/23
・tclocklight-unofficial-060502 の変更を一部取り込む。
- キュ!機能を少し変更。タスクバーがどの位置にあっても、タスクバーに
重なった窓を押し戻す機能に。
・ウィンドウ移動に使う API を SetWindowPos() に統一。
2009/09/26
・Vista で C:\Program Files 以下にインストールした場合など、tclock.ini に
設定を書き込めなかった場合に、エラーメッセージを表示するように修正。
(ただし今回は、tclock.exe のみの対応。)
2010/02/04
・tclocklight-050716 の修正を一部取り込む。
- フォントサイズを3の倍数でない数にすると本来より小さく表示されるのを修正
・Windows 7 での動作を確認。
・Vista/7 でカレンダーが表示された状態で、再度時計を左クリックすると、一度
カレンダーが消えてから再度表示されるのを修正。
2012/01/04
・Vista/7 で、音量の書式を使った際に、実際より 1 小さい値が表示される場合が
あるのを修正。
・日付が変わる際、毎秒表示更新を行うフラグを off にしていたのを修正。
・x64 版のインストール方法の詳細を追記。
・NTP の設定方法の記載を、wiki@nothing の記事を参照するように変更。
・Windows SDK 7.1 による x64 ビルドに対応。
・tclock.exe 起動時に lang ディレクトリが見つからない場合はメッセージを
表示するように変更。
・SNTP のログに年の表示を追加。
2016/09/11
・Windows 10 Anniversary Update で動かない問題の対処。(T-Clock Redux の
コードを参考に。)
・High DPI 対応。
・Win9x/NT4/2000/XP サポート終了。古いコードの削除。
・VC6~VC2008, BCC のサポート終了。
・VC2012~VC2015 に対応。
・プロパティの「マウス操作」タブで、「機能」ドロップダウンを開いただけで、
それに関連するオプション設定が消えるのを修正。
・tclocklight-050716 の細かいバグ修正を一部取り込む。
・起動時間の表示が 49.7 日でリセットされる問題を修正。(all 版)
・書式 _m, _d, _h, _n を追加。
・書式 NxxG, HxxT を追加。(all 版)
・書式 \xXXXX; をサロゲートペアに対応。
・かずぼん氏による最終テストバージョンである tclocklight-040905 (ソース
のみの公開) の大半を取り込み。
- ツールチップ書式のファイルからの読み込み。
- ツールチップのフォント指定。
- コマンドラインオプション /tip によるツールチップの表示。
- アラーム、マウス機能、タイマーの処理をリンクリストに変更。
- (memreduce は不採用)
・Explorerのクラッシュ後に改造し直す設定をデフォルトで有効化。
・tclocklight-050716 の装飾とアナログ時計機能を取り込む。(all 版)
これに伴い、all 版はデフォルトライブラリとのリンクが必須となった。
・マルチディスプレイ使用時の挙動を一部改善。
・x86 版を 64bit OS で実行できないようにチェックを追加。
・デフォルトの時間の書式を hh から _h に変更。
2018/09/04
・VC2015 で x64 版がビルドできなかったのを修正。
・書式 CU[0-7] を追加。コアごとの CPU 使用率の表示に対応。(PR #4) (all 版のみ)
・nifty @homepage の閉鎖に伴い、ヘルプの URL を「TClock2ch付属サイト」に変更。
http://tclock2ch.no.land.to/
http://tclock2ch.no.land.to/kazubon/tclocklight/help/ja/
・通常版のパッケージ構成を変更し、x64 版と x86 版を分離。
・リモートデスクトップで接続時のちらつきを制限事項として記載。
6.ライセンス
 オリジナルのライセンスが GPL であるため、この改造版のライセンスも
当然 GPL です。
7.連絡先
改造版作者: K.Takata
URL: http://k-takata.o.oo7.jp/
https://github.com/k-takata/TClockLight (ソースコード)