2009-02-12 17 views
0

Je veux envoyer WM_HOTKEY pour être capturé par une autre application en utilisant un bureau global HotShortCut.Comment envoyer WM_HOTKEY avec PostMessage?

Les touches sont attendues CTRL + F10

Ceci est la seule façon que j'ai trouvé pour déclencher la capture 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 n'est pas déclenché 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 Exécuter dialogue » est exécuté (raccourci « Touche Windows » + R)

Comment est la bonne façon de passez Msg.LParamLo et Msg.LParamHi, pour vous assurer que je suis en train d'envoyer WM_HOTKEY + "CTRL + F10".

+0

Je ne t pense que vous devriez OR'ing VK_CONTROL ou VK_F10; Msg.LParamLo: = MOD_CONTROL vous indique que vous voulez Ctrl + f10 –

Répondre

2

Fait avec 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

0

Raymond dit que vous faites mal:

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

Pourquoi ne parle pas simplement à l'autre application en utilisant directement une sorte de mécanisme standard IPC?

+0

Tnx Paul. Je n'ai pas d'autres sources d'applications. C'est pourquoi je devrais envoyer les clés. Ill essayez d'utiliser SendInput. –