[MysticSL] 文字列を返すAPIの使い方

投稿日 : 2008年11月22日 15:05

どうも。じっちゃん入院です。土地問題は地域問題にまで発展して色々やばげです。
モチベーションあがらないので新しいことができませんが
既に着手しているMysticSLのネタをば。

WinAPIの中には、文字列へのポインタを返すものがありますが
VBタンはそいつを普通にString型で扱ってくれます
MysticSLはVBベースなので…と思いきや、#declareで宣言した関数の
戻り値はInteger型でしか受け取れません
そこで、C言語のようにメモリ操作をするサンプルをご紹介します


#declare [GetCommandLine, "kernel32", "GetCommandLineW"]
#declare [lstrlen, "kernel32", "lstrlenW", ByVal strAddr As Integer]
//↓実際は1行で書くこと
#declare [CopyMemory, "kernel32", "RtlMoveMemory", _
                                  ByVal Destination As Integer, _
                                  ByVal Source As Integer, _
                                  ByVal Length As Integer]

Integer [VarAddr, RetAddr, length]
String [CmdLineBuff]

    //コマンドライン取得
    GetCommandLine [RetAddr]
    
    //長さ取得
    lstrlen [RetAddr, length]
    
    //長さ確保してポインタ取得
    ZeroString [CmdLineBuff, length]
    GetPtr [VarAddr, CmdLineBuff]
    
    //めもりこぴー
    CopyMemory [VarAddr, RetAddr, length * 2]
    
    Print [CmdLineBuff]
    
    Stop



簡単なGetCommandLineを使ってみました
MysticSLの文字列はUnicodeなのでGetCommandLineW/lstrlenWで。


デバッグ実行だと、どんなコマンドライン引数でスクリプト実行されているかまるわかりw


こちらがビルドしたEXEでの実行

フィードバック

# re: [MysticSL] 文字列を返すAPIの使い方

2008/11/25 11:02 by インドリ
>じっちゃん入院です。土地問題は地域問題にまで発展して色々やばげです。

大変な時期だとおもうけど、適度に頑張れ♪
ストレスが溜まると思うけど息抜きをちゃんとしよう♪
応援しているピヨ♪
コメントの入力
タイトル
名前
Url
コメント