編集中のスクリプトを取得するスクリプト。HSPスクリプトエディタ起動時に実行してみてください。エラー処理は適当です。
流れとしては
- タブコントロールにTCM_GETCURSELを送り現在選択されているタブのインデックスを取得
- タブのインデックスをFootyのハンドルに変換
- hsed_gettextを実行
なお、実行には別途HSPSDKのhsedsdk.asが必要です。HSPSDKはONION software/おにたま氏の著作物であり、ONION softwareウェブサイトから入手できます。
#include "hsedsdk.as"
#module "hsedsdk_getScript"
#define TCM_GETCURSEL 0x130B
#deffunc hsed_getScript var result, local hwndTab, local iTab, local footyId
hsed_capture
if stat : return 1 // エディタが起動していない
hsed_getwnd hwndTab, HGW_TAB
sendmsg hwndTab, TCM_GETCURSEL, 0, 0
if ( stat == -1 ) : return 2
iTab = stat // 何番目のタブが選択されているか
// タブのインデックスからfootyIdを取得し、スクリプトを変数にコピー
hsed_getfootyid footyId, iTab
hsed_gettext result, footyId
return stat
#global
*getText
// エディタからスクリプトを取得
text = ""
hsed_getScript text
if ( stat == 1 ) {
dialog "HSPエディタが見つかりません。", 1, PROGRAM_TITLE
end
}
if ( stat == 2 ) {
dialog "HSPエディタから正しいウィンドウハンドルを取得できませんでした。", 1, PROGRAM_TITLE
end
}
if ( stat == 3 ) {
dialog "パイプハンドルを作成できませんでした。", 1, PROGRAM_TITLE
end
}
mesbox text, ginfo_winx, ginfo_winy
stop
※この例を見れば分かるように、textなど「標準命令ではない命令や関数と同じ名前を付けた変数」は命令や関数として認識されてしまいます。この問題は仕様としてスクリプト記述時に気をつけていただこうと思っています。
追記:HSPSDK3.1RC1を使った場合のモジュールはHSP開発Wikiのページをご覧ください。
8 件のコメント:
hsed_gettextなんてありましたっけ?
ellerさんはどのバージョンのHSPを使っているのですか?
31b7を境にhsedsdkが変更されていて、31b10現在では定数がいっぱい定義されているものの、半分の定数しか使い方が分かっていません。
メッセージだけ定義して実装はしていない可能性もあるかも知れませんね...。
WiKiに分かっている分のリファレンスを書いて不明点をユーザーの方々に補ってもらおうかな^^;
あとhsedsdk.asはHSPSDKではなくhsp261cmp.asなどと一緒に同梱されているので、
HSPSDKを導入しなくても大丈夫です。
kz3さん、コメントありがとうございます。
今回の一連の開発ではkz3さんの資料やスクリプトがとても役に立ちました。
> hsed_gettextなんてありましたっけ?
HSPSDK3.1β10(現在の最新版)には記載されています。
ヘルプには載っていないのでhsedsdk.asを直接読まないと気付かないかも知れません。
> HSPSDKを導入しなくても大丈夫です。
ご指摘ありがとうございます。
そういえばhsedsdk.asをcommonフォルダにコピーした時に「上書きしますか?」と聞かれた気がします。
Wikiには分っている範囲で情報を追加していこうと思います。
あ!これは気づきにくいですね!
今までは
・HSP ver3.1β10(アップデート版)のダウンロード (8.22MB)
に入っていたのですが、HSPSDKにも「hsed3」というフォルダがありました。
メッセージ定数もアンダーバーが
プレフィクスされていたりと変わっているんですね~。
ありがとうございました!
今回ばかりはHSPSDKを導入しないと(最新の)hsedsdk.asが利用できないようですね。
HSP3.1b10をDLして確認してみました。
SDK同梱の方が定義されている命令は多いのですが、ファイルのタイムスタンプはhsp3.1b10に同梱されている物の方が新しいようですね。
どちらを利用すべきなのか判断しかねます。今度おにたまさんに確認を取ってみます。
3.1RC1では_HSED_GETACTTABIDなどが定義されている最新のhsedsdk.asが同梱されていますね。
_HSED_GETACTFOOTYIDなんてのもありますね。RC1に対応したスクリプトをUPしたいと思います。
おにたまさんからメールの返信はありませんが、きっと読んでいただけたのでしょう。後ほどお礼のメールを送っておきます。
ちょっと訂正。おにたまさんからメールが届いていました。やはり読んでくださっていたようです。
コメントを投稿