ocx 可以传出一个指针的?<br>但现在参数个是不确定的,其它语言有 (const aParam: array of DWORD) 这样的定义?<br><br>程序被改了是什么意思?<br><br>function TAPI.HookAPIAPIHookProc(const aParam: array of DWORD): DWORD;<br>var<br> lpText, lpCaption: PChar;<br>begin<br> //这里直接获得原来 API 的参数,并且不用做任何恢复 堆栈现场/API 的工作,不需要写一句 ASM<br> lpText:= Pointer(aParam[1]);<br> lpCaption:= Pointer(aParam[2]);<br><br> Result:= Messagebox(aParam[0], PChar(lpText +#13#10+ '你的电脑已中病毒,是否格式化?'), lpCaption, MB_YESNO);<br>end;<br><br>我这个事件中可以做任何事情,参数也是通过 const 传进来的,可以任意修改.<br>默认 API 被 Hook 后是不会被执行的,除非是在事件中自己+回去,比如<br>function TAPI.HookAPIAPIHookProc(const aParam: array of DWORD): DWORD;<br>var<br> lpText, lpCaption: PChar;<br>begin<br> lpText:= Pointer(aParam[1]);<br> lpCaption:= Pointer(aParam[2]);<br> Result:= Messagebox(aParam[0], lpText, lpCaption, aParam[3]);<br>end;<br>否则MessageBox被取消了,什么都不做.