给记事本发消息不能成功

Richardw 2014-09-05 01:58:54
    HWND m_hWnd = FindWindow("Notepad", "无标题 - 记事本");

PostMessage(m_hWnd, WM_SYSKEYDOWN, VK_MENU, MakeKeyLparam(VK_MENU, WM_SYSKEYDOWN));
PostMessage(m_hWnd, WM_SYSKEYDOWN, 'E', MakeKeyLparam('E', WM_SYSKEYDOWN));
PostMessage(m_hWnd, WM_SYSCHAR, 'E', MakeKeyLparam('E', WM_SYSCHAR));
PostMessage(m_hWnd, WM_SYSKEYUP, 'E', MakeKeyLparam('E', WM_SYSKEYUP));
PostMessage(m_hWnd, WM_KEYUP, VK_MENU, MakeKeyLparam(VK_MENU, WM_KEYUP));


如果成功的话会打开编辑菜单,但现在没有反应

如果单发送Alt键,是可以看到菜单栏变化的,就是菜单后面的快捷键字母出现了下划线,说明成功...

是哪还有问题吗?还是说不能发快捷键,只能发单键?

另外,HOOK记事本做操作已经可以了,这个不用HOOK,能否实现呢?
...全文
367 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
MSDN: This message is posted to the window with the keyboard focus when the user holds down the ALT key and then presses another key. It also occurs when no window currently has the keyboard focus; in this case, the WM_SYSKEYDOWN message is sent to the active window. 还要翻译不?
Richardw 2014-09-11
  • 打赏
  • 举报
回复
无奈~~~~~~
Richardw 2014-09-10
  • 打赏
  • 举报
回复
Richardw 2014-09-09
  • 打赏
  • 举报
回复
有没有个明确的说法,就是这个问题不能实现呀?
Richardw 2014-09-08
  • 打赏
  • 举报
回复
可已经有人成功了... 我在网上搜索这个的时候,在看雪上找到一个同样问这个的,开始有大牛帮他,他后来说成功了,但就是不说怎么做的,然后后面的跟帖就乱了
我不懂电脑 2014-09-07
  • 打赏
  • 举报
回复
Alt按下后,先不要弹起
lhy 2014-09-07
  • 打赏
  • 举报
回复
引用 5 楼 Richardw 的回复:
to songhtao:不发送ALT弹起,也不起作用,只是菜单栏上的快捷字母上出现了下划线,不会消失(因为ALT没弹起),但E键好像给吃掉了一样.... to ccrun:嗯,加上SetForegroundWindow(m_hWnd);这句,就成了前置窗口了,但我就是想让后台的记事本弹出那个菜单呀 -_- 还有别的说法吗?为什么窗口不前置就不能接收我的那些消息呢?
也许windows不让?
Richardw 2014-09-07
  • 打赏
  • 举报
回复
to songhtao:不发送ALT弹起,也不起作用,只是菜单栏上的快捷字母上出现了下划线,不会消失(因为ALT没弹起),但E键好像给吃掉了一样.... to ccrun:嗯,加上SetForegroundWindow(m_hWnd);这句,就成了前置窗口了,但我就是想让后台的记事本弹出那个菜单呀 -_- 还有别的说法吗?为什么窗口不前置就不能接收我的那些消息呢?
ccrun.com 2014-09-07
  • 打赏
  • 举报
回复
如果想向一个窗口发送 Alt + E 的组合键,可以这样:
HWND hWnd = ::FindWindow("Notepad", NULL);
if (hWnd)
{
    ::SetForegroundWindow(hWnd);
    ::SendMessage(hWnd, WM_SYSCOMMAND, SC_KEYMENU, (WPARAM)'E');
}
Richardw 2014-09-05
  • 打赏
  • 举报
回复
每条Post后面加了Sleep(100);,能够看清记事本的菜单快捷字符出现了下划线,但很快就取消了,就是说Post的Alt按下和弹起都起作用了...为什么发字母不行呀...
lhy 2014-09-05
  • 打赏
  • 举报
回复
要不然sleep一下?

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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