AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Globale Änderung der Tastaturbelegung
Thema durchsuchen
Ansicht
Themen-Optionen

Globale Änderung der Tastaturbelegung

Ein Thema von summer68 · begonnen am 6. Dez 2008 · letzter Beitrag vom 6. Dez 2008
Antwort Antwort
summer68

Registriert seit: 4. Dez 2008
Ort: Oberweidbach
2 Beiträge
 
#1

Globale Änderung der Tastaturbelegung

  Alt 6. Dez 2008, 03:07
Guten Morgen und Hallo,

vorne weg, möchte ich als Neuling um Nachsicht bitten.

Ich habe folgendes Problem:

Ich nutze zwei Arten von Programmen, die die Plus- und Minustaste des Nummernblocks jeweils vertauscht nutzen.
D.h. in dem einen Programm ist Plus-Taste "+" und in dem anderen "-". Dies gilt für die Minustaste umgekehrt. Was äußerst nervig ist, wenn ich sehr viele Daten eingeben und mal mit dem einen und mal mit dem anderen Programm arbeiten muss.

Nunmehr suche ich bereits Tag und Nacht seit meiner Anmeldung nach einer Lösung. Dabei bin ich auf die hook's gestoßen. Ich bin als Turbopascaldinosaurier schon ganz stolz, dass ich mittlerweile die Tastatureingabe zu einer Reaktion nutzen kann (Dank an assarbad). Für mehr reicht es leider "noch" nicht.

Deshalb die entscheidene Frage: Ist der Ansatz für mein Problem überhaupt der Richtige?
Ich stelle mir eine Lösung in Delphi vor, die den Tastentausch wahlweise eliminiert.

Für Eure Tipps, Anregungen und Hilfe schon mal vielen Dank

Torsten
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Globale Änderung der Tastaturbelegung

  Alt 6. Dez 2008, 06:48
In diesem Thread geht es ab ca. Seite 2 um etwas ähnliches. Ich denke dabei in diese Richtung:
0) Globaler Tastatur-Hook vorausgesetzt
1) Top-Level Fenster ermitteln
2a) Ist es das in dem die Eingabe okay ist, einfach tatenlos die Hookchain laufen lassen
2b) Ist es das in dem die Tasten getauscht werden sollen, weiter mit 3
3) Durch in o.g. Thread genannte Möglichkeit die Chain unterbrechen (=der Tastendruck kommt nicht im Programm an)
4) Geänderte Taste mittels MSDN-Library durchsuchenSendInput auslösen

Ich bin allerdings nicht sicher, ob man nicht gleich einen MSDN-Library durchsuchenLowLevel Hook (2. Eintrag) nehmen kann, bzw. ob Änderungen an den Werten in der übergebenen MSDN-Library durchsuchenKBDLLHOOKSTRUCT eine Auswirkung auf die weitere Verarbeitung haben. Dann könnte man einfach dort ansetzen, und müsste nicht erst noch mit SendInput rumfummeln. Nachteil bei den LowLevel Hooks: Man muss ein paar Konstanten und Structs selbst deklarieren, da man diese in Borland wohl für nicht sehr wichtig hielt .
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: Globale Änderung der Tastaturbelegung

  Alt 6. Dez 2008, 07:05
Zitat von Medium:
4) Geänderte Taste mittels MSDN-Library durchsuchenSendInput auslösen

Ich bin allerdings nicht sicher, ob man nicht gleich einen MSDN-Library durchsuchenLowLevel Hook (2. Eintrag) nehmen kann, bzw. ob Änderungen an den Werten in der übergebenen MSDN-Library durchsuchenKBDLLHOOKSTRUCT eine Auswirkung auf die weitere Verarbeitung haben. Dann könnte man einfach dort ansetzen, und müsste nicht erst noch mit SendInput rumfummeln.
Ein WH_GETMESSAGE Hook erlaubt es die Nachricht abzuändern.

Zitat von msdn:
The GetMsgProc hook procedure can examine or modify the message. After the hook procedure returns control to the system, the GetMessage or PeekMessage function returns the message, along with any modifications, to the application that originally called it.
Thomas
  Mit Zitat antworten Zitat
summer68

Registriert seit: 4. Dez 2008
Ort: Oberweidbach
2 Beiträge
 
#4

Re: Globale Änderung der Tastaturbelegung

  Alt 6. Dez 2008, 20:37
Hallo,

vielen Dank.

Die Hook's funktionieren und damit lassen sich auch einige andere ungelöste Anforderungen, vorher gar nicht bedachte, bewerkstelligen.

Auf Grund der Tipps erledige ich jetzt erstmal meine "Hausaufgaben" und berichte.

Gruß


Torsten
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz