Ver Mensaje Individual
  #1  
Antiguo 12-03-2012
Demarck Demarck is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 10
Reputación: 0
Demarck Va por buen camino
Duda con DLL al Ejecutar otro Formulario

Bueno hace un rato hice una consulta la cual me respondieron.

Bueno ahora estoy creando una DLL.

Bueno tengo 2 Formualerios (Form1, Form2), en el form1 hay un Edit y un Boton, bueno la cosa es que al darle Click al Botón y si la contraseña es correcta me debería abrir el Form2.

Bueno a la hora de compilarlo, lo hago normal, pero si quiero ver como quedo en Diseño y todo abro un Block de Notas (Notepad.exe) abro un injector y ejecuto la opciones de Notepad.exe y busco la DLL creada y la injecto con el Block de Notas, pongo la contraseña normal y en vez de que me abra el Form2 me sale un error que dice: "Access Violation at Addres 00CCCDEA in module 'Prject1.dll'. Read of addres 000002F4."

Bueno como son dos unidades porque tengo Form1 y Form2 y solo un Projecto.

En el Projecto pongo este Código:
Código Delphi [-]
library Project1;

{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }

uses
  SysUtils,
  Classes,
  Windows,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
var
AtacarProcesso:THandle;
hId:Cardinal;
  
procedure AbrirTrainer;
begin
Form1:=TForm1.Create(nil);
Form1.ShowModal;
end;

begin
AtacarProcesso:=OpenProcess(PROCESS_ALL_ACCESS,false,GetCurrentProcessID);
CreateRemoteThread(AtacarProcesso,nil,0,@AbrirTrainer,@AbrirTrainer,0,hID);
end.
Responder Con Cita