どうも。じっちゃん入院です。土地問題は地域問題にまで発展して色々やばげです。
モチベーションあがらないので新しいことができませんが
既に着手している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での実行