2

このコード (MSDN から) を使用して、既定のブラウザーを開きました。

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

インスタンスがすでに開いている場合にのみ、IE と chrome で正常に動作し、タブを広告して、要求されたページを返します。

インスタンスがまだ開いていない場合は、新しいインスタンスが作成されますが、ページは読み込まれず、最終的にタイムアウトになります。

どちらのシナリオでも、Firefox だけが正常に動作するようです。

次に、以下のシェル呼び出しのいずれかを使用して、関連するアプリケーションをビューで検索するために一時 htm ファイルを作成するテクニック (詳細はこちら) を試しました。

Shell "C:\Program Files\Internet Explorer\iexplore.exe https://www.google.co.uk/", vbNormalFocus

 Shell "C:\Program Files\Mozilla Firefox\firefox.exe https://www.google.co.uk/", vbNormalFocus

 Shell "C:\Users\Kjack\AppData\Local\Google\Chrome\Application\chrome.exe https://www.google.co.uk/", vbNormalFocus

今回は FF と IE の両方が機能しましたが、chrome にはまだ同じ問題がありました。

誰もこれに対する解決策を知っていますか?

編集して、OS とブラウザのバージョンに関する詳細を追加します。

OS:Windows Vista Home Basic 32ビット

ファイアフォックス 20.0.1

IE 9.0.8112.16421

Opera 12.15 ビルド 1748

クロム 26.0.1410.64 m

4

3 に答える 3

7

Win2k & Me が登場して以来、このためのクリーンな COM ベースのインターフェイスも用意されています。回転なしで Unicode サポートを提供します。

Shell.ShellExecute メソッド

    With CreateObject("Shell.Application")
        .ShellExecute "http://www.microsoft.com"
    End With

この例では、すべてのオプション パラメータ (動詞を含む) をデフォルトに設定しています。ケン・ホワイトの回答ですでに指摘したように、この場合、動詞をデフォルトにする必要があります。

于 2013-04-19T05:46:47.200 に答える
2

openあなたのコードは、プロトコルに動詞が割り当てられていることを前提とhttp:しており、ブラウザのインス​​トールによるものであるという保証はありません。

代わりに、動詞を空のままにします。いずれかを指定しない場合、Windows は、プロトコルまたはファイルの関連付けに対して既定のアクションが何であれ使用します。

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

ヒント: Windows エクスプローラーでファイルを右クリックすると、ファイルの既定のアクションを確認できます。デフォルトのアクションは、太字で表示されているコンテキスト メニューの上部にあります。

于 2013-04-19T01:44:26.630 に答える
1

これにより、ハングせずにデフォルトのブラウザー (Chrome など) が開きます。

VB6:

Call Shell("explorer """ & sURL & """", vbNormalFocus)

またはこれを試してください:

Dim objShell As Object
Set objShell = CreateObject("WScript.Shell")
Call objShell.Run("explorer """ & sURL & """", vbNormalFocus)
于 2014-07-07T19:55:09.010 に答える