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 28-09-2004
Xema Xema is offline
Registrado
 
Registrado: sep 2004
Posts: 7
Poder: 0
Xema Va por buen camino
Talking Desactivar el botón derecho del ratón

Hola, pues eso, como se podria desactivar el boton derecho del raton? Ejecuto una apli de flash desde una apli de delphi, y en delphi no hay problema, pero claro, en flash si, y al darle al botón derecho aparece el menú y la gente puede desconfigurar cosas. Creo haber visto en algun sitio alguna API relacionada con esto, pero no lo encuentro.
Si alguien me puede echar una mano, se lo agradeceria mucho.
Gracias
Responder Con Cita
  #2  
Antiguo 28-09-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Mmmm, supongo que con un destornillador y haciendo palanca puedes eliminar el botón derecho. Si esto no funciona, puedes probar a poner un topecito pegado con super-glup o cualquiero otro pegamento para que no llegue a bajar.
__________________
:)
Responder Con Cita
  #3  
Antiguo 28-09-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
mmmm... yo conocía la API BlockInput pero no creo que te sirva. De todas formas la declaración es algo como:
Código Delphi [-]
function BlockInput(prmBlock : Boolean): Boolean; stdcall; external user32;
Por cierto sería bueno que alguien que sepa de Delphi compruebe la sintáxis porque lo estoy haciendo al "vuelo" desde una declaración de VB.

Hay otras APIs relacionadas con el mouse o el teclado, pero que yo conozca ninguna que haga exactamente lo que vos querés.
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #4  
Antiguo 12-10-2008
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
Tambien quiero desactivar el boton derecho del raton en dephi.
Responder Con Cita
  #5  
Antiguo 12-10-2008
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
Hook WH_MOUSE_LL
Saludos.
Responder Con Cita
  #6  
Antiguo 13-10-2008
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
¿seria mucho pedir un ejemplo?
Lo busco en google y sólo encuentro solución para visual basic
Responder Con Cita
  #7  
Antiguo 13-10-2008
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
Aquí tienes un ejemplo de un Hook al Mouse. Sustituye la función MouseHookCallBack por esta:

Código:
LRESULT CALLBACK
MouseHookCallBack(int Code, WPARAM wParam, LPARAM lParam)
{
   if(Code>=0){
     if(wParam == WM_RBUTTONDOWN){
       // Desactiva el botón derecho del mouse
       return -1;
     }
   }
   return CallNextHookEx(WHookMouse, Code, wParam, lParam);
}
Saludos.

Última edición por escafandra fecha: 14-10-2008 a las 07:06:29.
Responder Con Cita
  #8  
Antiguo 15-10-2008
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
El codigo esta para C me parece.
Lo estoy pasando a delphi pero no me aclaro mucho.
Lo seguiré intentando.
Responder Con Cita
  #9  
Antiguo 15-10-2008
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
tengo que hacer una DLL para desactivar el boton derecho del raton??
He visto http://www.eksperten.dk/spm/840406 pero no tengo ni idea de como crear la DLL en delphi y ademas ni tan siquiera estoy seguro que se pueda hacer de una forma mas sencilla.

Última edición por petete2008 fecha: 15-10-2008 a las 21:06:48.
Responder Con Cita
  #10  
Antiguo 15-10-2008
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
Por si le interesa a alguno en esta pagina
http://www.ajpdsoft.com/modules.php?...rticle&sid=261
explica con detalle el tema de crear una dll
Voy a crear la dll y a ver si consigo anular el boton derecho del mouse.
Gracias
Responder Con Cita
  #11  
Antiguo 15-10-2008
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
He seguido paso a paso lo que indica la web siguiente para detectar el boton derecho del mouse.
http://www.eksperten.dk/spm/840406

Lo he ejecutado en delphi y cuando pulso el boton derecho hace un beep tal y como indica el codigo de programa

if Msg = WM_RBUTTONDOWN then
MessageBeep(1);

Ahora bien, lo que deseo no es un beep sino que no muestre el desplegable de las opciones del menú cuando se presione boton derecho del mouse.

He intentado poner
result:=-1;

e incluso
result:=-1;
exit;

y tambien comentando la linea
Result := CallNextHookEx(HookHandle, Code, Msg, MouseHook);

y no me resulta. Se me queda el PC colgado y el reloj del mouse dando vueltas indefinidamente.

El trozo de código que debería modificar seria :

begin
{ If the value of Code is less than 0, we are not allowed to do anything
except pass it on to the next hook procedure immediately. }
if Code >= 0 then begin
{ This example does nothing except beep when the right mouse button is pressed. }
if Msg = WM_RBUTTONDOWN then
MessageBeep(1);

{ If you handled the situation, and don't want Windows to process the
message, do *NOT* execute the next line. Be very sure this is what
want, though. If you don't pass on stuff like WM_MOUSEMOVE, you
will NOT like the results you get. }
Result := CallNextHookEx(HookHandle, Code, Msg, MouseHook);
end else
Result := CallNextHookEx(HookHandle, Code, Msg, MouseHook);
end;

Alguien sabe que debo hacer
Graciass
Responder Con Cita
  #12  
Antiguo 15-10-2008
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
he intentado hacerlo simulando un click de raton para que desapareciera el menú que sale cuando pulsamos boton iderecho pero no funciona ya que me hace constantes clicks automaticos y se me termina bloqueando.

if Code >= 0 then begin
{ This example does nothing except beep when the right mouse button is pressed. }
if Msg = WM_RBUTTONDOWN then
MessageBeep(1);
// simular pulsar boton izquierdo mouse
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);


{ If you handled the situation, and don't want Windows to process the
message, do *NOT* execute the next line. Be very sure this is what
want, though. If you don't pass on stuff like WM_MOUSEMOVE, you
will NOT like the results you get. }
Result := CallNextHookEx(HookHandle, Code, Msg, MouseHook);
end else
Result := CallNextHookEx(HookHandle, Code, Msg, MouseHook);
Responder Con Cita
  #13  
Antiguo 15-10-2008
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
Lo solucione sacando un messagebox. No es como yo queria....pero buenoooo.

if Code >= 0 then begin
{ This example does nothing except beep when the right mouse button is pressed. }
if Msg = WM_RBUTTONDOWN then
// MessageBeep(1);
ShowMessage('Boton derecho del ratón deshabilitado');
// simular pulsar boton izquierdo mouse
//mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
//mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

{ If you handled the situation, and don't want Windows to process the
message, do *NOT* execute the next line. Be very sure this is what
want, though. If you don't pass on stuff like WM_MOUSEMOVE, you
will NOT like the results you get. }
Result := CallNextHookEx(HookHandle, Code, Msg, MouseHook);
end else
Result := CallNextHookEx(HookHandle, Code, Msg, MouseHook);
Responder Con Cita
  #14  
Antiguo 16-10-2008
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
Cita:
Empezado por petete2008 Ver Mensaje
tengo que hacer una DLL para desactivar el boton derecho del raton??
No es necesario para el Hook tipo WH_MOUSE_LL.

El código lo puse en C. La filosofía del Hook es que retorne inmediatamente devolviendo -1 y por tanto sin dar paso al CallNextHookEx(HookHandle, Code, Msg, MouseHook); De esta forma el menú contextual o cualquier otra acción relacionada con ese botón, no aparecerá nunca. No hace falta colocar messagebox alguno.

Saludos.
Responder Con Cita
  #15  
Antiguo 16-10-2008
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
Pues colocandolo tal cual cuando das boton derecho hacía el pitido beep y a continuación mostraba el menú contextual sobre el raton que aparece sempre cuando se pulsa boton derecho.
No obstante con el messagebox me sirve.
Gracias
Responder Con Cita
  #16  
Antiguo 16-10-2008
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
Código Delphi [-]
if Code >= 0 then begin
   if Msg = WM_RBUTTONDOWN then
     Result := -1;
   end else
     Result := CallNextHookEx(HookHandle, Code, Msg, MouseHook);
end;


Saludos.
Responder Con Cita
  #17  
Antiguo 16-10-2008
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
Asi mismo lo puse y el raton se me queda dándo vueltas el icono.
No responde al boton derecho ni izquierdo del raton y terminada quedandose bloqueando el pc.
Responder Con Cita
  #18  
Antiguo 20-10-2008
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
Por lo que he leído de tus otros hilos y en este, donde parece que buscas que no aparezca el menú contextual del botón derecho del ratón (donde suelen aparecer las célebres copiar y pegar...), lo que pretendes con todas tus preguntas es que nadie pueda copiar o pegar nada en o desde tu aplicación. ¿No es así?.

Bueno, pues parece que lo que te propuso cHackAll es la opción más práctica.
Quizás debas crear un menu PopupMenu sin items y asignarlo a todos los formularios y controles susceptibles de ser copiados al portapapeles, para que estéticamente no aparezca nada al pulsar el botón derecho del ratón.

Y para seguir con la propuesta de cHackAll, revisar el portapapeles es muy sencillo si conficuras tu aplicación como un visor del mismo portapapeles, y, como te indicó cHackAll, borras lo que no te interese que esté. No borres todo, porque los usuarios pueden tener "cosas" en el clipboard que no tengan que ver con tu aplicación y se decepcionarán al comprobar que suceden cosas raras..., al tiempo que interfieres en su trabajo...

Revisa esto: SetClipboardViewer.

Saludos.
Responder Con Cita
  #19  
Antiguo 20-10-2008
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
Si, asi es, mi idea es desactivar por completo el portapapeles y que ninguna aplicación permita hacer uso del portapapeles, es decir, que no exista el copiar y pegar ni el impr paint.
Gracias por los comentarios me van a ser de gran ayuda.
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


La franja horaria es GMT +2. Ahora son las 15:46:46.


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