Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ejecutar form de un dll (https://www.clubdelphi.com/foros/showthread.php?t=75770)

NovatoEnObjetos 18-09-2011 00:50:30

Ejecutar form de un dll
 
Hola amigos del foro tengo una duda que seguramente para ustedes sera algo muy simple...
Tengo un dll pero no sé como ejecutarlo y mostrarlo en pantalla.

Código Delphi [-]
library Proyecto;

{ 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,
  Main,
  Forms,
  pantalla in 'pantalla.pas' {miform};

{$R *.res}

function miform(xMain : TFMain) : TForm ;
begin
 result := Tmiform.Create(XMain) ;
end ;


exports miform;
begin
end.


agrego el codigo que tengo para ver si me pueden ayudar(eso no lo dudo).
Y de antemano agradesco

cloayza 18-09-2011 04:12:50

Intenta este codigo...

Código Delphi [-]
function MiForm(AppHandle:THandle):Boolean;
begin
       application.Handle:=AppHandle;
       With Tmiform.Create(Application) do
       begin
              ShowModal;
              Free;
       end;
      Result:=True;
end ;
exports Miform;
begin
end.

Para llamar a la Funcion MiForm
Código Delphi [-]
MiForm(Application.Handle);

Saludos

NovatoEnObjetos 18-09-2011 04:28:59

No entiendo
 
Digamos que agrego un boton y lo unico que sé es el codigo fuente del dll y su directorio, como puedo mandar a llamar a ese form desde mi aplicacion?,
nose si deba de haber algun loadlibrary('nombredeldll') y de ahi algo mas, he intentado tu codigo pero nomas no me sale, y es que de hecho la parte donde dice pantalla in 'pantalla.pas' {miform};
es de la declaracion del form que quiero visualizar, este
por dentro se llama miform.
Digamos que tengo el dll, pero no tengo el ejecutable que
lo mande a llamar :confused:

Casimiro Notevi 18-09-2011 10:07:50

Cita:

Empezado por NovatoEnObjetos
lo unico que sé es el codigo fuente del dll

No se entiende bien lo que tienes ni lo que quieres, explica detalladamente, por favor.

NovatoEnObjetos 18-09-2011 16:34:47

Solo tengo el código fuente del dll
 
Osea lo que quiero decir es que solo tengo el código fuente del dll y el dll compilado. El código fuente es el que puse al principio del tema. Sin cambiarle nada al código fuente del dll, lo que quiero saber es como lo mando a ejecutar desde una aplicacion nueva, por decirlo asi, el codigo para la aplicación nueva que ejecute el dll es la que no tengo y agradecería me ayudaran a encontrarla.
Obviamente tengo el dll compilado, pero la forma o la manera de mandarlo a ejecutar no la sé.
Espero haberme explicado :confused:

NovatoEnObjetos 28-09-2011 06:25:20

No puedo cambiar el codigo del dell
 
Nose si me explique mejor, pero es que tengo alrededor de 100 proyectos de dll´s con la misma estructura, y no puedo o quisas mas bien no quiero cambiar el codigo de los dll´s, para poder ejecutarlos.
Lo que quiero es ejecutar los dll sin cambiarle nada a ellos, mas bien lo que no tengo es el codigo fuente del ejecutable que los mande a llamar.

roman 28-09-2011 17:25:58

En la unidad de tu aplicación donde quieras usar tu función, pon esta declaración:

Código Delphi [-]
function miform(xMain : TFMain): TForm; external 'proyecto.dll';

Con eso ya puedes usar la función miform que está dentro de la biblioteca proyecto.dll. Ten en cuenta que esta biblioteca debe estar disponible al momento de arrancar el programa, lo cual logras poniéndola en algún directorio del PATH de Windows o en el mismo directorio que el ejecutable.

// Saludos


La franja horaria es GMT +2. Ahora son las 18:07:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi