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 23-01-2006
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
Además de lo comentado por roman, si te fijas en el código que puse para desactivar el menú de inicio verás que, además de "ocultar" el botón, también se cambia el "padre" de éste asignándole uno "nulo", por lo que todas las pulsaciones de teclas que muestran el menú (Ctrl-Esc y la tecla de Windows) quedan deshabilitadas. (Haz la prueba y verás que el menú no aparece aunque se pulsen dichas teclas, lo único que ocurre es que el formulario activo de nuestra aplicación pierde el foco, al menos a mi me funciona).

Saludos!
Responder Con Cita
  #2  
Antiguo 23-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Me base en lo que decía Jonnathan acerca de que de cualquier forma aparecía el menú, pero tienes razón, se deshabilita por completo.

// Saludos
Responder Con Cita
  #3  
Antiguo 23-01-2006
Avatar de Jonnathan
Jonnathan Jonnathan is offline
Miembro
 
Registrado: may 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 64
Poder: 20
Jonnathan Va por buen camino
Disculpa jmariano, tenias toda la razón, la línea que cambia el "padre" al botón de Windows era lo que faltaba, ahora si oculta y desactiva totalmente el menu de Windows. Ahora solo me falta capturar cuando se presiona la tecla de Windows y mostrar mi propio menú, voy a echar un vistazo al ejemplo de roman que aparece en su blog para probar. Gracias por su ayuda maestros de delphi .
__________________
"En el siglo de la estupidez todas las casas comienzan por la fachada" (Fuckowsky)
Planeta Insólito, La Pluma Inspirada
Responder Con Cita
  #4  
Antiguo 23-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Jonnathan
voy a echar un vistazo al ejemplo de roman que aparece en su blog para probar
Je, je, nada más aclarar que, contrario a las modas y tendencias actuales, lo mío no es un blog.

// Saludos
Responder Con Cita
  #5  
Antiguo 23-01-2006
Avatar de Jonnathan
Jonnathan Jonnathan is offline
Miembro
 
Registrado: may 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 64
Poder: 20
Jonnathan Va por buen camino
Detectar cuando la tecla de Windows es liberada

Disculpas a los afectados por mi comentario del blog . El código del hook que está en tu página esta excelente roman, solo hace falta levantar el Hook al inicio de la aplicación y quitarlo al cerrar. Lo use combinado con el método de jmariano para desactivar el botón y ya puedo mostrar mi menú personalizado. Solo una cosa más, puse una linea para mandar a mostrar mi menú al comprobar que la tecla presionada era la tecla de Windows y que desaparezca el menú si la presiono de nuevo, pero cuando dejo presionada la tecla el menu parpadea apareciendo y desapareciendo. Me puse a buscar código por internet y encontre que dentro de la estructura TKbdHookInfo hay una variable "Flags" la cual retorna valores adicionales sobre el evento en cuestión, asi que declare algunas banderas adicionales que vi por ahi:

Código Delphi [-]
  //Flags adicionales
  LLKHF_EXTENDED = $1;    //Funcion extendida?
  LLKHF_UP = $80;          //Indica si la tecla es liberada

Asi que el código para que salga el menú solo cuando liberas la tecla de Windows dentro del hook lo deje asi:

Código Delphi [-]
    var 
       VkCode: DWORD;
       Flags: DWORD;
    ...
    begin
    VkCode := PKbdHookInfo(LParam).VkCode;
    Flags:= PKbdHookInfo(LParam).Flags;
    ...
    if ((VkCode = VK_LWIN) or (VkCode = VK_RWIN)) and (lkWin in Keys) then
    begin
      Result := 1;
      if Flags = LLKHF_UP + LLKHF_EXTENDED then
         OnWindowsKey(); //Funcion que hace aparecer mi menu
      exit;
    end;
    ...
    end;

Para el caso de la combinación Ctrl+Esc creo que esta un poco más dificil ese detalle, pero bueno, si la gente de Microsoft no le preocupo hacer esa validación, pues yo menos (el que quiera saber a que me refiero que mantenga presionada la combinación Ctrl+Esc un momento) . Muchas gracias chicos por la ayuda que me han dado, un saludo desde Venezuela.
__________________
"En el siglo de la estupidez todas las casas comienzan por la fachada" (Fuckowsky)
Planeta Insólito, La Pluma Inspirada
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
Agregar Item a Menu Windows m@kio Varios 2 05-12-2005 22:30:12
Desactivar menu contextual de Windows en WebBrowser PTW Varios 1 11-05-2005 13:21:34
Inactivar el menú inicio diegofhernando Varios 21 16-01-2005 16:12:53
Arrancar un programa, desde menú inicio, cuando yo quiera. Tonio Varios 3 17-09-2003 04:31:19
Microsoft Taglines SnaKe Humor 0 03-06-2003 15:42:27


La franja horaria es GMT +2. Ahora son las 08:30:51.


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