跪求各位大虾帮助解决以下问题:首先看下程序吧,程序如下:unit TcpAPIHook;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls, WinSock, Registry;type
//要HOOK的API函数定义
TSockProc = function (s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;PJmpCode = ^TJmpCode;
TJmpCode = packed record
JmpCode: BYTE;
Address: TSockProc;
MovEAX: Array [0..2] of BYTE;end;//--------------------函数声明---------------------------
procedure HookAPITcp;
procedure UnHookAPITcp;var
OldSend, OldRecv: TSockProc; //原来的API地址
JmpCode: TJmpCode;
OldProc: array [0..1] of TJmpCode;
AddSendTcp, AddRecvTcp: pointer; //API地址
TmpJmp: TJmpCode;
ProcessHandle: THandle;问题:我执行WriteProcessMemory(ProcessHandle, AddSendTcp, @OldProc[0], 8, dwSize);
这样就将内存存入到数据了 OldProc中,此时我想将TJmpCode.Address 存入一个用Variant来定义的变量中,但此时报错:
Not enough actual parameters 没有足够的实际参数   请问这样的问题怎么解决? 

解决方案 »

  1.   

    你现存到一个Integer变量中
    再赋值给variant类型变量
      

  2.   


    不行啊,定义一个integer变量后然后将其存入,还是弹出Not enough actual parameters 没有足够的实际参数  这样的错误
    var
      vKeyOfAddress integer;
    begin
      vKeyOfAddress := OldProc[0].Address;
      ............
    end;这样程序还是出错,还请akirya 及各位帮助解决!
      

  3.   

    vKeyOfAddress := Integer(OldProc[0].Address); 
      

  4.   

    vKeyOfAddress := Integer(@OldProc[0].Address);  
    OldProc[0].Address是个函数变量,不能直接保存,只能保存它的地址
      

  5.   

    那就vKeyOfAddress := Integer(Pointer(OldProc[0].Address));   
      

  6.   

    vKeyOfAddress :=Integer(@OldProc[0].Address);