Использование горячей клавиши, даже если окно скрыто в трее.Возможно ли это в Delphi?

StackOverflow https://stackoverflow.com/questions/7814422

  •  26-10-2019
  •  | 
  •  

Вопрос

Мне нужно скрыть форму в системном трее, но в то же время я хочу использовать горячую клавишу, такую как "ctrl + 3", чтобы получить текст из TEdit в моей скрытой форме, вставляемой в Firefox SendText (edit1.Text);// таким способом".Я знаю, как вставлять текст, но я ничего не знаю о горячих клавишах/ Есть предложения?Спасибо.Код текста, вставляемый ниже

procedure SendText(const Value: WideString);
var
  I: Integer;
  S: WideString;
  TI: TInput;
  KI: TKeybdInput;
const
  KEYEVENTF_UNICODE = $0004;
begin
  S := WideUpperCase(Value); 
  TI.Itype := INPUT_KEYBOARD;
  for I := 1 to Length(S) do
  begin
    KI.wVk := 0;
    KI.dwFlags := KEYEVENTF_UNICODE;
    KI.wScan := Ord(S[I]);
    TI.ki := KI;
    SendInput(1, TI, SizeOf(TI));
  end;
end;
Это было полезно?

Решение

Чтобы зарегистрировать общесистемную горячую клавишу, вы должны использовать RegisterHotKey и UnRegisterHotKey функции.

Проверьте этот образец

type
  TForm125 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    HotKey1 : Integer;
    procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
  public

  end;

var
  Form125: TForm125;

implementation

{$R *.dfm}


procedure TForm125.FormCreate(Sender: TObject);
begin
  HotKey1 := GlobalAddAtom('MyAppHotkey1');//create a unique value for identify the hotkey
  if not RegisterHotKey(Handle, HotKey1, MOD_CONTROL, VK_F1) then //register the hotkey CTRL + F1
   ShowMessage('Sorry can not register the hotkey');
end;

procedure TForm125.FormDestroy(Sender: TObject);
begin
  UnRegisterHotKey(Handle, HotKey1);//unregister the hotkey
  GlobalDeleteAtom(HotKey1);//remove the atom
end;

procedure TForm125.WMHotKey(var Msg: TWMHotKey);
begin
  if Msg.HotKey = HotKey1 then
    ShowMessage('Hello'); // do your stuff
end;

Просто будьте внимательны к выбранной вами комбинации клавиш, потому что она может быть использована внутри другого приложения.например, комбинация Ctrl Число используется Firefox для переключения вкладок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top