#delphi #hide #hotkeys #tray
#delphi #скрыть #горячие клавиши #трей
Вопрос:
Мне нужно скрыть форму в системном трее, но в то же время я хочу использовать горячую клавишу, такую как «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;
Комментарии:
1. Имейте в виду, что общесистемные горячие клавиши могут конфликтовать с горячими клавишами приложения. Например, ctrl 3 остановит работу одной из горячих клавиш в моем приложении. Предоставьте пользователю возможность настраивать общесистемные горячие клавиши.
Ответ №1:
Для регистрации общесистемной горячей клавиши вы должны использовать функции 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 Number используется Firefox для переключения вкладок.