[SHELL32] Implement 'Open file location' of shortcut files (#2028)

"Open file location" is a feature to open the location of the target of a shortcut file.
Ideally we should probably use SHOpenFolderAndSelectItems here, but that is not 100% implemented in ros yet... CORE-12770
This commit is contained in:
Katayama Hirofumi MZ 2019-11-12 16:47:36 +09:00 committed by GitHub
parent 23e575c1bc
commit c0f340bca5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
37 changed files with 101 additions and 15 deletions

View file

@ -51,16 +51,20 @@ public:
/* Link file formats */
#include "pshpack1.h"
struct volume_info
{
DWORD type;
DWORD serial;
WCHAR label[12]; /* assume 8.3 */
};
#include "poppack.h"
enum IDCMD
{
IDCMD_OPEN = 0,
IDCMD_OPENFILELOCATION
};
private:
/* Cached link header */
SHELL_LINK_HEADER m_Header;
@ -83,13 +87,13 @@ private:
LPDBLIST m_pDBList; /* Optional data block list (in the extra data section) */
BOOL m_bInInit; // in initialization or not
HICON m_hIcon;
UINT m_idCmdFirst;
/* Pointers to strings inside Logo3/Darwin info blocks, cached for debug info purposes only */
LPWSTR sProduct;
LPWSTR sComponent;
LPWSTR m_sLinkPath;
INT m_iIdOpen; /* ID of the "Open" entry in the context menu */
CComPtr<IUnknown> m_site;
CComPtr<IDropTarget> m_DropTarget;
@ -102,6 +106,9 @@ private:
HRESULT SetTargetFromPIDLOrPath(LPCITEMIDLIST pidl, LPCWSTR pszFile);
HICON CreateShortcutIcon(LPCWSTR wszIconPath, INT IconIndex);
HRESULT DoOpen(LPCMINVOKECOMMANDINFO lpici);
HRESULT DoOpenFileLocation();
public:
CShellLink();
~CShellLink();