【勝手に修正版】コマンドライン文字列を解析して取得【HSP】
【勝手に修正版】コマンドライン文字列を解析して取得【HSP】
#include "kernel32.as"
#include "shell32.as"//
// メイン
//
Argc = 0
Argv = ""// コマンドライン文字列のポインタ取得
GetCommandLineW
pCommandLine = stat
// コマンドライン文字列の長さ取得
lstrlenW pCommandLine
CommandLineLength = stat
// 分解したコマンドライン文字列のポインタ配列取得
CommandLineToArgvW pCommandLine, varptr(Argc)
dupptr pArgv, stat, Argc * 4, 4// 実行ファイル名
dupptr Args, pArgv(0), (CommandLineLength + 1) * 2, 2
Argv(0) = cnvwtos(Args)
// コマンドライン引数 1つ ずつ処理
#ifdef _debug
Argc--
repeat Argc - 1, 2
#else
repeat Argc - 1, 1
#endif
// 「ポインタ」から「文字列」に
dupptr Args, pArgv(cnt), (CommandLineLength + 1) * 2, 2
Argv(length(Argv)) = cnvwtos(Args)
loop// ポインタ配列 解放
LocalFree varptr(pArgv)// 後はご自由にどうぞ
repeat Argc
mes "Argv[" + cnt + "] = " + Argv(cnt)
loop
- 「1文字オプション」と「キーワードオプション」がある
- 「引数付き」と「引数なし」がある
- 「引数付き」の「キーワードオプション」では、オプションと引数の間の「スペース」の代わりに「イコール」を使うことができる ※2014/08/27 21:00 頃 修正
- 「引数付き」の「1文字オプション」では、オプションと引数の間の「スペース」を省略できる
- 「--」オプション以降は全て文字列として扱われ、オプションではなくなる