none
קבלת מקור הקיצור דרך ,עבור ווינדוס 7 ב vb.net RRS feed

  • שאלה

  • שלום אני כתבתי קוד שמאתר את מקור הקיצור דרך

    בווינדוס 10 זה עבד חלק אך בווינדוס 7 זה הביא לי שגיאה,

    בקוד שלי הוא כזה:

    Public Shared Function GetLnkTarget(lnkPath As String) As String
    
           Dim shl As Shell32.Shell = New Shell32.Shell()
            lnkPath = System.IO.Path.GetFullPath(lnkPath)
            Dim dir = shl.[NameSpace](System.IO.Path.GetDirectoryName(lnkPath))
            Dim itm = dir.Items().Item(System.IO.Path.GetFileName(lnkPath))
            Dim lnk = DirectCast(itm.GetLink, Shell32.ShellLinkObject)
            Return lnk.Target.Path
        End Function

    ראיתי שיש פתרון לבעיה ע"י הוספת הפונקציה הנ"ל:

       Public Shared Function GetShell32NameSpaceFolder(ByVal folder As Object) As Shell32.Folder
            Dim shellAppType As Type = Type.GetTypeFromProgID("Shell.Application")
            Dim shell As Object = Activator.CreateInstance(shellAppType)
            Return CType(shellAppType.InvokeMember("NameSpace", System.Reflection.BindingFlags.InvokeMethod, Nothing, shell, New Object() {folder}), Shell32.Folder)
        End Function

    אך לא הבנתי איפה צריך להפעיל אותה.

    תודה

    יום שני 12 פברואר 2018 08:14

תשובות

  • יש לי תשובה,

    ניתן להשתמש בקוד הבא:

    Private Function GetShortcutTarget(ByVal Shortcut As String) As String
    
    If Not Strings.Right(Shortcut, 4) = ".lnk" Then Return "Not a shortcut"
    
    Dim SH As New IWshRuntimeLibrary.WshShell
    
    Dim SC As IWshRuntimeLibrary.WshShortcut = CType(SH.CreateShortcut(Shortcut), IWshRuntimeLibrary.WshShortcut)
    
    GetShortcutTarget = SC.TargetPath
    
    SH = Nothing : SC = Nothing
    
    End Function
    תודה

    יום שני 12 פברואר 2018 10:42

כל התגובות

  • יש לי תשובה,

    ניתן להשתמש בקוד הבא:

    Private Function GetShortcutTarget(ByVal Shortcut As String) As String
    
    If Not Strings.Right(Shortcut, 4) = ".lnk" Then Return "Not a shortcut"
    
    Dim SH As New IWshRuntimeLibrary.WshShell
    
    Dim SC As IWshRuntimeLibrary.WshShortcut = CType(SH.CreateShortcut(Shortcut), IWshRuntimeLibrary.WshShortcut)
    
    GetShortcutTarget = SC.TargetPath
    
    SH = Nothing : SC = Nothing
    
    End Function
    תודה

    יום שני 12 פברואר 2018 10:42
  • תודה על פרסום התשובה :-)

    כנראה שלפעמים לשאול בפורום נותן מוטיבה למצוא את התשובה
    אני רואה שמצאת את התשובה מהר מאוד :-)


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]


    יום שני 12 פברואר 2018 20:48
    מנחה דיון