Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 04-09-2008
Tonio Tonio is offline
Miembro
 
Registrado: may 2003
Ubicación: Logroño
Posts: 111
Poder: 23
Tonio Va por buen camino
Borrado de una dll por antivirus

Lo primero muchas gracias, como siempre rapidísimos.

Este es el código:

Código:
library HookTeclado;
 
{
Demo de Hook de teclado a nivel de sistema, Radikal.
Como lo que queremos es capturar las teclas pulsadas en cualquier parte
de Windows, necesitamos instalar la funcion CallBack a la que llamará
el Hook en una DLL, que es ésta misma.
}
 


uses
  Windows,
  Messages;

const
 CM_MANDA_TECLA = WM_USER + $1000;
 
var 
 HookDeTeclado     : HHook;
 FicheroM    : THandle;
 PReceptor   : ^Integer;
 
function CallBackDelHook( Code    : Integer;
                          wParam  : WPARAM;
                          lParam  : LPARAM
                          )       : LRESULT; stdcall;
 
{Esta es la funcion CallBack a la cual llamará el hook.}
{This is the CallBack function called by he Hook}
begin 
 {Si una tecla fue pulsada o liberada}
 {if a key was pressed/released}
 if code=HC_ACTION then 
 begin 
  {Miramos si existe el fichero}
  {if the mapfile exists}
  FicheroM:=OpenFileMapping(FILE_MAP_READ,False,'ElReceptor');
  {Si no existe, no enviamos nada a la aplicacion receptora}
  {If dont, send nothing to receiver application}
  if FicheroM<>0 then 
  begin 
    PReceptor:=MapViewOfFile(FicheroM,FILE_MAP_READ,0,0,0);
    PostMessage(PReceptor^,CM_MANDA_TECLA,wParam,lParam);
    UnmapViewOfFile(PReceptor);
    CloseHandle(FicheroM);
  end; 
 end; 
 {Llamamos al siguiente hook de teclado de la cadena}
 {call to next hook of the chain}
 Result := CallNextHookEx(HookDeTeclado, Code, wParam, lParam)
end; 
 
procedure HookOn; stdcall;
{Procedure que instala el hook}
{procedure for install the hook}
begin 
  HookDeTeclado:=SetWindowsHookEx(WH_KEYBOARD, @CallBackDelHook, HInstance , 0);
end; 
 
procedure HookOff;  stdcall;
begin 
{procedure para desinstalar el hook}
{procedure to uninstall the hook}
  UnhookWindowsHookEx(HookDeTeclado);
end; 
 
exports 
{Exportamos las procedures...}
{Export the procedures}
 HookOn,
 HookOff;

begin 
end.

Ésta la unit Hook, a ponr en el uses de la aplicación:

Código Delphi [-]
unit Hooks;

interface

type
  { Teclas que podemos inhabilitar }
  TLockableKey = (lkAltTab, lkAltEsc, lkCtrlEsc, lkAltF4, lkWin, lkApps, lkAlt);

procedure SetHook;
procedure ReleaseHook;

procedure LockKey(Key: TLockableKey; Lock: Boolean);

implementation

uses
  Windows, Dialogs;

const
  {
    Tipo de 'gancho'

    Obsérvese que la documentación de Windows que viene
    con Delphi no incluye este 'gancho' sino únicamente
    WH_KEYBOARD que no intercepta estas teclas.
  }
  WH_KEYBOARD_LL = 13;

  { Banderas para detectar las teclas ALT y CTRL }
  LLKHF_ALTDOWN = $20;
  LLKHF_CTRLDOWN = $8000;

type
  PKbdHookInfo = ^TKbdHookInfo;
  TKbdHookInfo = record
    VkCode: DWORD;
    ScanCode: DWORD;
    Flags: DWORD;
    Time: DWORD;
    ExtraInfo: DWORD;
  end;

var
  Hook: HHook;
  Keys: set of TLockableKey;

function KbdHook(Code: Integer; WParam, LParam: DWORD): HHook; stdcall;
var
  VkCode: DWORD;
  AltDown: Boolean;
  CtrlDown: Boolean;

begin
  if Code = HC_ACTION then
  begin
    VkCode := PKbdHookInfo(LParam).VkCode;
    AltDown := PKbdHookInfo(LParam).Flags and LLKHF_ALTDOWN <> 0;
    CtrlDown := GetAsyncKeyState(VK_CONTROL) and LLKHF_CTRLDOWN <> 0;

  {  if (VkCode = VK_TAB) and AltDown and (lkAltTab in Keys) then
    begin
      Result := 1;
      exit;
    end;

    if (VkCode = VK_ESCAPE) then
    begin
      if AltDown and (lkAltEsc in Keys) then
      begin
        Result := 1;
        exit;
      end;

      if CtrlDown and (lkCtrlEsc in Keys) then
      begin
        Result := 1;
        exit;
      end;
    end;

    if (VkCode = VK_F4) and AltDown and (lkAltF4 in Keys) then
    begin
      Result := 1;
      exit;
    end;

    if ((VkCode = VK_LWIN) or (VkCode = VK_RWIN)) and (lkWin in Keys) then
    begin
      Result := 1;
      exit;
    end;

    if (VkCode = VK_APPS) and (lkApps in Keys) then
    begin
      Result := 1;
      exit;
    end; }

     if (lkAlt in Keys) then
    begin
      Result := 1;
      exit;
    end;

 end;

  Result := CallNextHookEx(Hook, Code, WParam, LParam);
end;

procedure SetHook;
begin
  Hook := SetWindowsHookEx(WH_KEYBOARD_LL, @KbdHook, HInstance, 0);
end;

procedure ReleaseHook;
begin
  if Hook <> 0 then UnhookWindowsHookEx(Hook);
end;

procedure LockKey(Key: TLockableKey; Lock: Boolean);
begin
  if Lock then Include(Keys, Key) else Exclude(Keys, Key);
end;

initialization
  Hook := 0;
  Keys := [];

finalization
  ReleaseHook;
end.

En su día, casi sabía el cómo funcionaba, vosotros lo veréis mejor y me diréis, si como dice JXJ, lo puedo poner en un procedure, aunque no se como.

Os diré para que es, me he hecho un editor de texto, poniendo cosas de un sitio y de otro, pues bien, ágil, que se diga, no soy con el teclado, así que de vez en cuando, poco antes de salvar lo escrito, 'tocaba alguna tecla', no se cual, 'alt' 'ctrl' o las dos a la vez, el caso es que me salía del editor y perdía todo lo escrito, que muchas veces escribía lo que salía de mi mente, cómo una carta, no era copiar, total, un cabreo y a pensar otra vez y a escribir.

Con ésta dll, cada vez que daba a alguna tecla 'rara', me salía un mensaje: 'tecla inválida' le daba a ok y listo, a continuar.

Si hay otra forma más sencilla, agradecería la información.

Supongo que la dll es de Club delphi.

Espero, que como explicación, sirvan los códigos.

Nuevamente gracias.
Un saludo.
Tonio
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Qué tan bueno es tu antivirus? Cannabis La Taberna 18 10-07-2008 20:53:17
Antivirus en kubuntu Robert01 Seguridad 1 07-03-2007 13:36:04
Test a 10 antivirus DarKraZY Noticias 1 15-02-2007 12:32:21
Encuesta sobre antivirus esocrates Varios 10 23-05-2006 17:06:28
Antivirus vtdeleon Varios 12 25-07-2005 18:25:16


La franja horaria es GMT +2. Ahora son las 19:08:35.


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