Source code of Windows XP (NT5)
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.

94 lines
2.5 KiB

  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <shellapi.h>
  4. #include <shlobj.h>
  5. #include <shlwapi.h>
  6. #define NO_SHLWAPI_STRFCNS
  7. #define NO_SHLWAPI_PATH
  8. #define NO_SHLWAPI_REG
  9. #define NO_SHLWAPI_UALSTR
  10. #define NO_SHLWAPI_HTTP
  11. #define NO_SHLWAPI_INTERNAL
  12. #include <shlwapip.h>
  13. #define FE_SB 1
  14. #include <shlobjp.h>
  15. #ifndef PLINKINFO
  16. #define PLINKINFO LPVOID
  17. #endif
  18. #define EXP_SZ_LINK_SIG 0xA0000001
  19. //#define NT_CONSOLE_PROPS_SIG 0xA0000002 // moved to shlobj.w
  20. #define EXP_TRACKER_SIG 0xA0000003
  21. //#define NT_FE_CONSOLE_PROPS_SIG 0xA0000004 // moved to shlobj.w
  22. #define EXP_DARWIN_ID_SIG 0xA0000006
  23. #define EXP_HEADER DATABLOCK_HEADER
  24. #define LPEXP_HEADER LPDATABLOCK_HEADER
  25. // most expansion data structures go here
  26. // those shared with other components (NT40 Console stuff)
  27. // are in shlobj.w (private)
  28. //
  29. typedef struct {
  30. IShellLink sl;
  31. IPersistStream ps;
  32. IPersistFile pf;
  33. IShellExtInit si;
  34. IContextMenu2 cm;
  35. IDropTarget dt;
  36. #ifdef USE_DATA_OBJ
  37. IDataObj dobj;
  38. #endif
  39. ////IExtractIcon xi;
  40. #ifdef UNICODE
  41. IShellLinkA slA; // To support ANSI callers
  42. #endif
  43. #ifdef ENABLE_TRACK
  44. IShellLinkTracker slt; // Interface to CTracker object.
  45. #endif
  46. #ifdef WINNT
  47. IShellLinkDataList sldl;
  48. #endif
  49. UINT cRef;
  50. BOOL bDirty; // something has changed
  51. LPTSTR pszCurFile; // current file from IPersistFile
  52. LPTSTR pszRelSource; // overrides pszCurFile in relative tracking
  53. IContextMenu *pcmTarget; // stuff for IContextMenu
  54. UINT indexMenuSave;
  55. UINT idCmdFirstSave;
  56. UINT idCmdLastSave;
  57. UINT uFlagsSave;
  58. BOOL fDataAlreadyResolved; // for data object
  59. // IDropTarget specific
  60. IDropTarget* pdtSrc; // IDropTarget of link source (unresolved)
  61. DWORD grfKeyStateLast;
  62. // persistant data
  63. LPITEMIDLIST pidl; // may be NULL
  64. PLINKINFO pli; // may be NULL
  65. LPTSTR pszName; // title on short volumes
  66. LPTSTR pszRelPath;
  67. LPTSTR pszWorkingDir;
  68. LPTSTR pszArgs;
  69. LPTSTR pszIconLocation;
  70. LPDBLIST pExtraData; // extra data to preserve for future compatibility
  71. #ifdef ENABLE_TRACK
  72. struct CTracker * ptracker;
  73. #endif
  74. SHELL_LINK_DATA sld;
  75. } CShellLink;