![]()

41. HSP では式の真 (TRUE), 偽 (FALSE) は定数ですか?
はい、一応定数です。今の所、TRUE == 1, FALSE == 0 と言う、C/C++ と同じ定数になっている様です (注意 : TRUE, FALSE と言う名前が定義されている訳ではありません)。但し、これは、保証されていません。真偽が取る値を期待したインプリメントは避ける様にして下さい。
42. Plug-in dll で、MFC, OWL, VCL を使用したいのですが?
使用する事自体に問題は有りませんが、Dynamic Link する場合は、使用者の OS 操作に関するスキルがによっては辛いかも知れません。MFC は勝手にインストールされる事が有る分、まだましかも知れませんが、OWL, VCL を使用する場合は、初心者御断り的な雰囲気が強くなるでしょう。
また、各ライブラリには、当然ですが、その時々の、Windows に即した仕様や、プログラムには付き物のバグが内在しています。この為、Dynamic Link 用の共有ライブラリファイルや、Windows OS 自体がヴァージョンアップ (含 マイナーヴァージョンアップ) した際に、以前動作したプログラムが上手く動かなくなると言った現象が出る事が有ります。これは、仕方のない事ですが、初心者ほど許容し難い現象でしょう。
確実に動かすには、スタティックリンクか、使用するダイナミックリンクライブラリの同時配布しかありませんが、実行・配布ファイルが非常に大きくなる事が有ります (MFC, VCL をスタティックリンクした場合は、かなり巨大化すると思われます)。
この辺りは、使用すると思われる対象ユーザのスキルや、作成者のポリシーなどが絡むので、こうすれば最適という正解は有りません。この辺りは、作成者の考え一つで決定するべき事象だと思います。但し、環境やユーザを出来るだけ選ばない Plug-in を作成する場合は、Win32 SDK レベルで作成する方が良いと言う事だけは言えると思います。
43. HSP でパスワードによって制限を解除するシェアウェアって作れるの?
一般的なシェアウェアも、基本的に独自にパスワードのチェックなどを行っているので、作ろうと思えば作れます。パスワードのチェック方法自体は、沢山有りますが、特許に引っ掛からない範囲で注意して作成して下さい。
個人的には、安易にシェアウェアにする事自体が好きでは無いので、これ以上の事を書く積もりは有りません。
44. KazExt.hpi (HSKJPEG.hpi) と他の Plug-in の併用時の制約を教えて下さい。
問題が起こり得る最も多そうな併用は、Force さんの ExForce.dll との併用です。ExForce.dll を使用する場合には、必ずと言ってよい程、HSP ウィンドゥのサブクラス化が行われます。この場合、KazExt.hpi (含 HSKJPEG.hpi) 側で、HSP ウィンドゥのサブクラス化を行うと、注意の必要な状態に陥ります。但し、KazExt.hpi (含 HSKJPEG.hpi) は通常、サブクラス化を行いません。特定の命令を発行した際にのみ、サブクラス化を行う様に設計してあります。依って、その様な機能を使用しない場合には、問題は有りません。該当の機能は、Drag & Drop, エディットボックスの色を変更する機能、Inkey 関係の、Close Hook 辺りです。詳しくはマニュアルをご参照下さい。
注意が必要なのは、サブクラス化をともなう機能を使用する場合です。この場合には、KazExt.hpi (含 HSKJPEG.hpi) 側で、サブクラスの解除を行う必要が出ます。画面を消す時 (cls, screen, buffer)、各種オブジェクトを消す時、終了する時には、予め、KazExt.hpi (含 HSKJPEG.hpi) 側のサブクラスを解除する必要が有ります。解除の方法は、マニュアルを参照して下さい。
この様な事は、他のサブクラス化を伴う Plug-in との併用時にも当てはまります。
なお、この問題は、サブクラス化を行う Plug-in にのみ該当します。KazExtSS.hpi や、KazREdit.hpi には、サブクラス化が絡む機能を付けていませんので、通常は問題無く使用出来ます。但し、KazREdit.hpi は、エディットボックスを、強制的にリッチエディットコントロールにすげ替える為、問題が出る場合も有ります。すげ替えを行う場合には、エディットボックスの色を変更する Plug-in 側の機能が無効になる程度で済みますが、すげ替えた後に、Plug-in でエディットボックスとして色の変更を行おうとすると、何が起こるか分かりません。
この様な問題は、拙作 Plug-in に限らず、他の Plug-in でも発生する事が有ります。複数の Plug-in を併用すると、予想外の細かな問題が起きる場合が有り得ますので、出来るだけ1つの Plug-in で済ませる様にした方が安全と言えば安全です。Win32 API にある程度通じている方は、Plug-in のどの機能がぶつかって問題を起こしうるか、ある程度予想出来ると思われますが、一般的には難しい話ですね。やばそうだと思った場合は、Plug-in の作者に相談して見るのも良いでしょう。但し、Plug-in のマニュアルは隅々まで読んで、それでも分からない点だけを相談しましょうね (^^) 。和哉に相談する時は、こちら (^^;; 。
45. HSP で作成したソフトの画像をリソース抜き出しソフトを使っても見れない様に出来ますか?
出来るとも出来無いとも言えます。まず、標準の HSP のみで処理する場合、必ずどこかに復号したファイルを作成してから表示する必要が有ります。この為、復号を見張り、無理矢理読み出す事が可能かも知れません。また、HSP は中間言語型インタプリタなので、中間言語から、ほぼスクリプトソースを復元出来て仕舞います。更に、インタプリタ故に、複雑なデコード処理では遅過ぎて話にならず、デコード処理は単純にせざるをえないでしょう (暗号レベルが低くなる訳です)。この為、復号プロセスは解読され易いと言えます。
Plug-in を併用し、複雑な処理を施し、Plug-in でメモリ上の画像を展開・表示出来る様にした場合は、復号プロセスを解析されない保証は有りませんが、容易に解読する事は出来無いでしょう。但し、HSP のスクリプト側に、復号プロセスのキーとなる部分を出来るだけ無くしてしまうと言うのが大事だと思います。とは言え、Plug-in でそこまで出来る人は、こんな質問はしないでしょうし…。現実的には、出来無いと等価かも知れません。
なお、画像を隠すと言うのは、主に、シェアウェアや、同人ソフトで用いる手法だと思われますので、フリーの Plug-in で済ませようなどと、甘い事を考えるのは止めましょう (フリーソフトなら OK (^^;; )。その様な有料ソフトに使う Plug-in はそれなりの対価を払って開発して貰うというのが筋だと思います。
46. hspdx.dll を使うプログラムが動作しません。
私自身は未確認ですが、HSP 掲示板 にて、なると さんが発表されたレポートによりますと、screen 0 を、Palette Mode で初期化 (例 : screen 0,80,8,1) していないと、es_ini を失敗する環境が存在すると言う事の様です。
この現象は、DirectX 対応 Video Driver の問題みたいです (バグでしょうねぇ (^^; )。nVidia GeForce や ATI XPERT 98 と言った、かなり有名どころのドライバで発症していると言う報告がありますので、Palette Mode で初期化してから、es_ini と言うのを守った方が安全な様です。
私の場合は、S3 ViRGE DX → #9 Revolution4 → Matrox Millennium G400 DH と言う変遷ですが、これらのカードのドライバでは問題が起きない様です (β版の頃は NT4 + ViRGE DX で、問題が多発していましたが... (^^; )。また、過去の A.S.G. スタッフの環境でのテストでは、Windows 98 + Riva128 でも、問題は起こりませんでした。
47. モーダルダイアログ (閉じるまで親ウィンドゥが無効になるダイアログ) を出したいのですが。
HSP で本当のモーダルダイアログを出すには、Plug-in でダイアログを出すしかありません。
お望みの結果は、見た目モーダルダイアログなウィンドゥを開きたいと言う事でしょう。
48. ローカル Drag & Drop や、OLE Drag & Drop は出来ますか?
出来ません。
ローカル Drag & Drop は、ひたすらマウス操作を監視する事で、なんとか処理出来るかも知れませんが、満足の行く動作を実現するのは難しいと思います (専用、Plug-in を作れば、問題無くこなせると思いますが…)。
OLE Drag & Drop の場合は、HSP 自体が、OLE コンテナ機能を持っていないので、どうしようもありません。Plug-in で、無理矢理、拡張する事が可能かも知れませんが (全く未確認)、非常に困難な作業になると思います。
49. 画像のサイズを自力で判定するには?
通常は、buffer へ picload して、winx, winy で判別しますが、bload でバイナリを直接読み出して、判別したいと言う場合も有るでしょう。
この辺りは、フォーマット仕様書を入手し、ヘッダ内に記録されている画像サイズを自力で判別する事により可能です。資料は各自当たりましょう。
なお、一番難しいと思われるのが、png や JFIF/JFIX JPEG ですね。png の場合は、チャンクを辿って行く必要があり、JFIF/JFIX の場合は、マーカを辿って行く必要が有ります。出現順序に決まりは有るものの、絶対的位置は決まっていませんので、面倒です。
この辺りを、読み出してくれる Plug-in が有る場合は、素直に、Plug-in の機能を使う方がいいかも知れません。
50. 画像の使用色数を調べたいのですが。
画像をスキャンして数えて下さい (画像のサイズによっては、スクリプトでは速度的に厳しいとは思いますが…)。BMP File の場合は、使用色数が設定されている事も有りますが、使用されている形式の、全色使用を意味する 0 が書き込まれている事や、希に、間違った値が書き込まれている事も有りますので、余りあてにはなりません。やはりスキャンするしか無いでしょう。
| このページのご感想は メールにて御願い致します。 |