ラベル 外部ツール の投稿を表示しています。 すべての投稿を表示
ラベル 外部ツール の投稿を表示しています。 すべての投稿を表示

2007年7月21日土曜日

(X)HTMLコンバータ (4) 編集中のスクリプトを取得

編集中のスクリプトを取得するスクリプト。HSPスクリプトエディタ起動時に実行してみてください。エラー処理は適当です。
流れとしては

  1. タブコントロールにTCM_GETCURSELを送り現在選択されているタブのインデックスを取得
  2. タブのインデックスをFootyのハンドルに変換
  3. hsed_gettextを実行
といったところです。TCM_GETCURSELはちょくとさんのサイトを参考とさせていただきました。

なお、実行には別途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 textginfo_winxginfo_winy
    stop

※この例を見れば分かるように、textなど「標準命令ではない命令や関数と同じ名前を付けた変数」は命令や関数として認識されてしまいます。この問題は仕様としてスクリプト記述時に気をつけていただこうと思っています。

追記:HSPSDK3.1RC1を使った場合のモジュールはHSP開発Wikiのページをご覧ください。