Jump to content
Fórum Script Brasil
  • 0

Ajuda com Delphi XE2


HimomThep

Question

ola bom dia e o seguinte tenho um aplicativo feito no delphi XE to tentando coloca ele como 64bit pelo novo delphi XE2 so que no XE2 ele mostrar que o codigo ta com erro, não to consegindo arruma, tem muita diferença de um pro outro a ponto de um programa que funcione num no outro da erro

function InjectDll(PID:DWORD; sDll:string):Boolean; 
var 
hLib:    Pointer; 
hThread:  THandle; 
pMod:    Pointer; 
hOpen:  THandle; 
dWritten: Cardinal; 
ThreadID: Cardinal; 
LibName:  WideString; 
begin 
  LibName:=WideString(sDll); 
  Result := FALSE; 
  hOpen := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID); 
  if hOpen <> INVALID_HANDLE_VALUE then 
  begin 
        hLib := GetProcAddress(GetModuleHandle(PChar('kernel32.dll')), PChar('LoadLibraryW')); 
        pMod := VirtualAllocEx(hOpen, nil, (Length(LibName)*2) + 2, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE); 
        if WriteProcessMemory(hOpen, pMod, @LibName[1], (Length(LibName)*2), dWritten) then 
        Result := TRUE; 
        hThread := CreateRemoteThread(hOpen, nil, 0, hLib, pMod, 0, ThreadID); 
        WaitForSingleObject(hThread, INFINITE); 
        CloseHandle(hOpen); 
        CloseHandle(hThread); 
  end; 
end;

mostra erro nessa linha:

if WriteProcessMemory(hOpen, pMod, @LibName[1], (Length(LibName)*2), dWritten) then

e tambem mostra esse erro

[DCC Error] Unit1.pas(109): E2033 Types of actual and formal var parameters must be identical

agradeço se poderem mi ajuda

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0
[DCC Error]Unit1.pas(109): E2033 Types of actual and formal var parameters must be identical

DCC Error] Unit1.pas (109): E2033 Tipos de parâmetros var atual e formal deve ser idêntico

public static extern bool WriteProcessMemory(int hProcess, int lpBaseAddress, byte[] lpBuffer,

int nSize, out int lpNumberOfBytesWritten);

Converting 32-bit Delphi Applications to 64-bit Windows

http://docwiki.embarcadero.com/RADStudio/e..._64-bit_Windows

abraço

Link to comment
Share on other sites

  • 0

olha não to sabendo onde vai a parte do (public static extern bool), e esse eu coloquei no lugar do outro

(WriteProcessMemory(int hProcess, int lpBaseAddress, byte[] lpBuffer,

int nSize, out int lpNumberOfBytesWritten);) poderia por gentileza mostrar onde vai esse de cima? obrigado

Link to comment
Share on other sites

  • 0

o erro mostra que a passagem de parametros não está correta

o que estou mostrando é a definição da função

WriteProcessMemory(int hProcess, int lpBaseAddress, byte[] lpBuffer, int nSize, out int lpNumberOfBytesWritten);

como voce está usando

if WriteProcessMemory(hOpen, pMod, @LibName[1], (Length(LibName)*2), dWritten) then

veja que os parametros pedem valores inteiros ... isso significa que um dos parametros passados não tem um valor inteiro ... por isso a mensagem :

E2033 Tipos de parâmetros var atual e formal deve ser idêntico

entretanto se esse comando funcionava no Delphi XE e não funciona no Delphi XE2, veja o link :

Converting 32-bit Delphi Applications to 64-bit Windows

http://docwiki.embarcadero.com/RADStudio/e..._64-bit_Windows

OBS: Lá é mostrado como resolver o problema ( faça a tradução da pagina pelo google )

abraço

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...