杉山利幸の公開日誌 2022年9月分

2022年10月分

2022/09/24 新パソコンの部品が届きました。
2022/09/23 sug02 が複数のOSで起動しなくなりました。
2022/09/17 Before Power Off Ver. up to 2.20
2022/09/10 Screen Saver Stopper Ver. up to 2.10
2022/09/03 Cmd MsgBox Ver. up to 2.10


2022/09/24 新パソコンの部品が届きました。

新パソコンの部品が届きました。これから組み立てます。

CPU は AMD Ryzen 5 5600G です。

その際 ここ の環境をほとんど壊すので、
メールの返信やソフトに不具合があった場合のテストができなくなります。
ご了承お願いします。


2022/09/23 sug02 が複数のOSで起動しなくなりました。

sug02 が複数のOSで起動しなくなりました。

主なエラーは ACPI BIOS ERROR です。BIOS の設定を工場出荷時にしてもダメでした。

この辺りで兆候がありました。

どうしようもないので急遽、新しいパソコンを作ることにしました、
Intel は高いので急遽 AMD を検討することにしました。
詳しいことは後程。

ソフトの更新は今週はお休みです。


2022/09/17 Before Power Off Ver. up to 2.20

今日付けで Before Power Off をバージョンアップしました。
バージョンアップ内容は以下の通りです。

Ver.2.20 2022/09/17

1番目の修正は、
ここ の1番目の修正と同じです。

2番目の修正は、ここ の2番目の修正と同じです。

3番目の修正は、ここ の3番目の修正と同じです。

4番目の修正は、不具合修正と、
1番目の修正とも絡みますが、Windows Vista 以前はディスククリーンアップの設定時昇格要求があったのですが、 Windows 7 からは昇格要求がないのでシールドアイコンを表示しないようにしました。

5番目の修正は、ここ の5番目の修正の内容と実質的に同じです。

6番目の修正は、1番目の修正とも絡みますが、Windows 7 からは「サスペンド」という言葉が無くなった
ことによる修正です。


2022/09/10 Screen Saver Stopper Ver. up to 2.10

今日付けで Screen Saver Stopper をバージョンアップしました。
バージョンアップ内容は以下の通りです。

Ver.2.10 2022/09/10

1番目の修正は、
ここ の1番目の修正と同じです。

2番目の修正は、ここ の2番目の修正と同じです。

3番目の修正は、ここ の3番目の修正と同じです。

4番目の修正は、文字通りです。

5番目の修正は、
作者のパソコン環境 には今までバッテリー駆動の環境がなく、
その環境の場合のコーディングは、机上でのデバッグで行っていたのですが、
ノートパソコン を導入したことで正式なデバッグができるようになり、
それを考慮して仕様を変更することにしました。
今回の仕様変更で、電源設定変更中にACアダプターを抜き差ししても、
安全な電源設定変更ができるようになりました。


2022/09/03 Cmd MsgBox Ver. up to 2.10

今日付けで Cmd MsgBox をバージョンアップしました。
バージョンアップ内容は以下の通りです。

Ver.2.10 2022/09/03

1番目の修正は文字通りですが、
Windows 11 は
前の1番目の修正と同じ理由で対応します。
Windows XP と Vista は SHA-2 非対応の問題で Windows Update ができませんで対応環境から外します。
Windows 8 は作者の嫌いなOSなので、対応環境から外します。
Windows 8.1 も作者の嫌いなOSですが、7 をサポートしている都合上、まだ対応環境に入れています。

2番目の修正は、前の2番目の修正と同じ理由です。

3番目の修正は話せば長くなります。

Windows は Windows 95 から Shift-JIS コードを元にした API(Application Programming Interface)と
UTF-16(UNICODE) コードを元にした API が2つ混在しています。
ここ辺りから勉強するといいでしょう。

Shift-JIS コードはマルチバイトコードともいわれ、1バイトもしくは2バイトで1文字を表します。
UTF-16 コードはワイドバイトコードともいわれ、2バイトで固定で1文字を表します。
前者は<API名>Aという本名を持っています。後者は<API名>Wという本名を持っています。

コーディング上呼び出すのは<API名>で呼び出しますが
前の3番目の修正で設定を変更することにより、
どちらを呼ぶかの切り替えができるようになっています。

恐らく最初は、<API名>Wが呼ばれると、文字コードを変換して<API名>Aを呼ぶようになっていたと推定します。
しかし今は逆で、<API名>Aが呼ばれると、文字コードを変換して<API名>Wを呼ぶようになっていると推定します。

マイクロソフトは、<API名>A で呼び出す環境では以下のように、もうバグは修正しないという対応になってきています。
Visual C++ 2015 でマルチバイト文字セットを利用するとコマンドライン引数を正しく取得できない
更に<API名>Wしかサポートしない API も出てきました。
そこで思い切って、UTF-16 化をすることにしました。

実際の修正は、
まずは共通ライブラリの文字列処理クラス CString を UTF-16 対応にしました。
また、かなりの部分は両対応できるコーディングをしていたので、
コンパイルエラーを取るだけで大部分を修正できました。
ただどうしても、単純にいかない部分もあるので、それは考えながら修正しました。

ただ前の「My Pasokon Memo」は互換性を考え、
入出力ファイルは基本的に Shift-JIS コード にすることにしました。
つまり「Pasokon Memo.txt」は Shift-JIS コードです。即ち UTF-16 化は内部処理のみです。


2022年8月分

戻る