You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.7 KiB
98 lines
2.7 KiB
#include <windows.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include <shellapi.h>
|
|
#include <shlobj.h>
|
|
#include <shlwapi.h>
|
|
#define NO_SHLWAPI_STRFCNS
|
|
#define NO_SHLWAPI_PATH
|
|
#define NO_SHLWAPI_REG
|
|
#define NO_SHLWAPI_UALSTR
|
|
#define NO_SHLWAPI_HTTP
|
|
#define NO_SHLWAPI_INTERNAL
|
|
#include <shlwapip.h>
|
|
|
|
#define FE_SB 1
|
|
|
|
#include <shlobjp.h>
|
|
|
|
#ifndef PLINKINFO
|
|
#define PLINKINFO LPVOID
|
|
#endif
|
|
|
|
#define EXP_SZ_LINK_SIG 0xA0000001
|
|
//#define NT_CONSOLE_PROPS_SIG 0xA0000002 // moved to shlobj.w
|
|
#define EXP_TRACKER_SIG 0xA0000003
|
|
//#define NT_FE_CONSOLE_PROPS_SIG 0xA0000004 // moved to shlobj.w
|
|
#define EXP_DARWIN_ID_SIG 0xA0000006
|
|
|
|
#define EXP_HEADER DATABLOCK_HEADER
|
|
#define LPEXP_HEADER LPDATABLOCK_HEADER
|
|
|
|
// most expansion data structures go here
|
|
// those shared with other components (NT40 Console stuff)
|
|
// are in shlobj.w (private)
|
|
//
|
|
|
|
typedef struct {
|
|
IShellLink sl;
|
|
IPersistStream ps;
|
|
IPersistFile pf;
|
|
IShellExtInit si;
|
|
IContextMenu2 cm;
|
|
IDropTarget dt;
|
|
#ifdef USE_DATA_OBJ
|
|
IDataObj dobj;
|
|
#endif
|
|
////IExtractIcon xi;
|
|
#ifdef UNICODE
|
|
IShellLinkA slA; // To support ANSI callers
|
|
#endif
|
|
#ifdef ENABLE_TRACK
|
|
IShellLinkTracker slt; // Interface to CTracker object.
|
|
#endif
|
|
#ifdef WINNT
|
|
IShellLinkDataList sldl;
|
|
#endif
|
|
|
|
UINT cRef;
|
|
|
|
BOOL bDirty; // something has changed
|
|
LPTSTR pszCurFile; // current file from IPersistFile
|
|
LPTSTR pszRelSource; // overrides pszCurFile in relative tracking
|
|
|
|
IContextMenu *pcmTarget; // stuff for IContextMenu
|
|
UINT indexMenuSave;
|
|
UINT idCmdFirstSave;
|
|
UINT idCmdLastSave;
|
|
UINT uFlagsSave;
|
|
|
|
BOOL fDataAlreadyResolved; // for data object
|
|
|
|
// IDropTarget specific
|
|
IDropTarget* pdtSrc; // IDropTarget of link source (unresolved)
|
|
DWORD grfKeyStateLast;
|
|
|
|
// persistant data
|
|
|
|
LPITEMIDLIST pidl; // may be NULL
|
|
PLINKINFO pli; // may be NULL
|
|
|
|
LPTSTR pszName; // title on short volumes
|
|
LPTSTR pszRelPath;
|
|
LPTSTR pszWorkingDir;
|
|
LPTSTR pszArgs;
|
|
LPTSTR pszIconLocation;
|
|
|
|
LPDBLIST pExtraData; // extra data to preserve for future compatibility
|
|
|
|
#ifdef ENABLE_TRACK
|
|
struct CTracker * ptracker;
|
|
#endif
|
|
|
|
SHELL_LINK_DATA sld;
|
|
} CShellLink;
|
|
|
|
|