我正在开发一些可访问性工具,我希望能够发送具有“转到上一页”命令的应用程序。
I.E。,如果Windows资源管理器具有焦点,将Alt+Leftarrow
传递给SendKeys.Send()
函数,或者如果在Powerpoint演示文稿中,它将仅发送Leftarrow
命令。
是否有这样的功能,或者我是否必须拥有常用应用程序列表并从中开始工作?
答案 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。
当然,它仍不能保证在每个应用程序中都能正常工作,但它应该适用于某些应用程序。