Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com Delphi XE2


HimomThep

Pergunta

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 para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...