Visual Basic 使用默认浏览器打开 URL

Posted

技术标签:

【中文标题】Visual Basic 使用默认浏览器打开 URL【英文标题】:Visual Basic Open URL with Default Browser 【发布时间】:2011-05-30 15:59:47 【问题描述】:

编辑

对于 VB 6

结束编辑

嘿,这似乎应该是一个简单的解决方法,而且我不是特别喜欢 Visual Basic 语言,但是如何使用代码在默认 Web 浏览器中打开 URL?

编辑 为什么我不断收到此错误?

对 PInvoke 函数 'CrackleMail!WindowsApplication1.FormFinal::ShellExecute' 的调用具有 堆栈不平衡。这可能是因为托管的 PInvoke 签名与 非托管目标签名。检查 PInvoke 的调用约定和参数 签名匹配目标非托管签名。

【问题讨论】:

我更新了我的帖子以更正函数签名 看起来 op 使用了已接受答案的 vb6 部分。相应地更新标签。 【参考方案1】:
Option Explicit

'Link the kernel method that allows a process to be open/spawn

Private 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

Private Sub mnuAbrirNavegador_Click(Index As Integer)
    OpenUrl("http://www.microsoft.com")
End Sub

Private Sub OpenUrl(ByVal url As String)
    r = ShellExecute(0, "open", url, 0, 0, 1)
End Sub

【讨论】:

【参考方案2】:

很简单! 只需使用 Wscript createobject 方法

CreateObject("Wscript.Shell").Run "www.example.com"

【讨论】:

【参考方案3】:

VB.NET:

System.Diagnostics.Process.Start("http://example.com")

VB 6(不确定):

Declare Function ShellExecuteA Lib "shell32.dll" ( _
    ByVal hWnd As IntPtr, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Integer) As IntPtr

ShellExecuteA(Me.Handle, "open", "http://example.com", "", "", 4)

【讨论】:

我认为您不必使用别名。 @Shimmy:我在 VB5/6 中所知道的一切我肯定都忘记了,所以请随时编辑我的答案或发布您自己的答案 :) 其实我从来不知道VB6,但是在VB.NET,AFAIK中,当你使用Declare时,在这种情况下你不需要Alias 感谢将 ShellExecute(Me.Handle... 改为 ShellExecuteA(Me.Handle 上面的声明给出了一个编译错误“未定义用户定义的类型”。我已经在另一个可以正常工作的答案中发布了来自 MSDN 的代码【参考方案4】:

接受的答案中的代码给我一个编译错误 我从 MSDN Use ShellExecute to launch the default Web browser 得到了下面的代码

Private 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

Private Sub Command1_Click()
   Dim r As Long
   r = ShellExecute(0, "open", "http://www.microsoft.com", 0, 0, 1)
End Sub

【讨论】:

以上是关于Visual Basic 使用默认浏览器打开 URL的主要内容,如果未能解决你的问题,请参考以下文章

作为计划任务运行 Visual Basic 脚本询问我要如何打开文件

在 Visual Basic 表单中打开 URL

双击ActiveX控件时如何禁用Visual Basic对话框

office 2010 提示“不信任到visual basic project“问题处理

Visual Basic 19 - WebView2 - 自动单击网页按钮

Visual Studio 2015自定义安装不包括Visual Basic?