gpt4 book ai didi

delphi - 即使窗口隐藏在托盘中也可以使用热键。德尔福可以吗?

转载 作者:行者123 更新时间:2023-12-03 15:41:13 26 4
gpt4 key购买 nike

我需要将表单隐藏到系统托盘中,但同时我想使用热键,例如“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;

最佳答案

要注册系统范围的热键,您必须使用 RegisterHotKeyUnRegisterHotKey功能。

检查此示例

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;

请小心您选择的组合键,因为可以在其他应用程序内部使用。例如,Firefox 使用组合 Ctrl Number 来切换选项卡。

关于delphi - 即使窗口隐藏在托盘中也可以使用热键。德尔福可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7814422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com