Enviar uma string de uma DLL para um Memo do meu programa...
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
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
Curtidas 0
Respostas
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
13/04/2007
Olá MArcos seria mais ou menos assim:
DLL:
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
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
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
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
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
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
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