Reading the target of a .lnk file in Python?

前端 未结 7 2051
悲&欢浪女
悲&欢浪女 2020-11-28 04:12

I\'m trying to read the target file/directory of a shortcut (.lnk) file from Python. Is there a headache-free way to do it? The .lnk spec [PDF] is way over my h

相关标签:
7条回答
  • 2020-11-28 05:06

    Basically call the Windows API directly. Here is a good example found after Googling:

    import os, sys
    import pythoncom
    from win32com.shell import shell, shellcon
    
    shortcut = pythoncom.CoCreateInstance (
      shell.CLSID_ShellLink,
      None,
      pythoncom.CLSCTX_INPROC_SERVER,
      shell.IID_IShellLink
    )
    desktop_path = shell.SHGetFolderPath (0, shellcon.CSIDL_DESKTOP, 0, 0)
    shortcut_path = os.path.join (desktop_path, "python.lnk")
    persist_file = shortcut.QueryInterface (pythoncom.IID_IPersistFile)
    persist_file.Load (shortcut_path)
    
    shortcut.SetDescription ("Updated Python %s" % sys.version)
    mydocs_path = shell.SHGetFolderPath (0, shellcon.CSIDL_PERSONAL, 0, 0)
    shortcut.SetWorkingDirectory (mydocs_path)
    
    persist_file.Save (shortcut_path, 0)
    

    This is from http://timgolden.me.uk/python/win32_how_do_i/create-a-shortcut.html.

    You can search for "python ishelllink" for other examples.

    Also, the API reference helps too: http://msdn.microsoft.com/en-us/library/bb774950(VS.85).aspx

    0 讨论(0)
提交回复
热议问题