コマンドライン文字列を解析して取得

dir_cmdlineはそのままだと使いにくいので作ってみた。なんて命令にしようかな。

dir_cmdlineはそのままだと使いにくいので作ってみた。なんて命令にしようかな。

;
;	コマンドライン文字列を解析して取得するモジュール
;
;参考 : http://www.hsp.tv/play/pforum.php?mode=pastwch&num=47162
;

;
#include "kernel32.as"
#include "shell32.as"

#ifndef __CommandLineToArgvW__
#define global __CommandLineToArgvW__
#module 

#deffunc test var v_NumArgs, array v_CmdLinesA
	;	コマンドライン文字列(Unicode型)を取得
	;戻り値:文字列へのポインタ
	GetCommandLineW
	lpCmdLineW = stat

	;	コマンドライン文字列を解析
	CommandLineToArgvW lpCmdLineW, varptr(NumArgs)
	if stat=0 : v_NumArgs = 0 : return
	pCmdList = stat
	;pCmdList : 組み立てられた引数リストへのポインタ
	;NumArgs  : 引数の数を受け取る整数変数へのポインタ

	dupptr p, pCmdList, 4*NumArgs, vartype("int")
	repeat NumArgs
		dupptr temp_CmdLineW, p(cnt), 256, vartype("str")
		v_CmdLinesA(cnt) = cnvwtos(temp_CmdLineW)	;Unicode -> Shift_JIS
	loop

	LocalFree pCmdList

	v_NumArgs = NumArgs
	return

#global
#endif	// __CommandLineToArgvW__


;
;	実行サンプル
;
#if 10	// 実行サンプル

	test argc, argv
	mes "引数の数 = " + argc
	repeat argc
		mes "" + cnt + " : " + argv(cnt)
	loop

#endif	// 実行サンプル