2010-07-20 4 views
7

Ich denke, dieses Problem sollte einfach zu lösen sein, und ich bringe es hierher, weil ich wirklich das Gefühl habe, überall nach einer Lösung gesucht zu haben.Abmeldung des Alt-Tab-Hotkeys in Windows 7

Mein Code ist in C# geschrieben und sollte einfach über den Hotkey Alt-Tab schreiben. Diese Zeile funktioniert in XP, aber return false in 7:

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

Ich weiß, dass Windows 7 jetzt verlangt, dass ich den Hotkey deregistrieren, bevor ich meine neuen registrieren kann, und das ist, wo das Problem liegt. Wenn ich den letzten Fehlercode überprüfe, bekomme ich Code 1409, was bedeutet, dass der Hotkey bereits existiert. Allerdings, wenn ich rufe Sie diese Zeile vor dem oben:

UnregisterHotKey(handle, ID__ALT_TAB)); 

Diese Linie versagt und der letzte Fehlercode wird auf 1419, was bedeutet, keine solche Hotkey existiert. Diese Zeilen funktionieren in XP, und ich kann einen Hotkey registrieren und dann die Registrierung aufheben. Ich glaube es ist, weil ich versuche, eine Hotkey mit der falschen ID zu entfernen, da ID_ALT_TAB selbst definiert ist. Ich konnte die richtige ID des Windows-Ebene Alt-Tab-HotKey nicht finden. Jede Hilfe oder allgemeine Hinweise würden sehr geschätzt werden.

+8

Ich würde eine Anwendung hassen, die mich nicht davon abschalten würde. – Fosco

+0

Vielleicht arbeitet er gerade an einem Alt + Tab-Ersatz ?! – Andreas

+0

Ja, es ist ein Ersatz. – Ward

Antwort

0

Haben Sie das Programm auch als Administrator ausgeführt (anstatt nur als Administrator angemeldet zu sein)? Nachdem XP-Programme nicht notwendigerweise Administratorrechte erhalten, nur weil der Benutzer admin ist, könnten Sie versuchen, mit der rechten Maustaste auf Ausführen als Administrator (oder Ähnliches) zu klicken.

+0

Ausführen als adminn kam mit den gleichen Ergebnissen zurück. Nach was ich hier suche, ist, wie man eine Windows level Tastenkombination, die ich nicht erstellt habe, abmeldet und deshalb die ID nicht hat. Der vorhandene Code sollte in Windows7 ausgeführt und fehlschlagen, um zu registrieren. Dies wird in der Dokumentation für RegisterHotKey erwähnt; http://msdn.microsoft.com/en-us/library/ms646309(VS.85).aspx – Ward

1

Ich glaube nicht, dass es einen Weg gibt, dies zu tun. Ganz zu schweigen, auch wenn Sie es irgendwie schaffen, Ihren Hotkey über dem bestehenden zu registrieren, was passiert, wenn Ihre Anwendung beendet wird? Plötzlich gibt es überhaupt kein Alt-Tab mehr.

Eher würde ich mit einer anderen Abkürzung gehen, um Ihren Ersatz auszulösen. Vielleicht Strg-Alt-Tab?

1

Nicht sicher, ob Sie bereits this gesehen haben? Vielleicht muss ich hier ein wenig mit C arbeiten. Ich würde denken, dass Sie in der Lage sind, den Alt + Tab-Strich mit diesem Code abzufangen und dann zu tun, was immer Sie möchten, aber ich bin mir nicht sicher.

EDIT: Siehe auch this für einige ältere VB-Arbeit, die Sie möglicherweise in C# übersetzen müssen.

+0

Ein Freund von mir hat den oben verlinkten VB-Code verwendet und es hat funktioniert. Sie müssen jedoch eine Möglichkeit haben, die unerwartete Beendigung Ihres Programms zu behandeln. Das letzte, was Sie tun möchten, ist, Ihren Computer ohne Alt-Tab zu verlassen. –

0

UnregisterHotKey funktioniert gut und gibt 0 zurück, wenn es von der gleichen Lauffläche abgefeuert wird, wo die Registrierung durchgeführt wurde. Stellen Sie also sicher, dass Sie die Hotkeys vom selben Thread abmelden. Andernfalls wird 1419 zurückgegeben. Getestet unter Vista.