elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Combinación de teclas en keybd_event
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Combinación de teclas en keybd_event  (Leído 9,554 veces)
gulabyte

Desconectado Desconectado

Mensajes: 97



Ver Perfil
Combinación de teclas en keybd_event
« en: 3 Febrero 2009, 02:52 am »


kepatxa!!

Resulta que buscando y buscando sobre cómo girar la pantalla con vb he dado con la función keybd_event y he querido aportar lo que he aprendido de él... ;D ;D

La cuestión es que se puede qirar la pantalla usando la combinación de teclas Ctrl+Alt+Flechitas en WinXP y es por eso que necesitaba de keybd_event... pero aparte de brindarte todas las funciones que Windows implementa mediante las combinaciones de teclas (administrador de tareas, dialogo buscar, un gran etc...) la función keybd_event te permite por ejemplo mantener alguna tecla permanentemente...

Yo dejo el código para que se dé rienda suelta al tema... :-X

La gran función keybd_event:
Código:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Algunas constantes..
Código:
Const KEYEVENTF_KEYUP = &H2 'Para despulsar o soltar la tecla
Const KEYEVENTF_EXTENDEDKEY = &H1 'No sé lo que es
Const VK_DELETE = &H2E 'Del
Const VK_MENU = &H12 'Alt
Const VK_CONTROL = &H11
Const VK_DOWN = &H28
Const VK_RIGHT = &H27
Const VK_LEFT = &H25
Const VK_UP = &H26

Hay toda una lista de constantes de teclas algún foro chino...bueno por si no sabéis chino...os ayudo :P http://blog.csdn.net/caridle/archive/2007/06/26/1667741.aspx :laugh: :laugh:

un ejemplo: poner pantalla de lado [lo de arriba a la izquierda]
Código:
Call keybd_event(VK_CONTROL, 0, 0, 0) 'Pulsar
Call keybd_event(VK_MENU, 0, 0, 0) 'Pulsar
Call keybd_event(VK_LEFT, 0, 0, 0) 'Pulsar
   
Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0) 'Soltar
Call keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0) 'Soltar
Call keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0) 'Soltar

Acordaros de "soltar" la tecla porque sino se puede quedar alguna tecla pulsada y se lía gorda porque las demás teclas pueden funcionar como combinación... :rolleyes: a mi me ha pasao que he puesto VKK_CONTROL (sin Option Explicit) y se me ha quedao la pantalla palla y las teclas paca... estrujando el cerebro para mover bien el ratón y hacer copy&past de VK-UP y ejecutar :laugh:  :¬¬  :laugh: :laugh:

que lo disfruten !! salu10!!  ;)


En línea

<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
Re: Combinación de teclas en keybd_event
« Respuesta #1 en: 3 Febrero 2009, 05:19 am »

jej.. holas

  Parece muy bueno.
  Probé asíéndolo desde el teclado en mi WinXP SP3 y nada.
  ya te digo si me funciona el code...

 <----------------------->
           nada...


« Última modificación: 3 Febrero 2009, 05:23 am por <[(x)]> » En línea

<[(x)]>
el_c0c0


Desconectado Desconectado

Mensajes: 307


Ver Perfil
Re: Combinación de teclas en keybd_event
« Respuesta #2 en: 3 Febrero 2009, 06:13 am »


kepatxa!!

Resulta que buscando y buscando sobre cómo girar la pantalla con vb he dado con la función keybd_event y he querido aportar lo que he aprendido de él... ;D ;D

La cuestión es que se puede qirar la pantalla usando la combinación de teclas Ctrl+Alt+Flechitas en WinXP y es por eso que necesitaba de keybd_event... pero aparte de brindarte todas las funciones que Windows implementa mediante las combinaciones de teclas (administrador de tareas, dialogo buscar, un gran etc...) la función keybd_event te permite por ejemplo mantener alguna tecla permanentemente...

Yo dejo el código para que se dé rienda suelta al tema... :-X

La gran función keybd_event:
Código:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Algunas constantes..
Código:
Const KEYEVENTF_KEYUP = &H2 'Para despulsar o soltar la tecla
Const KEYEVENTF_EXTENDEDKEY = &H1 'No sé lo que es
Const VK_DELETE = &H2E 'Del
Const VK_MENU = &H12 'Alt
Const VK_CONTROL = &H11
Const VK_DOWN = &H28
Const VK_RIGHT = &H27
Const VK_LEFT = &H25
Const VK_UP = &H26

Hay toda una lista de constantes de teclas algún foro chino...bueno por si no sabéis chino...os ayudo :P http://blog.csdn.net/caridle/archive/2007/06/26/1667741.aspx :laugh: :laugh:

un ejemplo: poner pantalla de lado [lo de arriba a la izquierda]
Código:
Call keybd_event(VK_CONTROL, 0, 0, 0) 'Pulsar
Call keybd_event(VK_MENU, 0, 0, 0) 'Pulsar
Call keybd_event(VK_LEFT, 0, 0, 0) 'Pulsar
   
Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0) 'Soltar
Call keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0) 'Soltar
Call keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0) 'Soltar

Acordaros de "soltar" la tecla porque sino se puede quedar alguna tecla pulsada y se lía gorda porque las demás teclas pueden funcionar como combinación... :rolleyes: a mi me ha pasao que he puesto VKK_CONTROL (sin Option Explicit) y se me ha quedao la pantalla palla y las teclas paca... estrujando el cerebro para mover bien el ratón y hacer copy&past de VK-UP y ejecutar :laugh:  :¬¬  :laugh: :laugh:

que lo disfruten !! salu10!!  ;)

a mi me adelanta (flecha derecha), o rebobina (flecha izquierda) la cancion del winamp con eso.

seguro que eso funciona asi nomas?, no sera q habilitaste alguna cosa del nVidia control panel?

saludos
En línea

'-     coco
"Te voy a romper el orto"- Las hemorroides
Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Combinación de teclas en keybd_event
« Respuesta #3 en: 3 Febrero 2009, 10:07 am »

Hola, es bueno que hayas aprendido a manejar keybd_event, pero creo no es Windows el que gira la pantalla, sino el sofware asociado a los drivers del video, N-videa, ATI, o las On-board de Intel traen esas funciones (que se pueden Habilitar o deshabilitar desde sus propiedades), pero no todos los drivers de videos traen esa funcion y mucho menos  los genéricos de windows  (como trata de explicarte el_c0c0)

Saludos

   
En línea

Adrian Desanti
gulabyte

Desconectado Desconectado

Mensajes: 97



Ver Perfil
Re: Combinación de teclas en keybd_event
« Respuesta #4 en: 3 Febrero 2009, 14:13 pm »


Citar
a mi me adelanta (flecha derecha), o rebobina (flecha izquierda) la cancion del winamp con eso.

seguro que eso funciona asi nomas?, no sera q habilitaste alguna cosa del nVidia control panel?

saludos

Tengo puesto activar rotación en Intel(R) GMA Driver en el Panel de Control y es eso lo que habilita la combinación de teclas... sino tienes activada la opción deja de funcionar la combinación.

Conclusión: si no tiene el software asociado al driver la opción de girar la pantalla no hay manera de hacerlo... povaya :-\





En línea

el_c0c0


Desconectado Desconectado

Mensajes: 307


Ver Perfil
Re: Combinación de teclas en keybd_event
« Respuesta #5 en: 3 Febrero 2009, 18:21 pm »


Citar
a mi me adelanta (flecha derecha), o rebobina (flecha izquierda) la cancion del winamp con eso.

seguro que eso funciona asi nomas?, no sera q habilitaste alguna cosa del nVidia control panel?

saludos



Tengo puesto activar rotación en Intel(R) GMA Driver en el Panel de Control y es eso lo que habilita la combinación de teclas... sino tienes activada la opción deja de funcionar la combinación.

Conclusión: si no tiene el software asociado al driver la opción de girar la pantalla no hay manera de hacerlo... povaya :-\







claa, desde el nvidia control panel se puede rotar, pero no me fije si se puede con una convinacion de teclas..

saludos
« Última modificación: 3 Febrero 2009, 19:11 pm por el_c0c0 » En línea

'-     coco
"Te voy a romper el orto"- Las hemorroides
gulabyte

Desconectado Desconectado

Mensajes: 97



Ver Perfil
Re: Combinación de teclas en keybd_event
« Respuesta #6 en: 3 Febrero 2009, 18:48 pm »


Me pregunto si no hay alguna API que valga como estándar para comunicarse con los drivers de pantalla, sea ATI, nVidia, Intel o cualquiera... supongo que se enviaran datos medianamente parecidos sea un driver u otro no?? no sé...
En algún lado leí que unos programadores tenían el mismo problema y creo que "depuraban" el panel nVidia añadiendo un breakpoint en la función ChangeDisplaySettingsExW (debe de haber más de uno según termina en A, W...) haber si saltaba. Y decían que saltaba, es decir, que sí que se usaba esa función para girar la pantallla... Intentaré buscar donde vi eso... haber si se puede ver que función usa mi driver...
Todo esto parece muy complejo... no se por qué me da que habrá que saber algo más que VB para profundizar en esto....   ;D ;D

PD: Supongo que se podría analizar que función se llama una vez pulsas ctrl-alt-flecha... :¬¬

salu10!!
En línea

gulabyte

Desconectado Desconectado

Mensajes: 97



Ver Perfil
Re: Combinación de teclas en keybd_event
« Respuesta #7 en: 3 Febrero 2009, 19:33 pm »


He encontrado el foro donde vi eso de debugear el panel de control... el post dice lo siguiente:

Citar
Hi Mikael,

Thanks for your feedback.

The output means that the first two graphic device/driver does not support
rotation operation from Windows. I suspect the manufacturer's control panel
application uses undocumented interface to talk to their drivers to get it
done without using standard ChangeDisplaySettingsEx. To verify this, you
may use windbg to attach your manufacturer's control panel application
process, and set a breakpoint to ChangeDisplaySettingsEx, like this:

0:000> bp USER32!ChangeDisplaySettingsW
0:000> bp USER32!ChangeDisplaySettingsA
0:000> bp USER32!ChangeDisplaySettingsExW
0:000> bp USER32!ChangeDisplaySettingsExA

We set the breakpoints for all entrypoints for ChangeDisplaySettings* APIs.
Then, you may try to rotate the screen with the control panel application.
If the debugger does not break, it means your application does not use
ChangeDisplaySettings* APIs. Note: some manufacturer's control panel
applications may IPC to another worker process to call
ChangeDisplaySettings*, so you may try this for all the possible processes
used by control panel application.

Thanks.

Best regards,
Jeffrey Tan
Microsoft Online Community Support
=========================================
Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
msdnmg@microsoft.com.

This posting is provided "AS IS" with no warranties, and confers no rights.

undocumented interface to talk to their drivers.... que rollo tienen los manufacturers esos no¿¿ :(
Pero luego dice que le salta el ChangeDispllaySettingsEx...
Ahí mencionan el "windbg", sabe álguien cómo usarlo??

salu10!!

PC (Por Cierto): El foro de donde saque el post es éste http://www.relatedterms.com/ViewThread.aspx?t=799094 y profundizan bastante en el tema pero está en english...  ;D ;D

En línea

gulabyte

Desconectado Desconectado

Mensajes: 97



Ver Perfil
Re: Combinación de teclas en keybd_event
« Respuesta #8 en: 3 Febrero 2009, 20:05 pm »


Nada al final parece que aunque se usa la función ChangeDisplaySettingsExW no es esta la función que realiza la rotación sino otra que es especifica del driver.... en este caso una API de Intel.... :(

Según dicen se puede girar la pantalla con ChangeDisplaySettings siempre que EnumDisplaySettingsEx diga que es compatible...

salu10!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Combinación de teclas se cambia sin darme cuenta de como
Windows
motocros_elche 3 2,926 Último mensaje 19 Enero 2013, 17:53 pm
por Stakewinner00
keybd_event
Programación C/C++
MessageBoxA 0 1,651 Último mensaje 19 Marzo 2013, 06:36 am
por MessageBoxA
Alternar entre dos monitores con una combinación de teclas
Windows
Kurolox 3 3,405 Último mensaje 4 Mayo 2014, 19:19 pm
por RubenLL
Cambiar combinación de teclas para mostrar y esconder keylogger
Hacking
joe.sistemas 2 3,535 Último mensaje 19 Julio 2015, 01:59 am
por beholdthe
Problema al enviar combinación de teclas con PostMessage
Programación C/C++
ramiro069 0 1,893 Último mensaje 12 Octubre 2016, 16:19 pm
por ramiro069
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines