【问题标题】:How to make MS Access open hyperlinks in existing IE context如何使 MS Access 在现有 IE 上下文中打开超链接
【发布时间】:2011-05-15 16:21:33
【问题描述】:

我有一个 MS Access 2007 数据库,其中一个字段是指向需要身份验证的网站上 URL 的超链接。当从 MS Access 打开超链接时,Internet Explorer 要求用户在每次打开超链接时重新进行身份验证,即使用户已经登录了网站。

当从 MS Outlook 2007 或“开始”菜单中的“运行”对话框打开相同的超链接,并且用户已经登录到网站时,超链接会按预期打开,而不会强制用户重新进行身份验证。为什么 MS Access 2007 的行为与 MS Outlook 2007 不同,(以某种形式)我该如何解决这个问题?

【问题讨论】:

  • 不确定其相关性,但您在说什么类型的身份验证?例如基于会话 cookie 还是 Windows 身份验证?您可以使用进程资源管理器查看由 Access 生成的 IE 进程以及那些按您希望工作的进程,看看它们是否有任何不同(例如命令行参数)
  • 我的猜测是 Access 出于某种原因在 Web 服务器上启动了一个新会话,而 Outlook 没有。我无法解释为什么会这样。如果确实如此,则必须将相关网站编程为每次启动新会话时都需要登录。一些网站允许使用 cookie 保存登录信息,但显然这个不允许。

标签: internet-explorer ms-access


【解决方案1】:

我找到了解决方法。在数据库的 VBA 代码中,我添加了以下函数:

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
    ByVal hWnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long

Public Function OpenURL(theURL as String)
    ShellExecute Screen.ActiveForm.hWnd, "open", theURL, "", "", vbNormalFocus
End Function

在我的表单代码中,我只是按如下方式调用 OpenURL:

OpenURL HyperlinkPart(Me![URL], acFullAddress)

【讨论】:

  • 不幸的是,我认为这不是一个可接受的解决方案,因为它需要大量额外的努力才能使其表现得像一个超链接。我不明白为什么 Microsoft 让 Access 处理链接的方式与所有其他 Office 应用程序不同!
  • 我不会说它需要“很多”额外的努力,假设您在表单上显示超链接,您只需将文本框格式化为看起来像超链接并添加 OpenURL 调用OnClick 事件,之后它会照顾自己。您没有获得超链接的右键单击功能,但您何时真正需要这些功能?来自我的 +1。
猜你喜欢
  • 1970-01-01
  • 2015-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 2021-09-11
相关资源
最近更新 更多