ShellLinkObject.Resolve メソッド

ターゲットが移動または名前変更された場合でも、シェル リンクのターゲットを検索します。

構文

iRetVal = ShellLinkObject.Resolve(
  fFlags
)

パラメーター

fFlags [in]

型: 整数

実行するアクションを指定するフラグ。 これは、次の値の組み合わせになります。

(1)

リンクを解決できない場合は、ダイアログ ボックスを表示しません。 このフラグが設定されている場合、 fFlags の上位ワードはタイムアウト期間をミリ秒単位で指定します。 タイムアウト期間内にリンクを解決できない場合、 メソッドは を返します。 上位ワードが 0 に設定されている場合、タイムアウト期間の既定値は 3000 ミリ秒 (3 秒) です。

(4)

リンクが変更された場合は、そのパスと識別子の一覧を更新します。

(8)

リンク情報を更新しないでください。

(16)

検索ヒューリスティックは実行しないでください。

(32)

分散リンクの追跡は使用しないでください。

(64)

分散リンクの追跡を無効にします。 既定では、分散リンク追跡では、ボリューム名に基づいて複数のデバイス間でリムーバブル メディアが追跡されます。 また、UNC パスを使用して、ドライブ文字が変更されたリモート ファイル システムを追跡します。 このフラグを設定すると、両方の種類の追跡が無効になります。

(128)

Windows インストーラーを呼び出します。

解説

このメソッドは、 Resolve の機能で基本的に同じです。 リンク解決の詳細については、そのページの「解説」セクションを参照してください。

次の例は、JScript、VBScript、Visual Basic でこのメソッドを適切に使用する方法を示しています。

Jscript:

<script language="JScript">
    function fnShellLinkObjectResolveJ()
    {
        var objShell = new ActiveXObject("shell.application");
        var objFolder;
        var ssfPROGRAMS = 2;
        
        objFolder = objShell.NameSpace(ssfPROGRAMS);
        if (objFolder != null)
        {
            var objFolderItem;
            
            objFolderItem = objFolder.ParseName("Internet Explorer.lnk");
            if (objFolderItem != null)
            {
                var objShellLink;
                
                objShellLink = objFolderItem.GetLink;
                if (objShellLink != null)
                {
                    objShellLink.Resolve(1);
                }
            }
        }
    }
</script>

Vbscript:

<script language="VBScript">
    function fnShellLinkObjectResolveVB()
        dim objShell
        dim objFolder
        dim ssfPROGRAMS
        
        ssfPROGRAMS = 2
        set objShell = CreateObject("shell.application")
        set objFolder = objShell.NameSpace(ssfPROGRAMS)
            if (not objFolder is nothing) then
                dim objFolderItem
                
                set objFolderItem = objFolder.ParseName("Internet Explorer.lnk")
                    if (not objFolderItem is nothing) then
                        dim objShellLink
                        
                        set objShellLink = objFolderItem.GetLink
                            if (not objShellLink is nothing) then
                                objShellLink.Resolve(1)
                            end if
                        set objShellLink = nothing
                    end if
                set objFolderItem = nothing
            end if
        set objFolder = nothing
        set objShell = nothing
    end function
 </script>

Visual Basic:

Private Sub fnShellLinkObjectResolveVB()
    Dim objShell  As Shell
    Dim objFolder As Folder
    
    Set objShell = New Shell
    Set objFolder = objShell.NameSpace(ssfPROGRAMS)
        If (Not objFolder Is Nothing) Then
            Dim objFolderItem As FolderItem
            
            Set objFolderItem = objFolder.ParseName("Internet Explorer.lnk")
                If (Not objFolderItem Is Nothing) Then
                    Dim objShellLink As ShellLinkObject
                    
                    Set objShellLink = objFolderItem.GetLink
                        If (Not objShellLink Is Nothing) Then
                            objShellLink.Resolve (1)
                        End If
                    Set objShellLink = Nothing
                End If
            Set objFolderItem = Nothing
        End If
    Set objFolder = Nothing
    Set objShell = Nothing
End Sub

必要条件

要件
サポートされている最小のクライアント
Windows 2000 Professional sp3 [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Shldisp.h
IDL
Shldisp.idl
[DLL]
Shell32.dll (バージョン 5.0 以降)