﻿
dllcall,call the functions in the DLLs.

Usage: dllcall [-h|-rc],<function name>,[[0x|%u|%o[d]|%r]parameter(s)]...,<DLL name>[*|-];<function name>...;...
Examples:
  dllcall Sleep,1000,kernel32.dll;MessageBoxW,,"%uHello world!",%uPrompt,1,user32.dll-

Type "-h" to show this help       site: www.vinoca.org

-------------------------

dllcall,调用 DLL中的函数。
用法： dllcall 函数名称,参数,DLL名称
例子:
  dllcall Sleep,1000,kernel32.dll
      调用kernel32.dll 中的函数 Sleep,传入参数 1000 ,即实现暂停1秒的功能。
  dllcall MessageBoxA,,"Hello world!",Prompt,1,user32.dll
      调用user32.dll 中的函数 MessageBoxA,传入四个参数 0,"Hello world!",Prompt,1 ,即弹出一个消息框。

说明：
      dllcall 用来扩展批处理,对系统提供的一些函数实现调用。

		","(即英文逗号)分隔传入的参数,在参数中使用英文逗号,用"\"转义，如"Hello\,i am tom."这样的参数。逗号会被空格代替,参数可以是纯数字,如1234或"1234",表示一个十进制的数;
		0x 开头的参数表示一个十六进制的数，如0x1234或"0x1234";
		%u 开头的参数表示这是一个unicode 类型的字符串,如%uHello\,man 或"%uHello\,i am tom.";
		%o 开头的参数表示将这个参数中的结果打印出来,如%o 或"%o",%od 开头的参数与 %o 开头的参数类似,也是打印结果,但是会认为参数是一个整数,用法与%o 相同,如果不全是数字而且没有 0x %u 等参数说明符，参数会被认为是一个字符串。

		参数中有空格或中文字符，用引号将参数引起来，0x %u 等参数说明符号应在引号内,如果传入的参数值为0,可用,,这样的写法。

      1.0.3.0版本加入功能说明：
            加入%r参数说明符，加入符号";"、"*"、"-"，增加了多个函数的调用。
		
		%r用来引用一次dllcall使用中上一个函数的返回值;
		";"用来分隔调用的函数，在函数中使用";"用"\;"转义,"*"及"-"放在一个函数调用语句的后面，"*"用来指示函数的返回值是一个字符串的地址，"-"用来指示函数的返回值不再打印出来。例如：
			dllcall OpenClipboard,,user32.dll;GetClipboardData,1,user32.dll*;CloseClipboard,user32.dll-
            这个语句中有3个函数，第一个函数打开剪切板，第二个函数取得其中的数据，第三个函数关闭了剪切板。

      1.0.3.3版本加入功能说明：
		加入%p参数说明符。

		%p指出这个参数是一个指针，其后可跟一个十进制或十六进制的数对其赋初值。例如：
			dllcall IsNetworkAlive,%p0x1,sensapi.dll
			这个语句中传入IsNetworkAlive的参数是一个指针（即地址值），这个地址中的内容是1 。

	1.0.3.4版本加入功能说明：
		加入"-r"选项。
		    由于Windows的命令解释器cmd.exe的for命令中使用dllcall会出错，所以"-r"选项的作用就是给出一个替代","的字符，如：
			for /f %i in ('dllcall -r# MessageBoxA##"test"#p#0x24#user32.dll') do set return=%i
 

出错说明:
	Invalid arguments.  无效的命令行参数。
	Invalid function statement "xxx".  无效的 dllcall 函数语句，dllcall 的参数应该是一体的(没有被空格隔开)，引号中显示出错函数语句的内容。
	Can not load this DLL.  不能加载这个 DLL　，可能是这个 DLL　的名称写错了，注意 .dll 是不能省略的。
	This function can not find. 没有找到这个函数（在DLL中），可能是函数的名称写错了，注意大部分函数的末尾都有A或W的字符，指明是ANSI 或 unicode 的函数，而函数说明文档中函数的末尾并没有A或W。　
	A exception occured,invalid parameter value is specified.   发生了一个异常，使用了无效的参数(调用函数的),调用的函数发生了异常,查看函数说明文档修正错误。
                              
更新说明：
      最新的版本在 www.vinoca.org 可以找到,程序的使用惯例不变时,更新不做说明。该程序使用汇编语言编写，fasm汇编器汇编,作者是 vinoca 。

版權說明：
	此程序採用開源 MIT license發布。http://vinoca.org/license.html

