Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: Dec 2004
Ubicación: Alcobendas, Madrid, España
Posts: 12.409
Poder: 26
dec Va camino a la famadec Va camino a la fama
Sobre SetWindowsHookEx

He visto que mucha gente no sabe como utilizar SetWindowsHookEx, como se debe.Lo primero, saber que el mejor modo (de no ser el único) es usar DLL's.

El siguiente ejemplo, es un ejemplo modelo, que se podrá usar con todos los Hook's.

Código Delphi [-]
library MSGFilter;

uses
  {Las que necesites :-)}

{$R *.RES}

var Hook: HHook;

function G(nCode:Integer;wParam:Word;lParam:LongInt): LResult stdcall;export;// el truco esta en "stdcall"
var
  Mensage: ^MSG; //Estructura con el mensage, y algunos otros parámetros
begin
  {
    Apartir de aqí, puedes poner lo que quieras,
    pero serciorate de que la función devuelve algo
  }
  //Esto, es para que todos los procedimientos ligados a este evento puedan continuar
  G:= CallNextHookEx(Hook,nCode,WParam,LParam);

  // Si no deseas que se prosigan los procedimientos: G:=0;
  If nCode = MSGF_MENU Then //Solo un ejemplo, hay que recordar que varian según el hook
  begin
    Mensage:= Ptr(LParam); //Asignamos el puntero que apunta a la estructura MSG a Mensage
    If Mensage.message = WM_MENUSELECT Then
      {el codigo que quieras}
  end;
end;

procedure Instalar;
begin
  //Creamos el Hook, en este caso MSGFilter
  Hook := SetWindowsHookEX(WH_MSGFILTER,@G,hInstance,0);
  //Que filtra los mensages que reciven las ventanas.
end;

procedure Desinstalar;
begin
  UnHookWindowsHookEx(Hook); // Desinstalamos el Hook
end;

exports
  Si, No;

begin
end.

Solo tienes que llamar a Instalar, y el procedimiento G, se ejecutará cada vez que haya un mensage a una ventana (para más información sobre los diferentes Hook's busca en MSDN o en la ayuda de Delphi SetWindowsHookEx).

Un saludo Strom!!!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 04:02:43.


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