Question

Je veux envoyer WM_HOTKEY être capturé par une autre application à l'aide d'un HotShortCut de bureau mondial.

Les touches sont attendues CTRL + F10

Ceci est la seule façon que j'ai trouvé pour déclencher la prise de 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;

si je change l'une des valeurs de Msg.LParamLo ou Msg.LParamHi, WM_HOTKEY est pas déclenchée par l'autre application. Mais l'utilisation de cette façon, avant que le WM_HOTKEY message est capturé par la méthode:

procedure ManageHotKeyMsg(var Msg: TMessage); message WM_HOTKEY;

Les "Windows Execute dialogue" est exécuté (raccourci "Touche Windows" + R)

Comment est la bonne façon de passer Msg.LParamLo et Msg.LParamHi, pour vous assurer Im envoi WM_HOTKEY + "CTRL + F10".

Était-ce utile?

La solution

Fait en utilisant PostKeyEx32 .

procedure TfmMain.ButtonTalkClick(Sender: TObject);
var
  Article: TArticleBase;
begin
  Article:= GetSelectedArticle;
  if Article <> nil then
  begin
    Clipboard.AsText:= Article.SelectedText;
    PostKeyEx32(VK_F10, [ssCtrl], False);
  end;
end;

Maintenant, mon Xananews construire parole peut: D

Autres conseils

Raymond dit que vous faites mal:

http://blogs.msdn.com/oldnewthing /archive/2005/05/30/423202.aspx

Pourquoi ne parlez-vous pas seulement à l'autre application en utilisant directement une sorte de mécanisme standard IPC?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top