2022/08/23(火) [n年前の日記]
#2 [prog] スクリーンセーバのビルドの実験中
Windows10 x64 21H2 + MinGW (msys2 + MinGW-w64に非ず)で、スクリーンセーバのビルドができるかどうか実験中。
以下のページで紹介されているサンプルを利用させてもらって実験しているところ。ありがたや。
_よしいずの雑記帳 スクリーンセーバーの作り方
動作させてみた様子は以下。
以下のページで紹介されているサンプルを利用させてもらって実験しているところ。ありがたや。
_よしいずの雑記帳 スクリーンセーバーの作り方
動作させてみた様子は以下。
◎ メッセージが文字化けする件。 :
ビルドはできたものの、「設定」ボタンをクリックすると文字化けしているメッセージが表示されてしまう。改善できないかと試していて結構ハマってしまった。
てっきり resource.rc 内のメッセージが表示されているものと思い込んで色々試してみたのだけど、いくら試してもメッセージが変わらない・修正できなくて悩んでしまった。
_Resource Hacker
原因は自分の勘違いだった。設定ボタンをクリックして表示されるメッセージは、screensv.c 内で記述されていた。resource.rc は関係無かった…。screensv.c 側を変更したら、あっさりダイアログ内のテキストも変わってくれた。しかしそうなると、resource.rc 内の記述はどこで使われるのだろう…。
てっきり resource.rc 内のメッセージが表示されているものと思い込んで色々試してみたのだけど、いくら試してもメッセージが変わらない・修正できなくて悩んでしまった。
- UTF-8Nで保存してた resource.rc をSJISで保存し直したり。
- テキストを英数字で記述し直したり。
- Windows10がどこかにリソースをキャッシュして、そっちが表示され続けているのではと疑って、クリーンアップ機能その他を利用してみたり。
- Resource Hacker というツールを導入して、.scr の中に入っているリソースを確認してみたり。
- ファイル名を変更してみたり。
_Resource Hacker
原因は自分の勘違いだった。設定ボタンをクリックして表示されるメッセージは、screensv.c 内で記述されていた。resource.rc は関係無かった…。screensv.c 側を変更したら、あっさりダイアログ内のテキストも変わってくれた。しかしそうなると、resource.rc 内の記述はどこで使われるのだろう…。
◎ 結局こうなった。 :
手元では、以下の3つのファイルを同じ場所に置いて make と打てば .scr (mgscrsav.scr) が得られる状態になった。
_mgscrsav.c
_resource.rc
_Makefile
ただ、出来上がった mgscrsav.scr を右クリックして「Test」や「構成」を選んでも、以下のダイアログが表示されて実行できなくなってしまった…。
![error_ss.png](img/_2022/20220823_mingw_scrnsave2/error_ss.png)
どうやら、作業フォルダを、シンボリックリンクを使って、別の場所にあるように見せかけつつ作業してたのがマズかったようだなと…。オリジナルのフォルダに移動してから、.scrを右クリック→「Test」「構成」を選んだら動作してくれた。
32bit版プログラムをWindows10 64bit上で動かしている状態なので、C:\Windows\SysWOW64\ 以下に .scr をコピーして動作確認。動いてくれた。
_mgscrsav.c
_resource.rc
_Makefile
ただ、出来上がった mgscrsav.scr を右クリックして「Test」や「構成」を選んでも、以下のダイアログが表示されて実行できなくなってしまった…。
![error_ss.png](img/_2022/20220823_mingw_scrnsave2/error_ss.png)
ファイルを開くことができません インターネット セキュリティ設定のために、1つ以上のファイルを開くことができませんでした。
どうやら、作業フォルダを、シンボリックリンクを使って、別の場所にあるように見せかけつつ作業してたのがマズかったようだなと…。オリジナルのフォルダに移動してから、.scrを右クリック→「Test」「構成」を選んだら動作してくれた。
- 「Test」を選ぶ : フルスクリーン表示
- 「構成」を選ぶ : 設定ダイアログが表示される状態。
32bit版プログラムをWindows10 64bit上で動かしている状態なので、C:\Windows\SysWOW64\ 以下に .scr をコピーして動作確認。動いてくれた。
- Windows 64bit版、スクリーンセーバが32bit版なら、C:\Windows\SysWOW64\ 以下に .scr をコピー。
- Windows 64bit版、スクリーンセーバが64bit版なら、C:\Windows\System32\ 以下に .scr をコピー。
- Windows 32bit版なら、C:\Windows\System32\ 以下に .scr をコピー。
[ ツッコむ ]
以上です。