Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-11-2012
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Bloquear mensaje DobleClic del ratón

Hola, amigos.
He estado buscando en los foros la forma de hacer un hook para bloquear el mensaje DobleClick del ratón. Lo más parecido que he encontrado es un hook para bloquear el botón derecho, posteado en 2006 por el maestro Domingo Seoane, basándose en código del incomparable moderador Román.

Pero no me funciona, he cambiado los identificadores del mensaje en el código original, pero no lo consigo bloquear.

Código original

Código Delphi [-]
if (WParam = WM_RBUTTONDOWN) or (WParam = WM_RBUTTONUP)


Código modificado
Código Delphi [-]
if (WParam = WM_LBUTTONDBLCLK) or (WParam = WM_RBUTTONDBLCLK)
Codigo completo modificado
Código Delphi [-]
unit Hooks;


interface
procedure SetHook;
procedure ReleaseHook;
implementation
uses Windows, Messages;
const
  WH_MOUSE_LL = 14;
var
  Hook: HHook;
function MouseProc(Code: Integer; WParam, LParam: DWORD): HHook; stdcall;
begin
  if Code = HC_ACTION then
  begin
    if (WParam = WM_LBUTTONDBLCLK) or (WParam = WM_RBUTTONDBLCLK) then
    begin
      Result:= 1;
      Exit;
    end;
  end;
  Result := CallNextHookEx(Hook, Code, WParam, LParam);
end;
procedure SetHook;
begin
  Hook := SetWindowsHookEx(WH_MOUSE_LL, @MouseProc, HInstance, 0);
end;
procedure ReleaseHook;
begin
  if Hook <> 0 then UnhookWindowsHookEx(Hook);
end;
initialization
  Hook := 0;
finalization
  ReleaseHook;
end.

Pongo el código completo por si alguien me puede ayudar y por si puede ser útil par alguien más.

Gracias a a todos, por leerme y por vuestra paciencia.

No sé qué me pasa con el editor, no es el primer post que escribo.

He vuelto a escribir el post completo, espero que se pueda leer.

Lo siento. No utilizo la vista previa, porque una vez que la usé también se descolocó el editor.
Debe ser culpa mía.
Responder Con Cita
  #2  
Antiguo 21-11-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
No existen los mensajes WM_LBUTTONDBLCLK y WM_RBUTTONDBLCLK para un Hook de ratón, por eso no te funciona. Deberás medir el tiempo entre dos clicks sucesivos para saber si se trata de un doble click quedaría de esta forma:

Código Delphi [-]
unit Hooks;


interface
procedure SetHook;
procedure ReleaseHook;

function clock: integer; cdecl; external 'msvcrt.dll';

implementation
uses Windows, Messages;
const
  WH_MOUSE_LL = 14;
var
  Hook: HHook;


function DBLClick_Detect: boolean;
const
{$J+}
  start: integer = 0;
var
  dif: integer;
begin
  Result:= false;
  if start = 0 then start:= clock();
  dif:= clock() - start;
  if (dif < GetDoubleClickTime) and (dif > 3) then Result:= true;
  start:= clock();
{$J-}
end;

function MouseProc(Code: Integer; WParam, LParam: DWORD): HHook; stdcall;
begin
  if Code = HC_ACTION then
  begin
    if (WParam = WM_LBUTTONDOWN) or (WParam = WM_RBUTTONDOWN) then
    begin
      if DBLClick_Detect then
      begin
        Result:= 1;
        Exit;
      end;
    end;
  end;
  Result := CallNextHookEx(Hook, Code, WParam, LParam);
end;

procedure SetHook;
begin
  Hook := SetWindowsHookEx(WH_MOUSE_LL, @MouseProc, HInstance, 0);
end;
procedure ReleaseHook;
begin
  if Hook <> 0 then UnhookWindowsHookEx(Hook);
end;

initialization
  Hook := 0;

finalization
  ReleaseHook;

end.


Saludos.

Última edición por escafandra fecha: 21-11-2012 a las 02:44:26.
Responder Con Cita
  #3  
Antiguo 21-11-2012
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Mil millones de gracias, Escafandra. Funcionó perfectamente.
Asombrado me teneis de tanto como sabeis.
Un saludo.
Responder Con Cita
Respuesta



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
Ratón arriba, ratón abajo, ratón arriba... TiammatMX OOP 6 13-10-2011 17:01:18
Prueba del ratón ArdiIIa Humor 9 05-06-2008 20:13:10
como bloquear el teclado y raton android_beat OOP 1 11-09-2003 18:18:58
Autocompletar con el ratón User_Baja_2 Varios 0 03-09-2003 11:19:15


La franja horaria es GMT +2. Ahora son las 23:45:21.


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