Enviar uma string de uma DLL para um Memo do meu programa...

Delphi

13/04/2007

Olá, tenho uma DLL que fiz no delphi, e preciso enviar uma string para uma aplicação minha feita no Delphi, como faço isso?

Explicando melhor..

Tenho uma aplicação, feita em dephi, com um TMemo... e uma DLL feita em delphi, o que preciso, é enviar uma string da DLL pra dentro do Memo desta aplicação... :roll:

Desde já agradeço

[]s


Titanius

Titanius

Curtidas 0

Respostas

Marco Salles

Marco Salles

13/04/2007

Tenho uma aplicação, feita em dephi, com um TMemo... e uma DLL feita em delphi, o que preciso, é enviar uma string da DLL pra dentro do Memo desta aplicação...


Qual a sua dúvida titanius ???

Defina uma função com esta ´String´ e export esta função para a sua
aplicação

library pEnvio; uses [b:6c34221fb7] ShareMem,[/b:6c34221fb7] SysUtils, Classes; {$R *.res} function Mensagem:WideString; stdcall; begin result:=´Vai em Paz´; end; exports Mensagem; begin end.



[b:6c34221fb7]capturando [/b:6c34221fb7].....
var Form1: TForm1; implementation function Mensagem:WideString; stdcall; external (´pEnvio.dll´); {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin memo1.Lines.Add(mensagem); end;


P:S 1) [b:6c34221fb7]não esqueça da unit Sharem tb no dpr do seu aplicativo[/b:6c34221fb7]

P:S 2) o ´String´ esta entre aspas porque não se deve usar tipos nativos do delphi , a não ser que a dll seje usada somente para programa feitos em delphi...


GOSTEI 0
Titanius

Titanius

13/04/2007

Olá MArcos seria mais ou menos assim:

DLL:


function Processa: boolean;
begin
(..)
  EnviaProPrograma(´ddd´);
(..)



na DLL eu já inseria no Memo automaticamente, sem eu no programa ter que ir na DLL e buscar, entende? seria como se fosse um SQL Monitor..


Será que expliquei certo? :oops:

[]s


GOSTEI 0
Adriano Santos

Adriano Santos

13/04/2007

Será que expliquei certo? :oops:

Vc não quer mexer no programa principal titanius? É isso?
Cara essa parada é loka, acho que não dá. Fiz um teste bem básico aqui se liga:
[quote:4e82a7442f=´Código da DLL´]
library dll;

uses
  SysUtils,
  Classes,
  Dialogs,
  uPrincipal in ´uPrincipal.pas´ ;

{$R *.res}

function AtualizarSistema: Integer; export;
var
  I : Integer;
begin
  for I := 0 to 2 do
    ShowMessage(´Atualizando: ´ + FormatFloat(´000´, I));
    //Form1.Memo1.Lines.Add(´Atualizando: ´ + FormatFloat(´000´, I));
end;

exports
  AtualizarSistema index 1;
begin

end.


[/quote:4e82a7442f]

[quote:4e82a7442f=´Código do aplicativo´]
unit uPrincipal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

function AtualizarSistema: Integer;stdcall;external ´dll.dll´;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  AtualizarSistema;
end;

end.


[/quote:4e82a7442f]
Chapado, adicionei o form principal do meu projeto na dll e tentei atualizar, mas sem chance. Access violation. Não entendo muito de dlls, acho que não é possível. Sei lá.


GOSTEI 0
Marco Salles

Marco Salles

13/04/2007

nun sei nun.. é so uma pergunta para se ter uma opiniao

A pergunta :
quando é que a dll vai ficar sabendo que esta na hora de mandar esta mensagem para o aplicativo ??? Um Timer , um sellep , um processamento interno ???

Ai vem a opinião

Não da para adaptar isto em forma de mensagens do Windows , para se capturado pela janela aonde esta o Aplicativo que contém o Menu ????

Eu acho que talves esta seje a parte mais fácil .. O Problema é saber quando esta mensagme vai ser enviado


GOSTEI 0
Titanius

Titanius

13/04/2007

Olá pessoal... pois bem, primeiramente, muito obrigado pelas respostas e pela disposição... vamos lá..

O programa em questão a DLL, vai ficar em outro programa (Feito em Delphi), e tenho este outro programa o que chamo de Auditoria.. pois bem..

Prog1 -> sistema que envia a mensagem para a DLL
DLL -> Recebe a mensagem do Prog1 e envia para o Prog2
Prog2 -> M<eu programa de autitoria...

O Prog1, pode ser o proprio firebird por exemplo, usando a DLL como UDF, lá na SP ou Trigger, chamo a função EnviaString, e passo a string que deverá aparecer no Prog2...

Mas a questão é, como envia a string da DLL para o Prog2, sem que o Prog2 tenha que ficar buscando esta DLL... é a DLL que tem que buscar o Prog2, se achar, mandar o texto pro memo dele.. entende?


Bem, é mais ou menos isso.. :oops: é uma loucura só, como nunca mexi com DLL, não faço idéia nem de como começar.. :D

Vi pela net, algo sobre DDE, comunicação entre aplicações, será que é um caminho?


[]s


GOSTEI 0
POSTAR