Taste zeitweilig deaktivieren

Bild

Betrifft: Taste zeitweilig deaktivieren
von: RomanoWirth
Geschrieben am: 21.11.2003 22:54:10

VBA nicht ganz so gut...

Hallo Leute,

ich hab die Frage schon vor ein paar Tagen im spotlight VB- Forum
gestellt, aber keine zur Lösung führende Antwort erhalten.

Hoffe, das wird jetzt nicht als crossposting gewertet.

Wie kann ich während mein Programm läuft, die Windows- Taste
(zwischen Strg und Alt bzw. rechts neben Alt Gr)
deaktivieren. Mit anderen Worten, ich möchte erreichen, dass das
Startmenü nicht aufgeklappt werden kann.

Gruß und Dank schon mal

Romano

Bild


Betrifft: AW: Taste zeitweilig deaktivieren
von: Josef Ehrensberger
Geschrieben am: 21.11.2003 23:19:21

Hallo Romano,

also ich glaube das du von Excel bzw. VBA keinen zugriff
auf die Windowstaste hast, aber vieleicht hilft dir dieser link.


http://www.freeware.de/software/Programm_KeyMapper_13053.html

Gruß Sepp


Bild


Betrifft: Taste zeitweilig deaktivieren noch offen
von: RomanoWirth
Geschrieben am: 21.11.2003 23:30:01

Hallo,

danke, aber ich muss das in mein Projekt einbinden können,
sollte also irgendwie mittels VBA gehen.

Gruß Romano


Bild


Betrifft: AW: Taste zeitweilig deaktivieren
von: DieterB
Geschrieben am: 21.11.2003 23:40:19

Hallo, ich hoffe das hilft ein wenig (MS-Excel-Hilfe)


Beispiel zur KeyboardShortcutTips-Eigenschaft

In diesem Beispiel werden die Hilfeinformationen des Office-Assistenten über Tastenkombinationen aktiviert.

Assistant.KeyboardShortcutTips = True


OnKey-Methode


Führt die angegebene Prozedur aus, wenn eine bestimmte Taste oder Tastenkombination gedrückt wird.

Syntax

Ausdruck.OnKey(Key, Procedure)

Ausdruck Erforderlich. Ein Ausdruck, der ein Application-Objekt zurückgibt.

Key String erforderlich. Eine Zeichenfolge, die die zu drückende Taste angibt.

Procedure Variant optional. Eine Zeichenfolge, die den Namen der auszuführenden Prozedur festlegt. Falls Procedure eine leere Zeichenfolge ("") ist, hat das Drücken von Key keine Wirkung. Diese Form von OnKey deaktiviert die normale Bedeutung von Tastenanschlägen in Microsoft Excel. Ist Procedure nicht angegeben, erhält Key ihre ursprüngliche Bedeutung in Microsoft Excel zurück, und alle bisher mit der OnKey -Methode vorgenommenen Tastenzuweisungen werden gelöscht.

Anmerkungen

Das Argument Key kann eine einzelne Taste angeben, kombiniert mit den Tasten ALT, STRG oder UMSCHALT oder jede Kombination dieser Tasten. Jede Taste wird durch ein oder mehrere Zeichen dargestellt, wie z. B. "a" für die Taste a, oder "{EINGABE}" für die EINGABETASTE.

Verwenden Sie für Zeichen, die beim Drücken einer Taste nicht angezeigt werden (z. B. EINGABE oder TAB), die Codes aus der folgenden Tabelle. Jeder Code in der Tabelle steht für eine Taste auf der Tastatur.

TASTE Code
RÜCKTASTE {BACKSPACE} oder {BS}
PAUSE {BREAK}
FESTSTELLTASTE {CAPSLOCK}
ENTF {CLEAR}
ENTF {DELETE} oder {DEL}
NACH-UNTEN-TASTE {DOWN}
ENDE {END}
EINGABETASTE (Zehnertastatur) {ENTER}
EINGABETASTE ~ (Tilde)
ESC {ESCAPE} oder {ESC}
HILFE {HELP}
POS1 {HOME}
EINFG {INSERT}
NACH-LINKS-TASTE {LEFT}
NUM {NUMLOCK}
BILD-AB {PGDN}
BILD-AUF {PGUP}
EINGABETASTE {RETURN}
NACH-RECHTS-TASTE {RIGHT}
ROLLEN {SCROLLOCK}
TAB {TAB}
NACH-OBEN-TASTE {UP}
F1 bis F15 {F1} bis {F15}


Sie können jede beliebige Tastenkombination mit UMSCHALT, STRG und ALT angeben. Kombinieren Sie eine Taste mit einer oder mehreren anderen Tasten entsprechend der folgenden Tabelle.

Kombinieren mit Vorangestelltes Zeichen
UMSCHALT + (Pluszeichen)
STRG ^ (Caret-Zeichen)
ALT % (Prozentzeichen)


Um einem der Sonderzeichen (+,^ ,%, usw.) eine Prozedur zuzuweisen, schließen Sie das Zeichen in geschweifte Klammern ein. Genauere Informationen finden Sie im zugehörigen Beispiel.


KeyPress-Ereignis


Tritt ein, wenn der Benutzer eine ANSI-Taste drückt.

Syntax

Private Sub object_KeyPress( ByVal KeyANSI As MSForms.ReturnInteger)

Die Syntax für das KeyPress-Ereignis besteht aus folgenden Teilen:

Teil Beschreibung
object Erforderlich. Ein gültiges Objekt.
KeyANSI Erforderlich. Ein Wert einer Ganzzahl, der einen numerischen Standard-ANSI-Tasten-Code darstellt.


Hinweise

Das KeyPress-Ereignis tritt ein, wenn der Benutzer eine Taste drückt, die auf einem ausgeführten Formular ein darstellbares Zeichen (ein ANSI-Zeichen) ergibt, während das Formular oder ein Steuerelement in diesem Formular den Fokus hat. Dieses Ereignis kann vor oder nach dem Loslassen der Taste eintreten. Dieses Ereignis tritt auch ein, wenn Sie einen ANSI-Tastenanschlag an ein Formular oder ein Steuerelement senden und dazu entweder die SendKeys-Aktion in einem Makro oder die SendKeys-Anweisung in Visual Basic verwenden.

Ein KeyPress-Ereignis kann eintreten, wenn eine der folgenden Tasten gedrückt werden:

Ein beliebiges darstellbares Zeichen.


STRG in Kombination mit einem Zeichen aus dem Standardalphabet.


STRG in Kombination mit einem beliebigen Sonderzeichen.


RÜCKTASTE.


ESC.
Ein KeyPress-Ereignis tritt unter den folgenden Bedingungen nicht ein:

Drücken der TAB-TASTE.


Drücken der EINGABETASTE.


Drücken einer PFEILTASTE.


Wenn sich der Fokus aufgrund eines Tastenanschlags von einem Steuerelement auf einen anderen verschiebt.
Anmerkung Im Gegensatz zur RÜCKTASTE ist ENTF kein Teil des ANSI-Zeichensatzes. Das Löschen eines Zeichens in einem Steuerelement mit der RÜCKTASTE löst somit ein KeyPress-Ereignis aus, das Löschen eines Zeichens mit ENTF jedoch nicht.

Wenn ein Benutzer eine Taste gedrückt hält, die einen ANSI-Tasten-Code erzeugt, wiederholen sich die Ereignisse KeyDown und KeyPress im gegenseitigen Wechsel. Wenn der Benutzer die Taste loslässt, tritt das KeyUp-Ereignis ein. Das Formular oder das Steuerelement mit dem Fokus erhält alle Tastenanschläge. Ein Formular kann den Fokus nur dann haben, wenn es keine Steuerelemente enthält oder wenn alle sichtbaren Steuerelemente deaktiviert sind.

Als Standardaktion des KeyPress-Ereignisses wird der Ereignis-Code verarbeitet, der der gedrückten Taste entspricht. KeyANSI bestimmt das ANSI-Zeichen, das der gedrückten Taste oder Tastenkombination entspricht. Das KeyPress-Ereignis interpretiert die Groß-/Kleinschreibung jedes Zeichens als separate Tastencodes und somit als zwei separate Zeichen.

Um auf den aktuellen Zustand der Tastatur zu reagieren oder Tastenanschläge zu verarbeiten, die nicht vom KeyPress-Ereignis erkannt werden, wie z.B. Funktionstasten, Richtungstasten und beliebige Kombinationen dieser mit den Zustandstasten (ALT, UMSCHALT oder STRG), verwenden Sie die Ereignisprozeduren KeyDown und KeyUp.

Die Reihenfolge der tastaturbezogenen Ereignisse lautet wie folgt:

KeyDown


KeyPress


KeyUp




SendKeys-Anweisung


Sendet eine Tastenfolge (die aus einem oder mehreren Tastenanschlägen bestehen kann) an das aktive Fenster, als ob sie über die Tastatur eingegeben worden wäre.

Syntax

SendKeys string[, wait]

Die Syntax der SendKeys-Anweisung verwendet die folgenden benannten Argumente:

Teil Beschreibung
string Erforderlich. Ein Zeichenfolgenausdruck, der die zu sendende Tastenfolge angibt.
wait Optional. Ein Wert vom Typ Boolean, der den Wartemodus angibt. Wenn der Wert False ist (Voreinstellung), setzt die Prozedur die Ausführung fort, unmittelbar nachdem die Tastenfolge gesendet wurde. Wenn der Wert True ist, muß die Tastenfolge verarbeitet werden, bevor die Prozedur die Ausführung fortsetzen kann.



Bemerkungen

Jede Taste wird durch mindestens ein Zeichen repräsentiert. Ein einzelnes Zeichen auf der Tastatur kann mit dem Zeichen selbst angegeben werden. "A" für das Argument string repräsentiert beispielsweise den Buchstaben A. Sie geben mehrere Zeichen an, indem Sie die Zeichen aneinanderhängen. "ABC" für string repräsentiert zum Beispiel die Buchstaben A, B und C.

Das Pluszeichen (+), Caret-Zeichen (^), Prozentzeichen (%), die Tilde (~) und die Klammern ( ) haben bei der SendKeys-Anweisung eine spezielle Bedeutung. Sie müssen jedes dieser Zeichen in geschweifte Klammern einschließen ({}), um es verwenden zu können. Für das Pluszeichen geben Sie beispielsweise {+}an. Eckige Klammern ([ ]) haben bei der SendKeys-Anweisung zwar keine spezielle Bedeutung, müssen aber auch in geschweifte Klammern eingeschlossen werden, da sie in anderen Anwendungen eine spezielle Bedeutung haben, insbesondere im Zusammenhang mit dynamischem Datenaustausch (DDE). Die Zeichen für die geschweiften Klammern legen Sie unter Verwendung von {{} und {}} fest.

Für Zeichen, die beim Drücken einer Taste nicht angezeigt werden (z.B. die EINGABETASTE oder TAB-TASTE) und für bestimmte Aktionstasten können Sie die folgenden Codes verwenden:

Taste Code
RÜCKTASTE {BACKSPACE}, {BS} oder {BKSP}
PAUSE {BREAK}
FESTSTELLTASTE {CAPSLOCK}
ENTF {DELETE} oder {DEL}
NACH-UNTEN {DOWN}
ENDE {END}
EINGABETASTE {ENTER}oder ~
ESC {ESC}
HILFE {HELP}
POS 1 {HOME}
EINFG {INSERT} oder {INS}
NACH-LINKS {LEFT}
NUM-FESTSTELL {NUMLOCK}
BILD-AB {PGDN}
BILD-AUF {PGUP}
DRUCK {PRTSC}
NACH-RECHTS {RIGHT}
ROLLEN-FESTSTELL {SCROLLLOCK}
TAB {TAB}
NACH-OBEN {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}



Sie können Tastenkombinationen mit der UMSCHALTTASTE, STRG-TASTE oder ALT-TASTE angeben, indem Sie vor dem normalen Tasten-Code einen oder mehrere der folgenden Codes angeben:

Taste Code
UMSCHALT +
STRG ^
ALT %



Wenn UMSCHALT, STRG und ALT gleichzeitig mit anderen Tasten gedrückt werden müssen, schließen Sie die Codes für die Tasten in Klammern ein. Wenn zum Beispiel die UMSCHALTTASTE gleichzeitig mit den Tasten E und C gedrückt werden soll, geben Sie "+(EC)" an. Wenn die UMSCHALTTASTE zusammen mit E gedrückt werden soll und im Anschluß daran C ohne UMSCHALTTASTE, geben Sie "+EC" an.

Tastenwiederholungen können Sie in der Form {Taste Zahl} angeben. Das Leerzeichen zwischen Taste und Zahl ist dabei zwingend erforderlich. {LEFT 42} wird zum Beispiel als 42-maliges Drücken der NACH-LINKS-TASTE interpretiert, {h 10} als 10-maliges Drücken der Taste H.

Anmerkung SendKeys kann keine Tastenanschläge an Anwendungen senden, die nicht unter Microsoft Windows oder auf dem Macintosh ausgeführt werden können. SendKeys kann auch die DRUCK-TASTE {PRTSC} an keine Anwendung senden.


Bild


Betrifft: AW: Taste zeitweilig deaktivieren
von: RomanoWirth
Geschrieben am: 21.11.2003 23:48:58

Hallo,

danke, das hilft aber leider nicht, weil die fragliche Taste
(KeyCode 91)sich davon nicht beeindrucken läßt.

Gruß Romano


Bild


Betrifft: noch offen
von: RomanoWirth
Geschrieben am: 22.11.2003 16:34:35

ot


Bild


Betrifft: AW: noch offen
von: Nepumuk
Geschrieben am: 23.11.2003 11:01:17

Hallo Romano,
wie habe ich das zu verstehen, "wärend mein Programm läuft". So lange eine Routine läuft oder solange diese spezielle Excelmappe geöffnet ist?
Gruß
Nepumuk


Bild


Betrifft: AW: Taste zeitweilig deaktivieren
von: Reinhard
Geschrieben am: 23.11.2003 14:14:19

Hallo Romano,
man kann die Taste durch Registryeinträge deaktivieren (zumindest bei einigen Windowsversionen), allerdings muss man danach einen Neustart durchführen.
Die Registry Einträge sind abhängig von der Windowsversion.
Gruß
Reinhard


Bild

Beiträge aus den Excel-Beispielen zum Thema " Taste zeitweilig deaktivieren"