2010-07-20 29 views
7

Creo que este problema debería ser fácil de resolver, y lo traigo aquí porque realmente siento que busqué una solución en todas partes.Anulación del registro de la tecla de acceso directo Alt-Tab en Windows 7

Mi código está escrito en C# y simplemente debe sobre escribir la tecla de acceso rápido Alt-Tab. Esta línea funciona en XP, pero return false en 7:

RegisterHotKey(handle, ID__ALT_TAB, MOD_ALT, VK_TAB)); 

sé que Windows 7 requiere ahora que doy de baja la tecla de acceso directo antes de que pueda registrar mi nueva, y aquí es donde radica el problema. Cuando verifico el último código de error obtengo el código 1409, lo que significa que la tecla de acceso ya existe. Sin embargo si llamo a esta línea antes de la de arriba:

UnregisterHotKey(handle, ID__ALT_TAB)); 

Esa línea de falla y el último código de error se establece en 1419, es decir, no existe tal tecla de acceso directo. Estas líneas sí funcionan en XP, y puedo registrar una tecla de acceso rápido y luego cancelar el registro. Creo que es porque estoy intentando anular el registro de una tecla de acceso directo con la ID incorrecta, ya que ID_ALT_TAB está definido por mí mismo. No he podido encontrar la ID correcta del Alt-Tab HotKey de Windows. Cualquier ayuda o punteros generales sería muy apreciada.

+8

Odiaría una aplicación que no me permitiera desconectarme de ella. – Fosco

+0

Tal vez solo está trabajando en un reemplazo Alt + Tab ?! – Andreas

+0

Sí, es un reemplazo. – Ward

Respuesta

0

¿También ejecutó el programa como administrador (en lugar de solo iniciar sesión como administrador)? Después de que los programas XP no obtengan necesariamente derechos de administrador solo porque el usuario sea administrador, puede intentar hacer clic con el botón derecho en Ejecutar como administrador (o similar).

+0

Ejecutar como administrador volvió con los mismos resultados. Lo que estoy buscando aquí es cómo anular el registro de una tecla de acceso directo de Windows que no he creado y, por lo tanto, no tengo la ID. El código existente debería ejecutarse y fallar en Windows7 para registrarse. Esto se menciona en la documentación de registerHotKey; http://msdn.microsoft.com/en-us/library/ms646309(VS.85).aspx – Ward

1

No creo que haya una manera de hacer esto. Sin mencionar, incluso si logras de alguna manera registrar tu tecla de acceso directo sobre la existente, ¿qué sucede cuando tu aplicación sale? De repente, no hay Alt-Tab en absoluto.

Más bien, me gustaría ir con otro atajo para activar su reemplazo. ¿Tal vez Ctrl-Alt-Tab?

1

¿No estás seguro si ya has visto this? Podría tener un poco de trabajo con C aquí. Creo que podrías interceptar el trazo Alt + Tab usando este código y luego hacer lo que quieras en su lugar, pero no estoy seguro.

EDITAR: También vea this para algunos trabajos anteriores de VB que podría tener que traducir a C#.

+0

Un amigo mío ha utilizado el código vb vinculado anteriormente y funcionó. Sin embargo, deberá tener una forma de manejar la terminación inesperada de su programa. Lo último que querría que ocurriera es dejar su computadora sin Alt-Tab. –

0

UnregisterHotKey funciona bien y devuelve 0 cuando se activa desde la misma banda de rodadura donde se realizó el registro, así que asegúrese de anular el registro de las teclas de acceso desde el mismo hilo, de lo contrario, devuelve 1419. Probado en Vista.

Cuestiones relacionadas