AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Namen der virtuellen Tastencodes

Ein Thema von Mazel · begonnen am 4. Aug 2006 · letzter Beitrag vom 6. Aug 2006
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#1

Namen der virtuellen Tastencodes

  Alt 4. Aug 2006, 15:53
Hallo,

ich möchte die Namen der virtuellen Tastencodes ermitteln, also wenn ich die Bild nach oben Taste drücke, soll in einem Editfeld BILD-NACH-OBEN stehen.

Mir ist in Winamp aufgefallen, dass es trotz seiner englischen Sprache, die deutschen Namen der Tasten anzeigt. Das heißt für mich, dass es da eine Funktion geben muss um diese Namen zu ermitteln. Wie kann ich dies unter Delphi erreichen?

Im Anhang mal ein Bild von Winamp (Hotkeys).

Gruß
Mazel
Miniaturansicht angehängter Grafiken
bild1_167.jpg  
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Namen der virtuellen Tastencodes

  Alt 4. Aug 2006, 16:02
MSDN-Library durchsuchenGetKeyNameText sieht doch gut aus, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#3

Re: Namen der virtuellen Tastencodes

  Alt 4. Aug 2006, 16:11
Danke,

aber wie wende ich dei Funktion nun an?
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

Re: Namen der virtuellen Tastencodes

  Alt 4. Aug 2006, 16:14
na so wie jede aus der WinAPI?

erstma gucken, ob sie bei dir definiert is (eventuell in der Windows.pas), wenn ncith dann woanders gucken, oder halt selber definieren ... steht ja alles wichtige da
und dann entsprechend den angaben aus'm MSDN/PSDK aufrufen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#5

Re: Namen der virtuellen Tastencodes

  Alt 4. Aug 2006, 16:21
Definiert ist sie, nur kommt bei mir kein Name am Ende heraus: (habe ich beim suchen gefunden)
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  var p: PChar;
begin
  p:=StrAlloc(150);
  If GetKeyNameText(16, p, SizeOf(p)) > 0 then Edit1.Text:=StrPas(p);
end;
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#6

Re: Namen der virtuellen Tastencodes

  Alt 4. Aug 2006, 22:10
HI,

ich habe jetzt eine andere Lösung, nur gibt es dabei noch ein Problem, siehe Anhang:
Delphi-Quellcode:
procedure TForm1.EditHotkeyKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  TempShortCut: TShortCut;

begin
  TempShortCut:=ShortCut(Key, shift);
  EditHotkey.Text:=ShortCutToText(TempShortCut);
end;
Warum stehe bei einem Druck auf die STRG-Taste STRG 2 mal da und einmal davon klein?

Gruß
Mazel
Miniaturansicht angehängter Grafiken
bild1_670.jpg  
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Namen der virtuellen Tastencodes

  Alt 4. Aug 2006, 23:16
Zitat von Mazel:
Definiert ist sie, nur kommt bei mir kein Name am Ende heraus: (habe ich beim suchen gefunden)
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  var p: PChar;
begin
  p:=StrAlloc(150);
  If GetKeyNameText(16, p, SizeOf(p)) > 0 then Edit1.Text:=StrPas(p);
end;
Als Dritter Parameter wird die verfügbare Länge erwartet. Du übergibst aber die Größe von PChar. Und PChar ist nur ein Pointer womit die Größe bei dir nur 4 wäre. Wenn du mit StrAlloc, 150 zeischen reservierst schreib die 150 doch statich rein.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#8

Re: Namen der virtuellen Tastencodes

  Alt 5. Aug 2006, 06:55
Besser gleich einen Puffer verwenden, denn sonst gibt es ein Speicherleck.
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  var
    Buffer: array [0..255] of Char;
begin
  if GetKeyNameText(16, @Buffer[0], SizeOf(Buffer)) > 0 then
    Edit1.Text := Buffer;
end;
Wenn man sich allerdings ernsthaft mit den Tastencodes beschaeftigen will, dann ist WM_KEYDOWN bzw WM_SYSKEYDOWN abzufangen der bessere Ansatz.
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#9

Re: Namen der virtuellen Tastencodes

  Alt 5. Aug 2006, 09:21
Hi,

ich habe jetzt die letzen beiden Version probiert, leider ohne Erfolg. Es kommt kein Zeichen (ALT, STRG, etc.) in das Editfeld.
Delphi-Quellcode:
//Version 1
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  Buffer: array [0..255] of Char;
 
begin
  If GetKeyNameText(16, @Buffer[0], SizeOf(Buffer)) > 0 then Edit1.Text:=Buffer;
end;

//Version 2
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  p: PChar;
 
begin
  p:=StrAlloc(150);
  If GetKeyNameText(16, p, 150)) > 0 then Edit1.Text:=StrPas(p);
end;
Nur bei folgender Version bekomme ich die Namen in das Editfeld mit dem Problem das es doppelt hinein geschrieben wird:
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  TempShortCut: TShortCut;

begin
  TempShortCut:=ShortCut(Key, Shift);
  EditHotkey.Text:=ShortCutToText(TempShortCut);
end;
Weis jemand wo die Fehler liegen?

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#10

Re: Namen der virtuellen Tastencodes

  Alt 5. Aug 2006, 09:43
Hallo,

hast Du schon mal den ErrorCode der Funktion ausgelesen? Der ist nämlich genau dazu da, um Fehler einzugrenzen .

[Edit]
Ich habe gerade bemerkt, LastError ist einfach Null. Das Problem ist, das KeyDown-Event liefert keinen gültigen KeyCode für diese Funktion. So funktioniert's:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Label1: TLabel;
  protected
    procedure DoKeyDown(var Msg: TWMKeyDown); message WM_KEYDOWN;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DoKeyDown(var Msg: TWMKeyDown);
var
  Buffer: array [0..50] of Char;
begin
  if GetKeyNameText(Msg.KeyData, @Buffer[0], 50) > 0 then
    Label1.Caption := Buffer;
end;
Blöderweise mag mich allerdings die Alt-Taste nicht. Die Methode wird gar nicht ausgeführt. Das liegt daran, dass Alt das System-Menü aktiviert (drück danach mal "Nach Unten").
[/Edit]

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 05:13 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