Avatar billede loproc Praktikant
26. august 2001 - 01:19 Der er 5 kommentarer og
1 løsning

Global Hotkey

Hejsa!
Så har jeg problemet igen!
Jeg skal lave en windows hook der snupper system-wide hotkeys, som jeg definerer I RUNTIME...
Det er ligemeget om det er et komponent eller det er et kodestykke. Bare jeg kan definere HotKeys i runtime. Desuden skal Windows-tasten kunne bruges som modifier... Jeg havde engang en komponent til det, men jeg kan ikke finde den mere :(
Avatar billede ziron Nybegynder
26. august 2001 - 02:33 #1
prøv at kigge her:

http://www.eksperten.dk/spm/29317

/ZIRON
Avatar billede loproc Praktikant
26. august 2001 - 12:20 #2
Jeg skal bruge en hvor jeg kan definere i runtime... Det andet der var en property du sætter i designtime...
Jeg skal nemlig bruge et ubestemt antal hotkeys...
Avatar billede martinlind Nybegynder
26. august 2001 - 12:37 #3
Prøv at kigge på www.undu.com, der ligger nogle artikler om hvordan du gør
Avatar billede loproc Praktikant
26. august 2001 - 12:51 #4
Jeg har faktisk mere eller mindre selv fundet ud af det...
Poster koden når jeg er færdig, hvis batterierne i min mus holder så længe...
Avatar billede loproc Praktikant
26. august 2001 - 14:44 #5
Sådan... så har jeg den:


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, GlobalHotKey, ComCtrls, Menus;

type
  TForm1 = class(TForm)
    Button1: TButton;
    HotKey1: THotKey;
    CheckBox1: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure mam(var Message: TWMChar); message WM_HOTKEY;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ID: Integer;
  HKLST: TStringList;

implementation

{$R *.dfm}

procedure TForm1.mam(var Message: TWMChar);
begin
SetForegroundWindow(Handle);
ShowMessage(HKLST.Strings[Message.CharCode]);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  lVKey: word;
  lvShift: TShiftstate;
  lModifier: UINT;
  LstS: String;
begin
lModifier := 0;
ShortcutToKey(HotKey1.HotKey, lvKey, lvShift);
if CheckBox1.Checked then lModifier := lModifier or MOD_WIN;
if ssShift in lvShift then lModifier := lModifier or MOD_SHIFT;
if ssAlt in lvShift then lModifier := lModifier or MOD_ALT;
if ssCtrl in lvShift then lModifier := lModifier or MOD_CONTROL;

RegisterHotKey(Handle, ID, lModifier, LOBYTE(lVKey));
ID := ID +1;
if CheckBox1.Checked then LstS := LstS + \'Win+\';
LstS := LstS + ShortCutToText(HotKey1.HotKey);
HKLST.Add(LstS);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
HKLST := TStringList.Create;
end;

end.
Avatar billede loproc Praktikant
26. august 2001 - 14:45 #6
i uses er GlobalHotkey ikke nødvendig........ ups...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester