【发布时间】:2010-10-07 02:22:07
【问题描述】:
我想发送 WM_HOTKEY 以供其他应用程序使用全局桌面 HotShortCut 捕获。
预期的键是 CTRL + F10
这是我发现触发捕获 WM_HOTKEY 的唯一方法:
procedure TfmMain.ButtonTalkClick(Sender: TObject);
var
Article: TArticleBase;
Msg: TMessage;
begin
Article:= GetSelectedArticle;
if Article <> nil then
begin
Clipboard.AsText:= Article.SelectedText;
Msg.LParamLo:= MOD_CONTROL;
Msg.LParamHi:= VK_CONTROL or VK_F10;
PostMessage(HWND_BROADCAST, WM_HOTKEY, 0, Msg.LParam);
end;
end;
如果我更改 Msg.LParamLo 或 Msg.LParamHi 的任何值,WM_HOTKEY 不会被其他应用程序触发。 但是使用这种方式,在消息 WM_HOTKEY 被 Method 捕获之前:
procedure ManageHotKeyMsg(var Msg: TMessage); message WM_HOTKEY;
“Windows 执行对话框”被执行(快捷键“Windows Key”+R)
如何正确传递 Msg.LParamLo 和 Msg.LParamHi,以确保我发送 WM_HOTKEY + "CTRL + F10"。
【问题讨论】:
-
我不认为您应该使用 VK_CONTROL 或 VK_F10; Msg.LParamLo:= MOD_CONTROL 告诉它你想要 Ctrl+f10
标签: delphi hotkeys postmessage