PCに関するTipsを公開しています。
Windows7から提供されてきた「デスクトップガジェット」だが、Windows8からはセキュリティー上の理由により廃止された。しかし、その後も一定の需要があるためか、サードパーティーよりWindows10でも利用可能な「8GadgetPack」として公開されている。
8GadgetPack
https://8gadgetpack.net/
筆者も「8GadgetPack」に同梱されている「スクロールカレンダー」を愛用しているが、残念な事に祝日のメンテナンスが停滞しているようで、天皇誕生日などが正しく表示されない不具合がある。デスクトップガジェットは、HTMLやJavaScriptで記述されており、テキストベースで修正可能なので、祝日を定義している箇所を解析してみた。
設定ファイルは、通常では表示されないフォルダー内にあるため、以下の手順で修正を行う。
6行目、元号を追加する。
var yg=[[1867,"明治"],[1911,"大正"],[1925,"昭和"],[1988,"平成"],[2018,"令和"]];
190行からの「case 1」〜「case 12」までを修正する。
case 1: shn(1+o,"元日"); shm(2,"成人の日"); break; case 2: shn(11+o,"建国記念の日"); if (dt.getFullYear() >= 2020) { shn(23+o,"天皇誕生日"); } break; case 3: shn(Math.floor(20.8431+ss(dt))+o,"春分の日"); break; case 4: if (dt.getFullYear() >= 1989 && dt.getFullYear() <= 2006) { shn(29+o,"みどりの日"); } else if (dt.getFullYear() >= 2007) { shn(29+o,"昭和の日"); } if (dt.getFullYear() == 2019) { shn(30+o,"国民の休日"); } break; case 5: shn(3+o,"憲法記念日"); if (dt.getFullYear() <= 2006) { shn(4+o,"国民の休日"); } else if (dt.getFullYear() >= 2007) { shn(4+o,"みどりの日"); } var dow = shn(5+o,"こどもの日"); if (dt.getFullYear() >= 2007) { if (dow == 1 || dow == 2) { shn(6+o,"振替休日"); } } if (dt.getFullYear() == 2019) { shn(1+o,"天皇即位の日"); shn(2+o,"国民の休日"); } break; case 7: if (dt.getFullYear() >= 1996) { if (dt.getFullYear() == 2020) { shn(23+o,"海の日"); shn(24+o,"スポーツの日"); } else if (dt.getFullYear() == 2021) { shn(22+o,"海の日"); shn(23+o,"スポーツの日"); } else { shm(3,"海の日"); } } break; case 8: if (dt.getFullYear() >= 2016) { if (dt.getFullYear() == 2020) { shn(10+o,"山の日"); } else if (dt.getFullYear() == 2021) { shn(8+o,"山の日"); } else { shn(11+o,"山の日"); } } break; case 9: shm(3,"敬老の日"); var sb=Math.floor(23.2488+ss(dt))+o; if(shn(sb,"秋分の日")==3) shn(sb-1,"国民の休日"); break; case 10: if (dt.getFullYear() <= 2019) { shm(2,"体育の日"); } else if (dt.getFullYear() >= 2022) { shm(2,"スポーツの日"); } if (dt.getFullYear() == 2019) { shn(22+o,"即位礼正殿の儀"); } break; case 11: shn( 3+o,"文化の日"); shn(23+o,"勤労感謝の日"); break; case 12: if (dt.getFullYear() >= 1989 && dt.getFullYear() <= 2018) { shn(23+o,"天皇誕生日"); } break;
上記では、過去の祝日もできるだけ正しく表示されるように修正してみたが、修正の必要がない月のコードには手を付けていないため「case 1」〜「case 12」まで、全てコピペすればOK。
尚、デフォルトでは2006年以前と2100年以降の祝日が表示されないが、44行目の
if(2006<i && i<2100) hld(ldt);
の数字部分を修正すれば表示されるようになる。但し、過去の全ての祝日が正しく表示される訳ではないため、参考程度に留めておきたい。
上記「8GadgetPack」に同梱されている「All CPU Meter」を最新のWindows10へインストールすると、グラフ部に「Load library error」が表示される場合がある。原因は、必要なライブラリが有効になっていないためなので、以下の手順で有効化する。
以上で、エラーは解消するはずだ。是非試してみて欲しい。