Ver Mensaje Individual
  #10  
Antiguo 22-03-2018
Dark_Code Dark_Code is offline
Miembro
NULL
 
Registrado: ene 2018
Posts: 11
Reputación: 0
Dark_Code Va por buen camino
Cita:
Empezado por escafandra Ver Mensaje
Una primera aproximación consistiría en usar archivos de memoria compartida y un hilo en tu dll que los lea continuamente. Más sofisticado sería los mensajes entre threads con PostThreadMessage o la inyección directa cosa que no está en este momento a tu alcance.

Vamos a ver un ejemplo sencillo compartiendo memoria....

Saludos.
Muchas Gracias por la atención prestada, y por el compartimiento de su conocimiento. pero lo que quería hacer es a base de INI una manera mas practica, investigando mucho logre hacerlo.

Primero creamos un form donde guardaremos el contenido de un Edit en un fichero INI:

- Creamos el Fichero INI.

Código Delphi [-]
uses
IniFiles;
.........

procedure TForm1.FormCreate(Sender: TObject);
var
Key:Tinifile;
begin
Key:= TiniFile.Create ('c:\Prueba.ini');
Key.EraseSection('WT Prueba');
end;

- Guardamos el contenido de un Edit en un INI a traves de un boton.
Código Delphi [-]
procedure TForm1.btn1Click(Sender: TObject);
begin
Key.WriteString ('WT Prueba','personajes',edt1.text);
end;
end.

Para leer el INI del Edit que hemos guardado, hacemos lo siguiente en otro form.

-Utilizaremos este Unit.


Código Delphi [-]
unit Unit2;

interface
function leEntINI (clave, cadena : string; defecto : integer) : integer;

implementation
uses SysUtils,Classes,INIFiles;


//Lee un entero de un INI
function leEntINI (clave, cadena : string; defecto : integer) : integer;
begin
  with TiniFile.Create ('C:\Prueba.ini') do
  try
    result := readInteger (clave, cadena, defecto);
  finally
    free;
  end;
end;
end.

Ahora colocaremos un Edit para que nos muestre el valor obtenido del INI y un botón.

Código Delphi [-]
uses
INIFiles,Unit2;
.......
.........
procedure TForm1.btn1Click(Sender: TObject);
var
ValorINI:Integer;
begin
ValorINI:=  leEntINI ('WT Prueba','personajes',0);
edt1.Text:= IntToStr(ValorINI);
end;
end.

Todo va perfecto, En el primer exe se guarda muy bien el valor de Edit en un fichero INI, y en el segundo exe se muestra el valor guardado.

Ahora lo que quiero hacer es editar con el valor guardado del Edit en una DLL, lo estoy haciendo de esta forma, pero esta mal en la forma de editar
Código Delphi [-]
PDWORD($A04569)^:= ValorINI;
, espero de su ayuda.

Código Delphi [-]
library Project1;


uses
  SysUtils,
  Windows,
  Classes,
  IniFiles,
  Unit2 in 'XD/Unit2.pas';

{$R *.res}
var
AtProcessobymr:THandle;
hId:Cardinal;
ValorINI:Integer;
procedure TrainerFarius;
begin
  ValorINI:=  leEntINI('WT Prueba','personajes',0);
  PDWORD($A04569)^:= ValorINI;
end;
begin
AtProcessobymr:=OpenProcess(PROCESS_ALL_ACCESS,false,GetCurrentProcessID);
CreateRemoteThread(AtProcessobymr,nil,0,@TrainerFarius,@TrainerFarius,0,hID);
end.
Responder Con Cita