HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0415
abcde初回起動時に一回だけ行う2未解決


abcde

リンク

2021/4/15(Thu) 21:02:15|NO.92606

パソコンの初期設定みたいに、 
初回起動時にだけ行う
ってやりたかったらどうすればいいですか?



この記事に返信する


沢渡

リンク

2021/4/15(Thu) 21:46:12|NO.92608

「初回起動時の処理」が終わったら何かしらのファイルを出力し、
次回からはそのファイルがあるかどうかをチェックして、
「初回起動時の処理」を行うかどうかを判断すればよいのでは。



とあるプログラマ

リンク

2021/4/15(Thu) 22:24:12|NO.92609

沢渡さんが仰る通り、設定ファイルの有無または初期設定済みのフラグを設定ファイルなどを出力して起動毎にチェックするのが一番手っ取り早くて無難な方法だと思います。

その中でも種類がありますが、

・アプリケーションフォルダ
・AppDataフォルダ
・レジストリ

のいずれかが一般的だと思いますね。


一応それぞれの特徴を書くと

・アプリケーションフォルダ
 PCに複数のユーザーがいる場合、最初に起動したユーザーのみを判別可能。別のユーザーが初めて起動しても既に他のユーザーが初期設定済みなら初回起動判定はできない。
 アプリケーションフォルダを削除したときに同時に消せるのでちょっとした個人製作ソフトに多くみられる方法。

・AppData
 場所はC:\Usres\ユーザー名\Appdata\Local\、HSPからはdirinfo(0x1001c)で取得可能 (CSIDL_LOCAL_APPDATA)
 ユーザーごとのフォルダなので、PCに複数のユーザーがいる場合、各ユーザーがそれぞれ最初に起動したときに初期設定が可能。ただしユーザーごとに設定を保存するので、アプリケーションで共通な設定は保存できない。
 アプリケーションを削除してもシステムが勝手に消してくれることはないが、システムへの影響は少ないので放置でも問題は起きにくい。

・レジストリ
 システムが保有する領域に書き込む。Win32APIを使用するため扱いが難しい。なるべくユーザーから設定の内容を隠ぺいしたいときに使う。(ライセンスやほかのアプリケーションへの関連付けなど)
 アプリケーションを削除してもシステムが勝手に消してくれることはないので、個人的にはインストラー・アンインストーラーがあるアプリケーションで使用するべきかと。
 昔はINIファイルでフォルダに保存するよりも推奨されていたようですが、昨今ではシステム管理領域であるレジストリを無駄に汚さないためにも避けられているイメージ (例えば.NetアプリケーションはAppdataにXMLで設定を保存しています)

といった感じでしょうか。


また、アプリケーションフォルダとAppdataフォルダでもINIファイルで読み書きするなら、自分でファイルを読み込む命令を作らなくともWin32APIで簡単に内容の読み書きができます。(Get/SetPrivateProfileString)



ONION software Copyright 1997-2023(c) All rights reserved.