xiyulang
驱动牛犊
驱动牛犊
  • 注册日期2005-09-06
  • 最后登录2010-07-22
  • 粉丝1
  • 关注0
  • 积分7分
  • 威望111点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
阅读:1917回复:3

wince下按键驱动中怎么获取窗口当前选中项的句柄?

楼主#
更多 发布于:2006-12-31 17:07
  自己用GPIO做了的键盘,模拟标准键盘的上下左右,wince下用

PostMessage(hWndFrgd, WM_KEYDOWN, VK_DOWN, 0);

PostMessage(hWndFrgd, WM_KEYUP, VK_DOWN, 0);

往上层发消息,其中hWndFrgd是通过HWND hWndFrgd = GetForegroundWindow();获取当前窗口的句柄,但是选中窗口里的项目(如下拉菜单)按键无响应,消息已经收到的,可能是获取句柄的函数不正确,请问怎么获取窗口当前选中项的句柄?
zhengshijie
驱动小牛
驱动小牛
  • 注册日期2003-07-11
  • 最后登录2009-03-18
  • 粉丝1
  • 关注0
  • 积分8分
  • 威望217点
  • 贡献值0点
  • 好评度199点
  • 原创分3分
  • 专家分0分
沙发#
发布于:2007-01-04 12:13
hWnd
[in] Handle to the window whose window procedure is to receive the message. Two values have special meanings. Value Description
HWND_BROADCAST The message is posted to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows. The message is not posted to child windows.
试一下PostMessages(HWND_BROADCAST,......);
xiyulang
驱动牛犊
驱动牛犊
  • 注册日期2005-09-06
  • 最后登录2010-07-22
  • 粉丝1
  • 关注0
  • 积分7分
  • 威望111点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-01-06 08:39
谢谢zhengshijie兄,用HWND_BROADCAST试了一下,在窗口的菜单栏可以按键可以作相应的操作,但因为是广播的方式,会出现多个菜单或窗口都有响应,而且像桌面上的图标还是没有像标准键盘的方向键那样选择项目,在文本框中也没有实现按键输入字母。
zhoumc
驱动牛犊
驱动牛犊
  • 注册日期2006-07-13
  • 最后登录2008-11-25
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望88点
  • 贡献值0点
  • 好评度80点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-01-06 09:51
请用keybd_event发送键盘事件,不需要关心最上层窗口是谁,系统会自动发给当前的焦点窗口
按下发送:keybd_event( VK_LEFT, 75,  KEYEVENTF_SILENT, 0 );

松开发送:keybd_event( VK_LEFT, 75,  KEYEVENTF_SILENT | KEYEVENTF_KEYUP, 0 );
游客

返回顶部