編集中のスクリプトを取得するスクリプト。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のページをご覧ください。