vb.net - 使用 ProcessCmdKey 捕获 F1 调用两个网页
问题描述
我正在使用 ProcessCmdKey 来捕获 F1 键,以便在浏览器中显示来自 Web 的适当帮助屏幕。除了浏览器显示两个网页,我的和微软的“我们如何帮助您?”之外,一切都按预期工作。页。
关键因素是我的代码是 Outlook 的 COM 插件。它启动一个表单,代码包含以下代码:
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
Select Case keyData
Case Keys.F1
ShowHelp()
Return True
Case Else
Return MyBase.ProcessCmdKey(msg, keyData)
End Select
Return True
End Function
在我看来,我的 ShowHelp 例程被正确调用,但 Windows 通过显示与 Office365 相关的页面继续处理 F1 键本身。无论我返回 True 还是 False,都会发生这种情况。
我错过了什么?
解决方案
感谢安迪的回复。如果我注释掉我的 ShowHelp 子程序,那么我仍然会得到 Microsoft 网页,尽管我没有得到我的网页。是的,如果从 DLL 运行加载项,我仍然可以获得 MS 网页 - 而不是在 VS 中。Microsoft Outlook 开发者论坛的一位 Outlook 专家表示,Outlook 不会接收外部 ProcessCmdKey 指令,唯一的方法是捕获较低级别的 Windows 消息。我已经选择了向我的表单添加帮助按钮的更简单的选项。– 迈克 VE
推荐阅读
- python - 如何在 Django 中输出 FilePathField 的完整路径?
- javascript - How to make moving text bounce off each other instead of overlapping in JS?
- ubuntu - java.lang.SecurityException: Could not lock User prefs. Lock file access denied
- php - PHP:尝试将 Twilio 响应 JSON 插入 MySQL TEXT 字段,但字符串被截断,可能在插入之前
- python - 如何删除然后打开一个文件以用 python 编写?
- gradle - Gradle (Kotlin DSL): "Unresolved reference: proguard"
- r - MVM with a numeric vector (not a matrix vector) and how to avoid double transposition?
- c# - 如何在不使用的情况下在 RabbitMQ 上实现 Dispose()。C#
- python-3.x - 如何将具有多个参数的函数应用于 Pandas 中的特定列?
- c# - 使用 Entity Framework 和 C# 查询以检查列是否可为空