将适当的“上一页”按键传递给当前关注的应用程序

时间:2011-12-15 15:00:54

标签: c# command

我正在开发一些可访问性工具,我希望能够发送具有“转到上一页”命令的应用程序。

I.E。,如果Windows资源管理器具有焦点,将Alt+Leftarrow传递给SendKeys.Send()函数,或者如果在Powerpoint演示文稿中,它将仅发送Leftarrow命令。

是否有这样的功能,或者我是否必须拥有常用应用程序列表并从中开始工作?

2 个答案:

答案 0 :(得分:1)

问题几乎与编辑器中的撤消/重做功能相同。你需要的是两个System.Collections.Generic.Stack<string>类型的堆栈。一个撤消堆栈用于保存先前访问过的页面和一个重做堆栈。它的工作原理如下:

用户访问第1页。

然后是第2页。现在按下撤销堆栈上的实际页面(第1页)。

用户访问第3页。现在按撤消堆栈上的实际页面(第2页)。

用户想要转到上一页。从撤消堆栈弹出一个页面(它将是第2页)并在重做堆栈上推送实际页面(第3页)。然后显示第2页。

如果用户想要前进而不是后退,那么反过来做:从重做弹出并推送到撤消。

如果用户导航到新页面,您还必须清除重做堆栈,因为从现在开始无法继续前进。

你也可以调用撤销堆栈“向后堆栈”和重做堆栈“转发堆栈”。

答案 1 :(得分:1)

与“标准”前向和后向命令最接近的可能是WM_APPCOMMAND,其中包含APPaOMMAND_BROWSER_BACKWARD或APPCOMMAND_BROWSER_FORWARD的lParam。

当然,它仍不能保证在每个应用程序中都能正常工作,但它应该适用于某些应用程序。