【案例一】
OutFile "test_maroc.exe" !macro add a b c ;一个实现(a+b)*(a-b)的宏 IntOp $R0 ${a} - ${b} IntOp $R1 ${a} + ${b} IntOp ${c} $R0 * $R1 !macroend /* 注意:!macro和!insertmacro用法: !macro add a b c ;!macro 宏名 参数一 参数二 参数三 ... !insertmacro add 10 20 $0 ;!insertmacro 宏名 参数一 参数二 参数三 ... 使用的时候!insertmacro的参数会代入!macro里面使用 就是如!insertmacro add 10 20 $0 代入!macro add a b c .那么在!macro add里面等效于执行了 IntOp $R0 10 - 20 IntOp $R1 10 + 20 IntOp $0 $R0 * $R1 */ Section !insertmacro add 10 20 $0 ;调用宏 DetailPrint '$0' SectionEnd
【案例二】
;删除指定名称的进程 !macro KILLPROCESS FILENAME ${For} $R1 0 2 FindProcDLL::FindProc ${FILENAME} IntCmp $R0 1 _ISEXISTED _ISNOTEXISTED _ISEXISTED: KillProcDLL::KillProc ${FILENAME} IntCmp $R0 0 _IS0 _LESSTHAN0 _MORETHAN0 _IS0: Goto _END_OF_KILL_ZHEZI _LESSTHAN0: _MORETHAN0: ${Next} _ISNOTEXISTED: _END_OF_KILL_ZHEZI: !macroend