Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi @ bzw. Alt GR + Q abfangen (https://www.delphipraxis.net/66544-%40-bzw-alt-gr-q-abfangen.html)

Tim.exe 31. Mär 2006 09:02


@ bzw. Alt GR + Q abfangen
 
Hallo,

ich versuche die @-Taste abzufangen, aber irgendwie weill es nicht. Der Compiler meldet zwar keinen Fehler aber die Tastenkombination wird nicht abgefangen:

Delphi-Quellcode:
{ Private-Deklarationen }
id: Integer;
procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
    if Msg.HotKey = id then
    ShowMessage('@ gedrückt.');
end;

procedure TForm1.FormCreate(Sender: TObject);
const
  VK_RMenu = $12;
  VK_Q = $51;
begin
        id := GlobalAddAtom('Hotkey1');
        RegisterHotKey(Handle, id, VK_Q, VK_RMenu);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
        UnRegisterHotKey(Handle, id);
        GlobalDeleteAtom(id);
end;
Kann es sein das die Konstatnte "VK_RMenu = $12;" nicht stimmt?

Grüsse
Tim[delphi]

NicoDE 31. Mär 2006 09:16

Re: @ bzw. Alt GR + Q abfangen
 
Versuch's damit:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
    FHotKeyID: TAtom;
    procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
const
  MOD_ALTGR = MOD_ALT or MOD_CONTROL; // [Alt Gr] ist intern [Alt+Strg]
begin
  FHotKeyID := GlobalAddAtom('MyUniqueHotKeyID');
  if 0 = FHotKeyID then
    ShowMessage('GlobalAddAtom: ' + SysErrorMessage(GetLastError()))
  else
    if not RegisterHotKey(Handle, FHotKeyID, MOD_ALTGR, Ord('Q')) then
      ShowMessage('RegisterHotKey: ' + SysErrorMessage(GetLastError()));
end;

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
  if Msg.HotKey = FHotKeyID then
    ShowMessage('@ gedrückt.');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if FHotKeyID <> 0 then
  begin
    UnregisterHotKey(Handle, FHotKeyID);
    GlobalDeleteAtom(FHotKeyID);
  end;
end;

end.

Tim.exe 31. Mär 2006 09:28

Re: @ bzw. Alt GR + Q abfangen
 
Hallo,

jetzt funktioniert es:

Delphi-Quellcode:
const
MOD_ALTGR = MOD_ALT or MOD_CONTROL;
hat schon gerreicht.

Vielen Dank :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:40 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