Chiamare una form contenuta in una DLL

di il
2 risposte

Chiamare una form contenuta in una DLL

Sto smanettando con le DLL in delphi , per vedere di usare sempre questo fantastico linguaggio
ora da un software esterno cerco di eseguire una finestra contenuta in questa DLL come da codice:

uses
System.SysUtils,
System.Classes,
Unit3 in 'Unit3.pas' {Form3};

{$R *.res}
function rundll(a, b: integer): integer; stdcall;
begin

Form3.Show();
Result := a + b+25;

end;

exports
rundll;
begin
end.



Solo che Richiamando la funzione rundll dal software esterno, non si "apre" nessuna finestra, se commento //=>"Form3.show" nella DLL dall'altra applicazione mi ritorna il risultato, quindi la comunicazione tra il software & la DLL avviene.

Come posso fare ad aprire la finestra contenuta dentro la DLL ?

Cordiali Saluti

2 Risposte

  • Re: Chiamare una form contenuta in una DLL

    1) leggi il regolamento: devi usare il tag CODE;
    2) l'esempio postato è incompleto;
    3) prima di mettere un form in una DLL prova con una semplice funzione;
    4) i form sono oggetti: prima devi crearli!
  • Re: Chiamare una form contenuta in una DLL

    Figaro ha scritto:


    Sto smanettando con le DLL in delphi , per vedere di usare sempre questo fantastico linguaggio
    ora da un software esterno cerco di eseguire una finestra contenuta in questa DLL come da codice:
    [...]
    Come posso fare ad aprire la finestra contenuta dentro la DLL ?
    Se fai uso di Form, a meno che tu non debba condividere la DLL con chi usa altri linguaggi, credo sia più conveniente l'uso di package al posto di una libreria DLL convenzionale.

    In caso contrario, devi condividere il gestore della memoria tramite la unit ShareMem e fare attenzione a usare i "runtime package", pena il fatto di riscontrare Access Violation e altri errori legati al fatto che i tipi di dati sono compilati in entrambi gli eseguibili, ma la loro struttura a livello binario può essere diversa a seconda di ciò che il compilatore include (o esclude).

    Ciao!
Devi accedere o registrarti per scrivere nel forum
2 risposte