pNewFuncAddress=(DWORD*)&m_NewFunc[1];                    //********
*pNewFuncAddress=(DWORD)lpNewFunc-(DWORD)m_lpHookFunc-5;  //********这2句怎么翻啊??数据类型:
DWORD *pFuncAddress;
BYTE m_NewFunc[8];
FARPROC m_lpHookFunc;
FARPROC lpNewFunc

解决方案 »

  1.   

    type
        PDWord=^DWORD;var
        pNewFuncAddress:PWord;
        m_NewFunc:array[0..7] of Byte;
        m_lpHookFunc:FARPROC;
        lpNewFunc:FARPROC;begin
        pNewFuncAddress:=@m_NewFunc[1];
        pNewFuncAddress^:=DWORD(lpNewFunc)-DWORD(m_lpHookFunc)-5;
      

  2.   

    pNewFuncAddress:=@m_NewFunc[1];pNewFuncAddress=(DWORD*)&m_NewFunc[1];这句理解不来  在C 或C++里  这样做不行啊  &m_NewFunc[1] 是一个Byte类型的指针 pNewFuncAddress是一个DWORD类型的指针   难道DELPHI里不同类型的指针还能自己互相转换???
    不明白不明白
      

  3.   

    D中是一个地址传递,把m_NewFunc[1]的地址转换成pNewFuncAddress指针.也可以这样:
        pNewFuncAddress:=PDWORD(@m_NewFunc[1]);上面定义错了:
    var
        pNewFuncAddress:PDWord;
      

  4.   

    D中@返回的是一个地址,是一个integer。而指针其实也是一个integer,无论什么类型的指针,只是指向的内容不一样,但是本身都是一个地址,所以可以把两个地址互相赋值。