グローバルデスクトップHotShortCutを使用して、他のアプリケーションによってキャプチャされるようにWM_HOTKEYを送信したいと思います。
予想されるキーは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がメソッドによってキャプチャされる前に次のようになります。
procedure ManageHotKeyMsg(var Msg: TMessage); message WM_HOTKEY;
「Windows実行ダイアログ」が実行されます(ショートカット「Windowsキー」+ R)
Msg.LParamLoとMsg.LParamHiを渡す正しい方法は、ImがWM_HOTKEY + "CTRL+F10"を送信していることを確認する方法です。