使用RegisterHotKey注册的Hotkey,如何只截获此Hotkey而不影响其他应用使用该键?如注册了“W”后记事本中就无法写W了。

baobao 2006-02-11 08:56:10
使用RegisterHotKey注册的Hotkey,如何只截获此Hotkey而不影响其他应用?

如注册了“W”键后,后记事本中就无法写W了。

...全文
310 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
baobao 2006-02-11
  • 打赏
  • 举报
回复
如何发送消息?使用下面代码,记事本中还是敲不出W,如果是组合键怎么发给记事本?
比如RegisterHotKey(m_hWnd,ID_HOTKEY1,MOD_CONTROL,'V');那么其他应用将无法使用ctrl+V
,希望其他应用还能够使用ctrl+V


///////////////////////////////////////////////////////////////////
...
RegisterHotKey(m_hWnd,ID_HOTKEY1,NULL,'W');
..

LRESULT CHotKeyDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{

if (message == WM_HOTKEY)
{
if (wParam == ID_HOTKEY1)
{
//do some logic
}
CWnd* pWnd = GetForegroundWindow();
pWnd->SendMessage(WM_KEYDOWN,'0','0');
::SendMessage(pWnd->GetSafeHwnd(),WM_KEYDOWN,0,'W');

}
return CDialog::WindowProc(message, wParam, lParam);
}
vcmute 2006-02-11
  • 打赏
  • 举报
回复
自己发送WM_KEYDOWN
或者自己写KB HOOK
DentistryDoctor 2006-02-11
  • 打赏
  • 举报
回复
如注册了“W”键后,后记事本中就无法写W了。

一般来说注册的热键都需要与控件键组合(ALT,CTRL等)或是F1~F12一类的。
baobao 2006-02-11
  • 打赏
  • 举报
回复
当注册时如果其他程序已经注册了,那么会返回报错,这个我知道。
我的问题是:我如果注册W为热键,可以成功。但是这样会影响其他应用获得W键的消息。

比如记事本是当前应用,但因为有后台应用将W注册成热键而无法写W字母了,如何修改后台应用使其及能截获热键而又不影响记事本输入W呢?

lzd 2006-02-11
  • 打赏
  • 举报
回复
RegisterHotKey fails if the keystrokes specified for the hot key have already been registered by another hot key.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧