据我所知,Windows没有提供API函数来告诉应用程序注册了一个全局热键(通过RegisterHotkey).我只能发现如果RegisterHotkey返回false,则注册了热键,但不是"拥有"热键的人.
在没有直接API的情况下,是否会有迂回的方式?Windows维护与每个注册热键相关联的句柄 - 这有点令人抓狂,因此无法获取此信息.
可能不起作用的示例:发送(模拟)已注册的热键,然后拦截Windows将发送给注册它的进程的热键消息.首先,我不认为拦截消息会显示目标窗口句柄.其次,即使有可能,这也是一件坏事,因为发送热键会触发各种程序中各种可能不需要的活动.
这并不重要,但我已经看到了对这种功能的频繁请求,并且我自己也是注册热键的应用程序的受害者,甚至没有在UI或文档中的任何地方公开它.
(在Delphi工作,只不过是WinAPI的学徒,请善待.)
根据快捷方式帮助(Alt+ Shift+ K)组合Ctrl+ Shift+ D应该运行文档例程.(这也是Hadley Wickhams的第5.1节"R包" http://runsheng.github.io/attachment/r-packages.pdf中所说的.)但是在我的RStudio设置中,它会使所选择的行复杂化(所以我不喜欢不相信这是一个全局使用问题,在这里得出答案:Visual Studio无法识别组合键.在https://support.rstudio.com/hc/en-us/community/posts/201819358-Ctrl-Shift-D-doesn-t-run-document-in-preview-release问题完全是靠一个人,但没有解决方案.我如何让RStudio做它应该做的事情?
我正在使用RStudio版本0.99.902并sessionInfo()给出:
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
locale:
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252
[3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C
[5] LC_TIME=German_Germany.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] hmi_0.1.0 roxygen2_5.0.1 coda_0.18-1 MASS_7.3-45 devtools_1.12.0
loaded via a namespace (and not attached):
[1] magrittr_1.5 tools_3.3.1 withr_1.0.2 rstudioapi_0.6 …Run Code Online (Sandbox Code Playgroud)