152 #define ICON_LINK_WINDOWS_COMPAT 154 #define SHLINK_LOCAL 0 155 #define SHLINK_REMOTE 1 159 #include "pshpack1.h" 290 TRACE(
"-- destroying IShellLink(%p)\n",
this);
307 TRACE(
"%p %p\n",
this, pclsid);
311 *pclsid = CLSID_ShellLink;
320 TRACE(
"(%p)\n",
this);
341 TRACE(
"-- returning hr %08x\n",
hr);
395 *ppszFileName =
NULL;
479 TRACE(
"ret = %d type %d serial %08x name %s\n", bRet,
489 unsigned char data[1];
584 TRACE(
"type %d serial %08x name %s path %s\n",
volume->type,
618 ERR(
"Ooops. This structure is not as expected...\n");
633 TRACE(
"%p %p\n",
this, stm);
641 ULONG dwBytesRead = 0;
646 if (dwBytesRead !=
sizeof(
m_Header))
751 #if (NTDDI_VERSION < NTDDI_LONGHORN) 833 DWORD volume_info_size =
sizeof(*vol) + label_size;
834 DWORD final_path_size = 1;
835 DWORD total_size =
sizeof(*loc) + volume_info_size + path_size + final_path_size;
851 loc->
dwFinalPathOfs =
sizeof(*loc) + volume_info_size + path_size;
854 vol->
dwSize = volume_info_size;
880 TRACE(
"%p %p %x\n",
this, stm, fClearDirty);
892 #if (NTDDI_VERSION < NTDDI_LONGHORN) 923 ERR(
"Write failed\n");
934 ERR(
"Failed to write PIDL\n");
1004 TRACE(
"(%p)\n",
this);
1022 if (!
path || !psPath)
1025 if (!*psPath && sPathRel)
1060 wcscpy(abs_path, sPathRel);
1076 TRACE(
"(%p)->(pfile=%p len=%u find_data=%p flags=%u)(%s)\n",
1085 hr =
GetPath(pszFileW, cchMaxPath, &wfd, fFlags);
1112 pfd->cAlternateFileName,
sizeof(
pfd->cAlternateFileName),
NULL,
NULL);
1121 TRACE(
"(%p)->(ppidl=%p)\n",
this, ppidl);
1135 TRACE(
"(%p)->(pidl=%p)\n",
this, pidl);
1141 TRACE(
"(%p)->(%p len=%u)\n",
this, pszName, cchMaxName);
1155 TRACE(
"(%p)->(pName=%s)\n",
this, pszName);
1173 TRACE(
"(%p)->(%p len=%u)\n",
this,
pszDir, cchMaxPath);
1205 TRACE(
"(%p)->(%p len=%u)\n",
this, pszArgs, cchMaxPath);
1219 TRACE(
"(%p)->(args=%s)\n",
this, pszArgs);
1244 TRACE(
"(%p)->(hotkey=%x)\n",
this, wHotkey);
1261 TRACE(
"(%p) %d\n",
this, iShowCmd);
1274 TRACE(
"(%p)->(%p len=%u iicon=%p)\n",
this, pszIconPath, cchIconPath, piIcon);
1286 pszIconPath, cchIconPath,
NULL,
NULL);
1299 TRACE(
"(%p)->(%u %p len=%u piIndex=%p pwFlags=%p)\n",
this,
uFlags, pszIconFile,
cchMax, piIndex, pwFlags);
1321 TRACE(
"(%p)->(path=%s iicon=%u)\n",
this, pszFile, nIconIndex);
1341 TRACE(
"(%p)->(path=%s iicon=%u)\n",
this, pszIconPath, iIcon);
1403 TRACE(
"(%p)->(hwnd=%p flags=%x)\n",
this,
hwnd, fFlags);
1409 #if (NTDDI_VERSION < NTDDI_LONGHORN) 1413 FIXME(
"Logo3 links are not supported yet!\n");
1469 TRACE(
"(%p)->(path=%s)\n",
this, pszFile);
1488 TRACE(
"(%p)->(pfile=%p len=%u find_data=%p flags=%u)(%s)\n",
1524 pfd->nFileSizeHigh = 0;
1549 if (pInfo && (pInfo->
cbSize ==
sizeof(*pInfo)))
1556 if (fFlags)
FIXME(
"(%p): Unsupported flags %lu\n",
this, fFlags);
1567 TRACE(
"(%p)->(%p len=%u)\n",
this, pszName, cchMaxName);
1596 TRACE(
"(%p)->(%p len %u)\n",
this,
pszDir, cchMaxPath);
1627 TRACE(
"(%p)->(%p len=%u)\n",
this, pszArgs, cchMaxPath);
1658 TRACE(
"(%p)->(%p len=%u iicon=%p)\n",
this, pszIconPath, cchIconPath, piIcon);
1673 if (pInfo && (pInfo->
cbSize ==
sizeof(*pInfo)))
1713 hr = pei->GetIconLocation(
uFlags, pszIconFile,
cchMax, piIndex, pwFlags);
1734 if (
uFlags & GIL_FORSHORTCUT)
1742 uFlags |= GIL_FORSHORTCUT;
1744 if (
uFlags & GIL_DEFAULTICON)
1754 *pwFlags = GIL_NOTFILENAME | GIL_PERCLASS;
1768 *phiconLarge =
NULL;
1771 if (*phiconLarge ==
NULL)
1777 *phiconSmall =
NULL;
1780 if (*phiconSmall ==
NULL)
1786 if (phiconLarge && *phiconLarge)
1789 *phiconLarge =
NULL;
1791 if (phiconSmall && *phiconSmall)
1794 *phiconSmall =
NULL;
1803 BOOL PathFullyUnExpandEnvStringsW(
1813 while (*pszPath && cchBuf > 0)
1822 p = pszPath +
wcslen(pszPath);
1826 if (
p - pszPath >= cchBuf)
1830 wcsncpy(pszBuf, pszPath,
p - pszPath);
1831 pszBuf[
p - pszPath] =
L'\0';
1834 cchBuf -= (
p - pszPath);
1835 pszBuf += (
p - pszPath);
1836 pszPath += (
p - pszPath);
1854 p = pszPath +
wcslen(pszPath);
1856 while ((*
p == *
q) && (
p > pszPath) && (
q > pszBuf))
1864 cchBuf -= (
q - pszBuf);
1881 TRACE(
"(%p)->(path=%s iicon=%u)\n",
this,
debugstr_w(pszIconPath), iIcon);
1895 #ifdef ICON_LINK_WINDOWS_COMPAT 1909 if (
wcscmp(pszIconPath, szIconPath) != 0)
1919 #ifdef ICON_LINK_WINDOWS_COMPAT 1921 LPCWSTR pszOrgIconPath = pszIconPath;
1922 pszIconPath = szIconPath;
1928 if (pInfo->
cbSize !=
sizeof(*pInfo))
1930 ERR(
"Ooops. This structure is not as expected...\n");
1958 #ifdef ICON_LINK_WINDOWS_COMPAT 1960 pszIconPath = pszOrgIconPath;
1963 pszIconPath = szIconPath;
1979 #ifdef ICON_LINK_WINDOWS_COMPAT 2046 && (dwSig != EXP_LOGO3_ID_SIG)
2060 if (pInfo->
dbh.
cbSize !=
sizeof(*pInfo))
2062 ERR(
"Ooops. This structure is not as expected...\n");
2067 #if (NTDDI_VERSION < NTDDI_LONGHORN) 2068 else if (dwSig == EXP_LOGO3_ID_SIG)
2082 buffer.dbh.dwSignature = dwSig;
2096 #if (NTDDI_VERSION < NTDDI_LONGHORN) 2097 else if (dwSig == EXP_LOGO3_ID_SIG)
2118 if (
str[0] !=
':' ||
str[1] !=
':')
2167 #if (NTDDI_VERSION < NTDDI_LONGHORN) 2180 #if (NTDDI_VERSION < NTDDI_LONGHORN) 2199 if (pidl && pszFile)
2288 if (pszFile[0] ==
L'"' && pszFile[
len-1] ==
L'"')
2340 if (pInfo->
cbSize !=
sizeof(*pInfo))
2342 ERR(
"Ooops. This structure is not as expected...\n");
2411 TRACE(
"%p %08x %p\n",
this, dwSig, ppDataBlock);
2413 *ppDataBlock =
NULL;
2418 ERR(
"unknown datablock %08x (not found)\n", dwSig);
2428 *ppDataBlock = pDataBlock;
2444 TRACE(
"%p %p\n",
this, pdwFlags);
2468 TRACE(
"%p %p %p %p\n",
this, pidlFolder, pdtobj, hkeyProgID);
2476 format.dwAspect = DVASPECT_CONTENT;
2478 format.tymed = TYMED_HGLOBAL;
2509 TRACE(
"%p %p %u %u %u %u\n",
this,
2510 hMenu, indexMenu, idCmdFirst, idCmdLast,
uFlags);
2520 mii.
cbSize =
sizeof(mii);
2524 mii.
wID = idCmdFirst +
id++;
2533 mii.
wID = idCmdFirst +
id++;
2554 ERR(
"ret: %08lX\n",
ret);
2563 TRACE(
"%p %p\n",
this, lpici);
2575 TRACE(
"failed to resolve component with error 0x%08x\n",
hr);
2580 TRACE(
"idCmd: %d\n", idCmd);
2600 (lpici->
fMask & CMIC_MASK_UNICODE) )
2627 sei.
cbSize =
sizeof(sei);
2654 FIXME(
"%p %lu %u %p %p %u\n",
this, idCmd, uType, pwReserved, pszName,
cchMax);
2710 ERR(
"SHGetFileInfoW failed for %ls (%lu)\n", lpcwFullPath,
GetLastError());
2721 size_t cchRemaining = 0;
2738 TRACE(
"CShellLink::OnInitDialog(hwnd %p hwndFocus %p lParam %p)\n", hwndDlg, hwndFocus,
lParam);
2898 if (unquoted[0] ==
'"' && unquoted[
wcslen(unquoted) - 1] ==
'"')
2963 pThis = reinterpret_cast<CShellLink *>(ppsp->
lParam);
2975 pThis->OnDestroy(hwndDlg);
2994 ERR(
"failed to create property sheet page\n");
2998 if (!pfnAddPage(hPage,
lParam))
3006 TRACE(
"(%p) (uPageID %u, pfnReplacePage %p lParam %p\n",
this, uPageID, pfnReplacePage,
lParam);
3012 TRACE(
"%p %p\n",
this, punk);
3026 return m_site->QueryInterface(iid, ppvSite);
3032 TRACE(
"(%p)->(DataObject=%p)\n",
this, pDataObject);
3060 TRACE(
"(%p)\n",
this);
3069 TRACE(
"(%p)\n",
this);
3083 TRACE(
"(%p)\n",
this);
3105 return ppf->QueryInterface(
riid,
ppv);
struct EXP_SZ_LINK * LPEXP_SZ_LINK
virtual HRESULT STDMETHODCALLTYPE QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
static LPWSTR __inline HEAP_strdupAtoW(HANDLE heap, DWORD flags, LPCSTR str)
void OnDestroy(HWND hwndDlg)
static HRESULT Stream_ReadChunk(IStream *stm, LPVOID *data)
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
BOOL WINAPI PathRemoveFileSpecW(LPWSTR lpszPath)
void WINAPI ILFree(LPITEMIDLIST pidl)
#define IDC_SHORTCUT_TYPE_EDIT
static HRESULT SHELL_PidlGetIconLocationW(PCIDLIST_ABSOLUTE pidl, UINT uFlags, PWSTR pszIconFile, UINT cchMax, int *piIndex, UINT *pwFlags)
virtual HRESULT STDMETHODCALLTYPE IsDirty()
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
#define IDC_SHORTCUT_TARGET_TEXT
BITMAPINFOHEADER bmiHeader
static HRESULT Stream_LoadLocation(IStream *stm, CShellLink::volume_info *volume, LPWSTR *path)
#define WideCharToMultiByte
void WINAPI PathRemoveArgsW(LPWSTR lpszPath)
#define STG_E_INVALIDPOINTER
virtual HRESULT STDMETHODCALLTYPE SetFlags(DWORD dwFlags)
#define STGM_SHARE_EXCLUSIVE
virtual HRESULT STDMETHODCALLTYPE SaveCompleted(LPCOLESTR pszFileName)
static HRESULT Stream_LoadString(IStream *stm, BOOL unicode, LPWSTR *pstr)
virtual HRESULT STDMETHODCALLTYPE AddDataBlock(void *pDataBlock)
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
struct _PSHNOTIFY * LPPSHNOTIFY
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *punk)
BOOL WINAPI DestroyIcon(_In_ HICON)
#define UNREFERENCED_PARAMETER(P)
GLsizei const GLchar ** path
#define IDD_SHORTCUT_EXTENDED_PROPERTIES
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
virtual HRESULT STDMETHODCALLTYPE DragOver(DWORD dwKeyState, POINTL pt, DWORD *pdwEffect)
virtual HRESULT STDMETHODCALLTYPE DragEnter(IDataObject *pDataObject, DWORD dwKeyState, POINTL pt, DWORD *pdwEffect)
#define IDS_OPENFILELOCATION
struct tagBITMAPINFOHEADER BITMAPINFOHEADER
virtual HRESULT STDMETHODCALLTYPE Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID)
#define LOCALE_USER_DEFAULT
virtual HRESULT STDMETHODCALLTYPE GetIconLocation(LPSTR pszIconPath, INT cchIconPath, INT *piIcon)
#define IDC_SHORTCUT_ICON
GLuint GLuint GLsizei count
static INT_PTR CALLBACK SH_ShellLinkDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
LRESULT OnNotify(HWND hwndDlg, int idFrom, LPNMHDR pnmhdr)
virtual HRESULT STDMETHODCALLTYPE Extract(PCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize)
EXTERN_C HRESULT WINAPI SHOpenFolderAndSelectItems(PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD dwFlags)
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
HRESULT DoOpen(LPCMINVOKECOMMANDINFO lpici)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HRESULT GetData([in, unique] FORMATETC *pformatetcIn, [out] STGMEDIUM *pmedium)
#define SEE_MASK_HASLINKNAME
DWORD WINAPI GetLastError(VOID)
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
BOOL(CALLBACK * LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE, LPARAM)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
virtual HRESULT STDMETHODCALLTYPE GetCurFile(LPOLESTR *ppszFileName)
static LPWSTR __inline strdupW(LPCWSTR src)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
DWORD dwNetworkVolTableOfs
virtual HRESULT STDMETHODCALLTYPE GetPath(LPSTR pszFile, INT cchMaxPath, WIN32_FIND_DATAA *pfd, DWORD fFlags)
HRESULT WINAPI SHReadDataBlockList(IStream *lpStream, LPDBLIST *lppList)
#define IDC_SHORTCUT_CHANGE_ICON
virtual HRESULT STDMETHODCALLTYPE SetPath(LPCSTR pszFile)
DWORD WINAPI CommandLineFromMsiDescriptor(WCHAR *szDescriptor, WCHAR *szCommandLine, DWORD *pcchCommandLine)
WCHAR szwTarget[MAX_PATH]
virtual HRESULT STDMETHODCALLTYPE GetHotkey(WORD *pwHotkey)
#define IID_PPV_ARG(Itype, ppType)
const GUID SHELL32_AdvtShortcutComponent
virtual HRESULT STDMETHODCALLTYPE DragLeave()
DWORD WINAPI GetSysColor(_In_ int)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
HICON CreateShortcutIcon(LPCWSTR wszIconPath, INT IconIndex)
#define PRF_TRYPROGRAMEXTENSIONS
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
static LPWSTR GetAdvertisedArg(LPCWSTR str)
HRESULT WINAPI ILSaveToStream(IStream *pStream, LPCITEMIDLIST pPidl)
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
virtual HRESULT STDMETHODCALLTYPE GetCommandString(UINT_PTR idCmd, UINT uType, UINT *pwReserved, LPSTR pszName, UINT cchMax)
#define IDC_SHORTCUT_LOCATION_EDIT
STRSAFEAPI StringCchPrintfExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCWSTR pszFormat,...)
#define IDC_SHORTEX_RUN_DIFFERENT
const DWORD DROPEFFECT_NONE
#define EXP_DARWIN_ID_SIG
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
virtual HRESULT STDMETHODCALLTYPE SetDescription(LPCSTR pszName)
virtual HRESULT STDMETHODCALLTYPE GetArguments(LPSTR pszArgs, INT cchMaxPath)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
BOOL WINAPI PickIconDlg(HWND hWndOwner, LPWSTR lpstrFile, UINT nMaxFile, INT *lpdwIconIndex)
UINT WINAPI ExtractIconExW(LPCWSTR lpszFile, INT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons)
virtual HRESULT STDMETHODCALLTYPE GetIDList(PIDLIST_ABSOLUTE *ppidl)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
BOOL WINAPI SHAddDataBlock(LPDBLIST *lppList, const DATABLOCK_HEADER *lpNewItem)
struct _PSP * HPROPSHEETPAGE
virtual HRESULT STDMETHODCALLTYPE SetWorkingDirectory(LPCSTR pszDir)
virtual HRESULT STDMETHODCALLTYPE Load(LPCOLESTR pszFileName, DWORD dwMode)
GLenum GLuint GLenum GLsizei length
BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR path, LPWSTR buffer, UINT buf_len)
WORD WORD PSZ PSZ pszFileName
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
WINE_DEFAULT_DEBUG_CHANNEL(shell)
#define IDC_SHORTCUT_COMMENT_EDIT
_Out_opt_ int _Out_opt_ int * cy
BOOL WINAPI PathIsFileSpecW(LPCWSTR lpszPath)
HRESULT SetAdvertiseInfo(LPCWSTR str)
#define PSNRET_INVALID_NOCHANGEPAGE
struct _PROPSHEETPAGEW * LPPROPSHEETPAGEW
static BOOL SHELL_ExistsFileW(LPCWSTR path)
struct EXP_DARWIN_LINK * LPEXP_DARWIN_LINK
STRSAFEAPI StringCbPrintfW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszFormat,...)
virtual HRESULT STDMETHODCALLTYPE Save(LPCOLESTR pszFileName, BOOL fRemember)
#define SEE_MASK_FLAG_NO_UI
const GUID SHELL32_AdvtShortcutProduct
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
LPWSTR WINAPI PathFindFileNameW(LPCWSTR lpszPath)
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
HRESULT WriteAdvertiseInfo(LPCWSTR string, DWORD dwSig)
BOOL ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR path, DWORD type)
BOOL WINAPI PathResolveW(_Inout_ LPWSTR path, _Inout_opt_ LPCWSTR *dirs, _In_ DWORD flags)
#define MAKE_HRESULT(sev, fac, code)
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
static HRESULT Stream_WriteLocationInfo(IStream *stm, LPCWSTR path, CShellLink::volume_info *volume)
#define IDI_SHELL_SHORTCUT
HRESULT WINAPI SHAutoComplete(HWND hwndEdit, DWORD dwFlags)
BOOL OnInitDialog(HWND hwndDlg, HWND hwndFocus, LPARAM lParam)
virtual HRESULT STDMETHODCALLTYPE Resolve(HWND hwnd, DWORD fFlags)
virtual HRESULT STDMETHODCALLTYPE SetHotkey(WORD wHotkey)
#define IID_NULL_PPV_ARG(Itype, ppType)
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
LPITEMIDLIST WINAPI SHSimpleIDListFromPathW(LPCWSTR lpszPath)
DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR path, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT sizeofpsfi, UINT flags)
BOOL WINAPI DrawIconEx(_In_ HDC, _In_ int, _In_ int, _In_ HICON, _In_ int, _In_ int, _In_ UINT, _In_opt_ HBRUSH, _In_ UINT)
CComPtr< IUnknown > m_site
HICON WINAPI ImageList_GetIcon(HIMAGELIST himl, INT i, UINT fStyle)
#define PropSheet_Changed(d, w)
HRESULT WINAPI IShellLink_ConstructFromPath(WCHAR *path, REFIID riid, LPVOID *ppv)
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize)
#define PathRemoveBackslash
DWORD WINAPI GetShortPathNameW(IN LPCWSTR lpszLongPath, OUT LPWSTR lpszShortPath, IN DWORD cchBuffer)
#define FAILED_UNEXPECTEDLY(hr)
WCHAR szwDarwinID[MAX_PATH]
UINT WINAPI PrivateExtractIconsW(_In_reads_(MAX_PATH) LPCWSTR szFileName, _In_ int nIconIndex, _In_ int cxIcon, _In_ int cyIcon, _Out_writes_opt_(nIcons) HICON *phicon, _Out_writes_opt_(nIcons) UINT *piconid, _In_ UINT nIcons, _In_ UINT flags)
#define STDMETHODCALLTYPE
DATABLOCK_HEADER *WINAPI SHFindDataBlock(LPDBLIST lpList, DWORD dwSignature)
int WINAPI GetSystemMetrics(_In_ int)
DWORD WINAPI SHExpandEnvironmentStringsW(LPCWSTR, LPWSTR, DWORD)
static LPWSTR shelllink_get_msi_component_path(LPWSTR component)
GLdouble GLdouble GLdouble GLdouble q
virtual HRESULT STDMETHODCALLTYPE GetFlags(DWORD *pdwFlags)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
unsigned __int3264 UINT_PTR
#define INVALID_FILE_ATTRIBUTES
virtual HRESULT STDMETHODCALLTYPE GetDescription(LPSTR pszName, INT cchMaxName)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
#define SHGFI_USEFILEATTRIBUTES
CHAR szDarwinID[MAX_PATH]
#define IDD_SHORTCUT_PROPERTIES
virtual HRESULT STDMETHODCALLTYPE ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE pfnReplacePage, LPARAM lParam)
static const WCHAR IconIndex[]
virtual HRESULT STDMETHODCALLTYPE SetArguments(LPCSTR pszArgs)
static PIXELFORMATDESCRIPTOR pfd
HINSTANCE WINAPI FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult)
EXTERN_C void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2)
HRESULT WINAPI ILLoadFromStream(IStream *pStream, LPITEMIDLIST *ppPidl)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static __inline const char * debugstr_an(const char *s, int n)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
virtual HRESULT STDMETHODCALLTYPE SetIDList(PCIDLIST_ABSOLUTE pidl)
#define memcpy(s1, s2, n)
static LPWSTR Stream_LoadPath(LPCSTR p, DWORD maxlen)
HRESULT WINAPI SHWriteDataBlockList(IStream *lpStream, LPDBLIST lpList)
static HRESULT Stream_WriteString(IStream *stm, LPCWSTR str)
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
virtual HRESULT STDMETHODCALLTYPE GetWorkingDirectory(LPSTR pszDir, INT cchMaxPath)
virtual HRESULT STDMETHODCALLTYPE SetIconLocation(LPCSTR pszIconPath, INT iIcon)
STRSAFEAPI StringCchCopyExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
#define IDC_SHORTCUT_FIND
virtual HRESULT STDMETHODCALLTYPE RemoveDataBlock(DWORD dwSig)
BOOL WINAPI GetVolumeInformationW(IN LPCWSTR lpRootPathName, IN LPWSTR lpVolumeNameBuffer, IN DWORD nVolumeNameSize, OUT LPDWORD lpVolumeSerialNumber OPTIONAL, OUT LPDWORD lpMaximumComponentLength OPTIONAL, OUT LPDWORD lpFileSystemFlags OPTIONAL, OUT LPWSTR lpFileSystemNameBuffer OPTIONAL, IN DWORD nFileSystemNameSize)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
HWND WINAPI GetParent(_In_ HWND)
virtual HRESULT STDMETHODCALLTYPE GetShowCmd(INT *piShowCmd)
void OnCommand(HWND hwndDlg, int id, HWND hwndCtl, UINT codeNotify)
CComPtr< IDropTarget > m_DropTarget
#define shell32_hInstance
_CRTIMP wchar_t *__cdecl wcsncpy(wchar_t *_Dest, const wchar_t *_Source, size_t _Count)
#define IDC_SHORTCUT_ADVANCED
BOOL WINAPI DeleteDC(_In_ HDC)
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
BOOL WINAPI SHRemoveDataBlock(LPDBLIST *lppList, DWORD dwSignature)
static const WCHAR szGuid[]
void shell(int argc, const char *argv[])
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
HBITMAP WINAPI CreateDIBSection(HDC hDC, CONST BITMAPINFO *BitmapInfo, UINT Usage, VOID **Bits, HANDLE hSection, DWORD dwOffset)
void pdump(LPCITEMIDLIST pidl)
LPWSTR WINAPI PathGetArgsW(LPCWSTR lpszPath)
static BOOL ShellLink_GetVolumeInfo(LPCWSTR path, CShellLink::volume_info *volume)
INT_PTR CALLBACK ExtendedShortcutProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define FIELD_OFFSET(t, f)
_Check_return_ _CRTIMP _CONST_RETURN wchar_t *__cdecl wcspbrk(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_Control)
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
VOID WINAPI PathUnquoteSpacesW(LPWSTR lpszPath)
BOOL WINAPI InsertMenuItemW(_In_ HMENU, _In_ UINT, _In_ BOOL, _In_ LPCMENUITEMINFOW)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
VOID WINAPI SHFreeDataBlockList(LPDBLIST lpList)
static HRESULT ShellLink_UpdatePath(LPCWSTR sPathRel, LPCWSTR path, LPCWSTR sWorkDir, LPWSTR *psPath)
virtual HRESULT STDMETHODCALLTYPE AddPages(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam)
static BOOL Stream_LoadVolume(LOCAL_VOLUME_INFO *vol, CShellLink::volume_info *volume)
#define IDC_SHORTCUT_START_IN_EDIT
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
HRESULT GetAdvertiseInfo(LPWSTR *str, DWORD dwSig)
#define MultiByteToWideChar
HRESULT WINAPI SHILCreateFromPathW(LPCWSTR path, LPITEMIDLIST *ppidl, DWORD *attributes)
BOOL WINAPI StrTrimW(LPWSTR lpszStr, LPCWSTR lpszTrim)
virtual HRESULT STDMETHODCALLTYPE Drop(IDataObject *pDataObject, DWORD dwKeyState, POINTL pt, DWORD *pdwEffect)
virtual HRESULT STDMETHODCALLTYPE SetShowCmd(INT iShowCmd)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
virtual HRESULT STDMETHODCALLTYPE SetRelativePath(LPCSTR pszPathRel, DWORD dwReserved)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
HRESULT WINAPI IShellLink_ConstructFromFile(IShellFolder *psf, LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv)
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID iid, void **ppvSite)
HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR lpszPath, DWORD dwMode, IStream **lppStream)
char * cleanup(char *str)
HRESULT Write([in, size_is(cb)] const void *pv, [in] ULONG cb, [out] ULONG *pcbWritten)
virtual HRESULT STDMETHODCALLTYPE InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
INT WINAPI ImageList_AddMasked(HIMAGELIST himl, HBITMAP hBitmap, COLORREF clrMask)
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
#define MAKEINTRESOURCEW(i)
SHELL_LINK_HEADER m_Header
virtual HRESULT STDMETHODCALLTYPE CopyDataBlock(DWORD dwSig, void **ppDataBlock)
HPROPSHEETPAGE SH_CreatePropertySheetPage(LPCSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR szTitle)
#define STGM_SHARE_DENY_WRITE
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
HRESULT SetTargetFromPIDLOrPath(LPCITEMIDLIST pidl, LPCWSTR pszFile)
HRESULT Read([out, size_is(cb), length_is(*pcbRead)] void *pv, [in] ULONG cb, [out] ULONG *pcbRead)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
UINT WINAPI DragQueryFileW(HDROP hDrop, UINT lFile, LPWSTR lpszwFile, UINT lLength)
HRESULT DoOpenFileLocation()
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
LPWSTR SH_GetTargetTypeByPath(LPCWSTR lpcwFullPath)
#define HeapFree(x, y, z)
#define IsEqualIID(riid1, riid2)
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pclsid)