mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-07 17:36:00 +00:00
12157 lines
443 KiB
ObjectPascal
12157 lines
443 KiB
ObjectPascal
{******************************************************************************}
|
|
{ }
|
|
{ Shell Objects Interface Unit for Object Pascal }
|
|
{ }
|
|
{ Portions created by Microsoft are Copyright (C) 1995-2005 Microsoft }
|
|
{ Corporation. All Rights Reserved. }
|
|
{ }
|
|
{ The initial developer of the original translation is Rudy Velthuis }
|
|
{ }
|
|
{ Portions created by Rudy Velthuis are Copyright (C) 2005-2008 }
|
|
{ All Rights Reserved. }
|
|
{ }
|
|
{ Adapted for JEDI API Library by Christian Wimmer }
|
|
{ }
|
|
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
|
|
{ The original code is: shlobj.h, shlguid.h, shobjidl.h }
|
|
{ isguid.h, exdisp.h, shtypes.h }
|
|
{ }
|
|
{ You may retrieve the latest version of this file at the Project JEDI }
|
|
{ APILIB home page, located at http://jedi-apilib.sourceforge.net }
|
|
{ }
|
|
{ The contents of this file are used with permission, subject to the Mozilla }
|
|
{ Public License Version 1.1 (the "License"); you may not use this file except }
|
|
{ in compliance with the License. You may obtain a copy of the License at }
|
|
{ http://www.mozilla.org/MPL/MPL-1.1.html }
|
|
{ }
|
|
{ Software distributed under the License is distributed on an "AS IS" basis, }
|
|
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
|
|
{ the specific language governing rights and limitations under the License. }
|
|
{ }
|
|
{ Alternatively, the contents of this file may be used under the terms of the }
|
|
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
|
|
{ provisions of the LGPL License are applicable instead of those above. }
|
|
{ If you wish to allow use of your version of this file only under the terms }
|
|
{ of the LGPL License and not to allow others to use your version of this file }
|
|
{ under the MPL, indicate your decision by deleting the provisions above and }
|
|
{ replace them with the notice and other provisions required by the LGPL }
|
|
{ License. If you do not delete the provisions above, a recipient may use }
|
|
{ your version of this file under either the MPL or the LGPL License. }
|
|
{ }
|
|
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
|
|
{ }
|
|
{ }
|
|
{******************************************************************************}
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
unit JwaShlObj;
|
|
|
|
{$I ..\Includes\JediAPILib.inc}
|
|
interface
|
|
|
|
uses
|
|
{these are necessary for
|
|
DROPEFFECT_COPY and more
|
|
TColorRef
|
|
TCoors
|
|
LF_FACESIZE
|
|
TNetResource
|
|
|
|
}
|
|
Windows, ActiveX,
|
|
CommCtrl, {$IFDEF DELPHI6_UP}msxml,{$ENDIF DELPHI6_UP}
|
|
ShDocVw,
|
|
//
|
|
JwaWinBase, JwaWinUser, JwaWinType, JwaActiveX, JwaWinInet,
|
|
JwaShlDisp, JwaShellApi, JwaUrlMon;
|
|
|
|
|
|
{ Windows, Messages, ActiveX, WinInet, CommCtrl, msxml, ShDocVw,
|
|
RVShlDisp, RVShellAPI, RVUrlMon;}
|
|
|
|
|
|
//===========================================================================
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// File: shlobj.h
|
|
//
|
|
//===========================================================================
|
|
|
|
{$WEAKPACKAGEUNIT}
|
|
{$IFDEF DELPHI6_UP}
|
|
{$ALIGN 8}
|
|
{$ELSE}
|
|
{$A+}
|
|
//Warning: Record alignment 4
|
|
{$ENDIF DELPHI6_UP}
|
|
|
|
{$HPPEMIT '#include "shlobj.h"'}
|
|
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("985F64F0-D410-4E02-BE22-DA07F2B5C5E1") IDefViewID;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214EA-0000-0000-C000-000000000046") IPersistFolder;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("1AC3D9F0-175C-11d1-95BE-00609797EA4F") IPersistFolder2;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("1079acfc-29bd-11d3-8e0d-00c04f6837d5") IPersistIDList;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214F2-0000-0000-C000-000000000046") IEnumIDList;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214E6-0000-0000-C000-000000000046") IShellFolder;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("0E700BE1-9DB6-11d1-A1CE-00C04FD75D13") IEnumExtraSearch;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("93F2F68C-1D1B-11d3-A30E-00C04F79ABD1") IShellFolder2;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214E2-0000-0000-C000-000000000046") IShellBrowser;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214E3-0000-0000-C000-000000000046") IShellView;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("88E39E80-3578-11CF-AE69-08002B2E1262") IShellView2;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("cde725b0-ccc9-4519-917e-325d72fab4ce") IFolderView;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("C0A651F5-B48B-11d2-B5ED-006097C686F6") IFolderFilterSite;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("9CC22886-DC8E-11d2-B1D0-00C04F8EEB3E") IFolderFilter;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("CB728B20-F786-11CE-92AD-00AA00A74CD0") IProfferService;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("757A7D9F-919A-4118-99D7-DBB208C8CC66") IPropertyUI;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("9AF64809-5864-4C26-A720-C1F78C086EE3") ICategoryProvider;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("A3B14589-9174-49A8-89A3-06A1AE2B9BA7") ICategorizer;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214EE-0000-0000-C000-000000000046") IShellLinkA;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214F9-0000-0000-C000-000000000046") IShellLinkW;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("49FF1172-EADC-446D-9285-156453A6431C") IActionProgressDialog;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("C1FB73D0-EC3A-4BA2-B512-8CDB9187B6D1") IHWEventHandler;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("DDEFE873-6997-4E68-BE26-39B633ADBE12") IQueryCancelAutoPlay;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("49FF1173-EADC-446D-9285-156453A6431C") IActionProgress;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("49FF1173-EADC-446D-9285-156453A6431C") IActionProgress;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214E8-0000-0000-C000-000000000046") IShellExtInit;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214E9-0000-0000-C000-000000000046") IShellPropSheetExt;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214FE-0000-0000-C000-000000000046") IRemoteComputer;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("7307055C-B24A-486B-9F25-163E597A28A9") IQueryContinue;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("BA9711BA-5893-4787-A7E1-41277151550B") IUserNotification;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("1DF0D7F1-B267-4D28-8B10-12E23202A5C4") IItemNameLimits;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("49C929EE-A1B7-4C58-B539-E63BE392B6F3") INetCrawler;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("BB2E617C-0920-11D1-9A0B-00C04FC2D6C1") IExtractImage;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("953BB1EE-93B4-11d1-98A3-00C04FB687DA") IExtractImage2;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("e9ead8e6-2a25-410e-9b58-a9fbef1dd1a2") IUserEventTimerCallback;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("0F504B94-6E42-42E6-99E0-E20FAFE52AB4") IUserEventTimer;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("012dd920-7b26-11d0-8ca9-00a0c92dbfe8") IDockingWindow;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("EB0FE172-1A3A-11D0-89B3-00A0C90A90AC") IDeskBand;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("56FDF342-FD6D-11d0-958A-006097C9A090") ITaskbarList;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("602D4995-B13A-429b-A66E-1935E44F4317") ITaskbarList2;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("3d73a659-e5d0-4d42-afc0-5121ba425c8d") ICDBurn;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("88960f5b-422f-4e7b-8013-73415381c3c3") IWizardSite;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("c02ea696-86cc-491e-9b23-74394a0444a8") IWizardExtension;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("0e6b3f66-98d1-48c0-a222-fbde74e2fbc5") IWebWizardExtension;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("aa9198bb-ccec-472d-beed-19a4f6733f7a") IPublishingWizard;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("1ea58f02-d55a-411d-b09e-9e65ac21605b") IFolderViewHost;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("3CD141F4-3C6A-11d2-BCAA-00C04FD929DB") IAutoCompleteDropDown;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("b4db1657-70d7-485e-8e3e-6fcb5a5c1802") IModalWindow;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("a09db586-9180-41ac-9114-460a7f362b76") IPassportWizard;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("2271dcca-74fc-4414-8fb7-c56b05ace2d7") ICDBurnExt;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("70F55181-5FEA-4900-B6B8-7343CB0A348C") IDVGetEnum;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("D2B57227-3D23-4b95-93C0-492BD454C356") IInsertItem;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("EB0FE173-1A3A-11D0-89B3-00A0C90A90AC") IDeskBar;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("568804CD-CBD7-11d0-9816-00C04FD91972") IMenuBand;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("47c01f95-e185-412c-b5c5-4f27df965aea") IFolderBandPriv;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("4CF504B0-DE96-11D0-8B3F-00A0C911E8E5") IBandSite;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("d92995f8-cf5e-4a76-bf59-ead39ea2b97e") INamespaceWalkCB;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("57ced8a7-3f4a-432c-9350-30f24483f74f") INamespaceWalk;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("A9521922-0812-4d44-9EC3-7FD38C726F3D") IRegTreeItem;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("D1E7AFEB-6A2E-11d0-8C78-00C04FD918B4") IMenuPopup;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("43826d1e-e718-42ee-bc55-a1e261c37bfe") IShellItem;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("505f1513-6b3e-4892-a272-59f8889a4d3e") IImageRecompress;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("9A93B3FB-4E75-4c74-871A-2CDA667F39A5") IDefViewSafety;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("0811AEBE-0B87-4C54-9E72-548CF649016B") IContextMenuSite;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("ADD8BA80-002B-11D0-8F0F-00C04FD7D062") IDelegateFolder;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("10DF43C8-1DBE-11d3-8B34-006097DF5BD4") IBrowserFrameOptions;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("D2BC4C84-3F72-4a52-A604-7BCBF3982CBB") INewWindowManager;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("4CA300A1-9B8D-11d1-8B22-00C04FD918D0") IShellMenuCallback;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("73db1241-1e85-4581-8e4f-a81e1d0f8c57") IAttachmentExecute;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("EE1F7637-E138-11d1-8379-00C04FD918D0") IShellMenu;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214E4-0000-0000-C000-000000000046") IContextMenu;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214F4-0000-0000-C000-000000000046") IContextMenu2;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("BCFCE0A0-EC17-11D0-8D10-00A0C90F2719") IContextMenu3;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("CEF04FDF-FE72-11D2-87A5-00C04F6837CF") IPersistFolder3;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214EB-0000-0000-C000-000000000046") IExtractIconA;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214FA-0000-0000-C000-000000000046") IExtractIconW;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214E5-0000-0000-C000-000000000046") IShellIcon;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("0C6C4200-C589-11D0-999A-00C04FD655E1") IShellIconOverlayIdentifier;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("F10B5E34-DD3B-42A7-AA7D-2F4EC54BB09B") IShellIconOverlayManager;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("7D688A70-C613-11D0-999B-00C04FD655E1") IShellIconOverlay;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("45E2B4AE-B1C3-11D0-B92F-00A0C90312E1") IShellLinkDataList;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("5CD52983-9449-11D2-963A-00C04F79ADF0") IResolveShellLink;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214F5-0000-0000-C000-000000000046") IShellExecuteHookA;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214FB-0000-0000-C000-000000000046") IShellExecuteHookW;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("AC60F6A0-0FD9-11D0-99CB-00C04FD64497") IURLSearchHook;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("09F656A2-41AF-480C-88F7-16CC0D164615") ISearchContext;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("5EE44DA4-6D32-46E3-86BC-07540DEDD0E0") IURLSearchHook2;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214E1-0000-0000-C000-000000000046") INewShortcutHookA;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214F7-0000-0000-C000-000000000046") INewShortcutHookW;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214EF-0000-0000-C000-000000000046") ICopyHookA;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214FC-0000-0000-C000-000000000046") ICopyHookW;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214F3-0000-0000-C000-000000000046") IFileViewerSite;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214F0-0000-0000-C000-000000000046") IFileViewerA;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214F8-0000-0000-C000-000000000046") IFileViewerW;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214F1-0000-0000-C000-000000000046") ICommDlgBrowser;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("10339516-2894-11D2-9039-00C04F8EEB3E") ICommDlgBrowser2;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("01e18d10-4d8b-11d2-855d-006008059367") IFileSystemBindData;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("000214EC-0000-0000-C000-000000000046") IShellDetails;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("00BB2761-6A77-11D0-A535-00C04FD7D062") IObjMgr;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("91956D21-9276-11D1-921A-006097DF5BD4") ICurrentWorkingDirectory;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("77A130B0-94FD-11D0-A544-00C04FD7d062") IACList;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("470141a0-5186-11d2-bbb6-0060977b464c") IACList2;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("EBBC7C04-315E-11D2-B62F-006097DF5BD4") IProgressDialog;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("F1DB8392-7331-11D0-8C99-00A0C92DBFE8") IInputObjectSite;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("68284FAA-6A48-11D0-8C78-00C04FD918B4") IInputObject;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("2A342FC2-7B26-11D0-8CA9-00A0C92DBFE8") IDockingWindowSite;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("47D2657A-7B27-11D0-8CA9-00A0C92DBFE8") IDockingWindowFrame;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("85788D00-6807-11D0-B810-00C04FD706EC") IRunnableTask;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("6CCB7BE0-6807-11D0-B810-00C04FD706EC") IShellTaskScheduler;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("4EA39266-7211-409F-B622-F63DBD16C533") IThumbnailCapture;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("6DFD582B-92E3-11D1-98A3-00C04FB687DA") IEnumShellImageStore;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("48C8118C-B924-11D1-98D5-00C04FB687DA") IShellImageStore;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("7FE80CC8-C247-11D0-B93A-00A0C90312E1") IShellFolderBand;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("F490EB00-1240-11D1-9888-006097DEACF9") IActiveDesktop;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("52502EE0-EC80-11D0-89AB-00C04FC2972D") IActiveDesktopP;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("B22754E2-4574-11D1-9888-006097DEACF9") IADesktopP2;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("E8025004-1C42-11D2-BE2C-00A0C9A83DA1") IColumnProvider;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("4657278b-411b-11d2-839a-00c04fd918d0") IDropTargetHelper;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("de5bf786-477a-11d2-839d-00c04fd918d0") IDragSourceHelper;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("D82BE2B1-5764-11D0-A96E-00C04FD705A2") IShellChangeNotify;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("00021500-0000-0000-C000-000000000046") IQueryInfo;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("710EB7A0-45ED-11D0-924A-0020AFC7AC4D") IDefViewFrame;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("87D605E0-C511-11CF-89A9-00A0C9054129") IDocViewSite;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("596A9A94-013E-11D1-8D34-00A0C90F2719") IBanneredBar;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("2047E320-F2A9-11CE-AE65-08002B2E1262") IShellFolderViewCB;'}
|
|
{$HPPEMIT 'interface DECLSPEC_UUID("FB700430-952C-11D1-946F-000000000000") INamedPropertyBag;'}
|
|
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDefViewID> _di_IDefViewID;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IPersistFolder> _di_IPersistFolder;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IPersistFolder2> _di_IPersistFolder2;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IPersistIDList> _di_IPersistIDList;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IEnumIDList> _di_IEnumIDList;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellFolder> _di_IShellFolder;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IEnumExtraSearch> _di_IEnumExtraSearch;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellFolder2> _di_IShellFolder2;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellBrowser> _di_IShellBrowser;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellView> _di_IShellView;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellView2> _di_IShellView2;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IFolderView> _di_IFolderView;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IFolderFilterSite> _di_IFolderFilterSite;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IFolderFilter> _di_IFolderFilter;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IProfferService> _di_IProfferService;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IPropertyUI> _di_IPropertyUI;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<ICategoryProvider> _di_ICategoryProvider;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<ICategorizer> _di_ICategorizer;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellLinkA> _di_IShellLinkA;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellLinkW> _di_IShellLinkW;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IActionProgressDialog> _di_IActionProgressDialog;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IHWEventHandler> _di_IHWEventHandler;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IQueryCancelAutoPlay> _di_IQueryCancelAutoPlay;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IActionProgress> _di_IActionProgress;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IActionProgress> _di_IActionProgress;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellExtInit> _di_IShellExtInit;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellPropSheetExt> _di_IShellPropSheetExt;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IRemoteComputer> _di_IRemoteComputer;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IQueryContinue> _di_IQueryContinue;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IUserNotification> _di_IUserNotification;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IItemNameLimits> _di_IItemNameLimits;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<INetCrawler> _di_INetCrawler;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IExtractImage> _di_IExtractImage;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IExtractImage2> _di_IExtractImage2;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IUserEventTimerCallback> _di_IUserEventTimerCallback;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IUserEventTimer> _di_IUserEventTimer;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDockingWindow> _di_IDockingWindow;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDeskBand> _di_IDeskBand;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<ITaskbarList> _di_ITaskbarList;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<ITaskbarList2> _di_ITaskbarList2;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<ICDBurn> _di_ICDBurn;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IWizardSite> _di_IWizardSite;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IWizardExtension> _di_IWizardExtension;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IWebWizardExtension> _di_IWebWizardExtension;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IPublishingWizard> _di_IPublishingWizard;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IFolderViewHost> _di_IFolderViewHost;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IAutoCompleteDropDown> _di_IAutoCompleteDropDown;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IModalWindow> _di_IModalWindow;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IPassportWizard> _di_IPassportWizard;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<ICDBurnExt> _di_ICDBurnExt;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDVGetEnum> _di_IDVGetEnum;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IInsertItem> _di_IInsertItem;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDeskBar> _di_IDeskBar;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IMenuBand> _di_IMenuBand;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IFolderBandPriv> _di_IFolderBandPriv;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IBandSite> _di_IBandSite;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<INamespaceWalkCB> _di_INamespaceWalkCB;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<INamespaceWalk> _di_INamespaceWalk;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IRegTreeItem> _di_IRegTreeItem;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IMenuPopup> _di_IMenuPopup;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellItem> _di_IShellItem;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IImageRecompress> _di_IImageRecompress;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDefViewSafety> _di_IDefViewSafety;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IContextMenuSite> _di_IContextMenuSite;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDelegateFolder> _di_IDelegateFolder;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IBrowserFrameOptions> _di_IBrowserFrameOptions;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<INewWindowManager> _di_INewWindowManager;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellMenuCallback> _di_IShellMenuCallback;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IAttachmentExecute> _di_IAttachmentExecute;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellMenu> _di_IShellMenu;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IContextMenu> _di_IContextMenu;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IContextMenu2> _di_IContextMenu2;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IContextMenu3> _di_IContextMenu3;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IPersistFolder3> _di_IPersistFolder3;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IExtractIconA> _di_IExtractIconA;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IExtractIconW> _di_IExtractIconW;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellIcon> _di_IShellIcon;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellIconOverlayIdentifier> _di_IShellIconOverlayIdentifier;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellIconOverlayManager> _di_IShellIconOverlayManager;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellIconOverlay> _di_IShellIconOverlay;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellLinkDataList> _di_IShellLinkDataList;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IResolveShellLink> _di_IResolveShellLink;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellExecuteHookA> _di_IShellExecuteHookA;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellExecuteHookW> _di_IShellExecuteHookW;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IURLSearchHook> _di_IURLSearchHook;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<ISearchContext> _di_ISearchContext;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IURLSearchHook2> _di_IURLSearchHook2;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<INewShortcutHookA> _di_INewShortcutHookA;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<INewShortcutHookW> _di_INewShortcutHookW;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<ICopyHookA> _di_ICopyHookA;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<ICopyHookW> _di_ICopyHookW;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IFileViewerSite> _di_IFileViewerSite;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IFileViewerA> _di_IFileViewerA;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IFileViewerW> _di_IFileViewerW;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<ICommDlgBrowser> _di_ICommDlgBrowser;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<ICommDlgBrowser2> _di_ICommDlgBrowser2;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IFileSystemBindData> _di_IFileSystemBindData;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellDetails> _di_IShellDetails;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IObjMgr> _di_IObjMgr;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<ICurrentWorkingDirectory> _di_ICurrentWorkingDirectory;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IACList> _di_IACList;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IACList2> _di_IACList2;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IProgressDialog> _di_IProgressDialog;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IInputObjectSite> _di_IInputObjectSite;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IInputObject> _di_IInputObject;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDockingWindowSite> _di_IDockingWindowSite;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDockingWindowFrame> _di_IDockingWindowFrame;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IRunnableTask> _di_IRunnableTask;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellTaskScheduler> _di_IShellTaskScheduler;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellTaskScheduler2> _di_IShellTaskScheduler2;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IThumbnailCapture> _di_IThumbnailCapture;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IEnumShellImageStore> _di_IEnumShellImageStore;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellImageStore> _di_IShellImageStore;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellFolderBand> _di_IShellFolderBand;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDeskBarClient> _di_IDeskBarClient;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IActiveDesktop> _di_IActiveDesktop;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IActiveDesktopP> _di_IActiveDesktopP;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IADesktopP2> _di_IADesktopP2;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IColumnProvider> _di_IColumnProvider;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDropTargetHelper> _di_IDropTargetHelper;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDragSourceHelper> _di_IDragSourceHelper;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellChangeNotify> _di_IShellChangeNotify;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IQueryInfo> _di_IQueryInfo;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDefViewFrame> _di_IDefViewFrame;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IDocViewSite> _di_IDocViewSite;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IInitializeObject> _di_IInitializeObject;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IBanneredBar> _di_IBanneredBar;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<IShellFolderViewCB> _di_IShellFolderViewCB;'}
|
|
{$HPPEMIT 'typedef System::DelphiInterface<INamedPropertyBag> _di_INamedPropertyBag;'}
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|
|
{$IFNDEF JWA_IMPLEMENTATIONSECTION}
|
|
//===========================================================================
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
//===========================================================================
|
|
|
|
// -- shlguid.h --
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
const
|
|
{$EXTERNALSYM CLSID_ShellDesktop}
|
|
CLSID_ShellDesktop: TGUID = (
|
|
D1:$00021400; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM CLSID_ShellLink}
|
|
CLSID_ShellLink: TGUID = (
|
|
D1:$00021401; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
|
|
{$EXTERNALSYM CLSID_NetworkPlaces}
|
|
CLSID_NetworkPlaces: TGUID = (
|
|
D1:$208D2C60; D2:$3AEA; D3:$1069; D4:($A2,$D7,$08,$00,$2B,$30,$30,$9D));
|
|
{$EXTERNALSYM CLSID_NetworkDomain}
|
|
CLSID_NetworkDomain: TGUID = (
|
|
D1:$46E06680; D2:$4BF0; D3:$11D1; D4:($83,$EE,$00,$A0,$C9,$0D,$C8,$49));
|
|
{$EXTERNALSYM CLSID_NetworkServer}
|
|
CLSID_NetworkServer: TGUID = (
|
|
D1:$C0542A90; D2:$4BF0; D3:$11D1; D4:($83,$EE,$00,$A0,$C9,$0D,$C8,$49));
|
|
{$EXTERNALSYM CLSID_NetworkShare}
|
|
CLSID_NetworkShare: TGUID = (
|
|
D1:$54A754C0; D2:$4BF0; D3:$11D1; D4:($83,$EE,$00,$A0,$C9,$0D,$C8,$49));
|
|
{$EXTERNALSYM CLSID_MyComputer}
|
|
CLSID_MyComputer: TGUID = (
|
|
D1:$20D04FE0; D2:$3AEA; D3:$1069; D4:($A2,$D8,$08,$00,$2B,$30,$30,$9D));
|
|
{$EXTERNALSYM CLSID_Internet}
|
|
CLSID_Internet: TGUID = (
|
|
D1:$871C5380; D2:$42A0; D3:$1069; D4:($A2,$EA,$08,$00,$2B,$30,$30,$9D));
|
|
{$EXTERNALSYM CLSID_ShellFSFolder}
|
|
CLSID_ShellFSFolder: TGUID = (
|
|
D1:$F3364BA0; D2:$65B9; D3:$11CE; D4:($A9,$BA,$00,$AA,$00,$4A,$E8,$37));
|
|
{$EXTERNALSYM CLSID_RecycleBin}
|
|
CLSID_RecycleBin: TGUID = (
|
|
D1:$645FF040; D2:$5081; D3:$101B; D4:($9F,$08,$00,$AA,$00,$2F,$95,$4E));
|
|
{$EXTERNALSYM CLSID_ControlPanel}
|
|
CLSID_ControlPanel: TGUID = (
|
|
D1:$21EC2020; D2:$3AEA; D3:$1069; D4:($A2,$DD,$08,$00,$2B,$30,$30,$9D));
|
|
{$EXTERNALSYM CLSID_Printers}
|
|
CLSID_Printers: TGUID = (
|
|
D1:$2227A280; D2:$3AEA; D3:$1069; D4:($A2,$DE,$08,$00,$2B,$30,$30,$9D));
|
|
{$EXTERNALSYM CLSID_MyDocuments}
|
|
CLSID_MyDocuments: TGUID = (
|
|
D1:$450D8FBA; D2:$AD25; D3:$11D0; D4:($98,$A8,$08,$00,$36,$1B,$11,$03));
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
// string version of above CLSIDs
|
|
// useful for doing psfDesktop->ParseDisplayName(L"::" L STR_MYDOCS_CLSID, ...);
|
|
const
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM STR_MYDOCS_CLSID}
|
|
STR_MYDOCS_CLSID = '{450D8FBA-AD25-11D0-98A8-0800361B1103}';
|
|
|
|
{$EXTERNALSYM CATID_BrowsableShellExt}
|
|
CATID_BrowsableShellExt: TGUID = (
|
|
D1:$00021490; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM CATID_BrowseInPlace}
|
|
CATID_BrowseInPlace: TGUID = (
|
|
D1:$00021491; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM CATID_DeskBand}
|
|
CATID_DeskBand: TGUID = (
|
|
D1:$00021492; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM CATID_InfoBand}
|
|
CATID_InfoBand: TGUID = (
|
|
D1:$00021493; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM CATID_CommBand}
|
|
CATID_CommBand: TGUID = (
|
|
D1:$00021494; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
|
|
{$EXTERNALSYM PSGUID_INTERNETSHORTCUT}
|
|
PSGUID_INTERNETSHORTCUT: TGUID = (
|
|
D1:$000214A0; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM FMTID_Intshcut}
|
|
FMTID_Intshcut: TGUID = (
|
|
D1:$000214A0; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
|
|
{$EXTERNALSYM PSGUID_INTERNETSITE}
|
|
PSGUID_INTERNETSITE: TGUID = (
|
|
D1:$000214A1; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM FMTID_InternetSite}
|
|
FMTID_InternetSite: TGUID = (
|
|
D1:$000214A1; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
|
|
{$EXTERNALSYM CGID_Explorer}
|
|
CGID_Explorer: TGUID = (
|
|
D1:$000214D0; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM CGID_ShellDocView}
|
|
CGID_ShellDocView: TGUID = (
|
|
D1:$000214D1; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
|
|
{$EXTERNALSYM CGID_ShellServiceObject}
|
|
CGID_ShellServiceObject: TGUID = (
|
|
D1:$000214D2; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM CGID_ExplorerBarDoc}
|
|
CGID_ExplorerBarDoc: TGUID = (
|
|
D1:$000214D3; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
|
|
{$EXTERNALSYM IID_INewShortcutHookA}
|
|
IID_INewShortcutHookA: TGUID = (
|
|
D1:$000214E1; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellBrowser}
|
|
IID_IShellBrowser: TGUID = (
|
|
D1:$000214E2; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellView}
|
|
IID_IShellView: TGUID = (
|
|
D1:$000214E3; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IContextMenu}
|
|
IID_IContextMenu: TGUID = (
|
|
D1:$000214E4; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellIcon}
|
|
IID_IShellIcon: TGUID = (
|
|
D1:$000214E5; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellFolder}
|
|
IID_IShellFolder: TGUID = (
|
|
D1:$000214E6; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellExtInit}
|
|
IID_IShellExtInit: TGUID = (
|
|
D1:$000214E8; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellPropSheetExt}
|
|
IID_IShellPropSheetExt: TGUID = (
|
|
D1:$000214E9; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IPersistFolder}
|
|
IID_IPersistFolder: TGUID = (
|
|
D1:$000214EA; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IExtractIconA}
|
|
IID_IExtractIconA: TGUID = (
|
|
D1:$000214EB; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellDetails}
|
|
IID_IShellDetails: TGUID = (
|
|
D1:$000214EC; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IDelayedRelease}
|
|
IID_IDelayedRelease: TGUID = (
|
|
D1:$000214ED; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellLinkA}
|
|
IID_IShellLinkA: TGUID = (
|
|
D1:$000214EE; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellCopyHookA}
|
|
IID_IShellCopyHookA: TGUID = (
|
|
D1:$000214EF; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IFileViewerA}
|
|
IID_IFileViewerA: TGUID = (
|
|
D1:$000214F0; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_ICommDlgBrowser}
|
|
IID_ICommDlgBrowser: TGUID = (
|
|
D1:$000214F1; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IEnumIDList}
|
|
IID_IEnumIDList: TGUID = (
|
|
D1:$000214F2; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IFileViewerSite}
|
|
IID_IFileViewerSite: TGUID = (
|
|
D1:$000214F3; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IContextMenu2}
|
|
IID_IContextMenu2: TGUID = (
|
|
D1:$000214F4; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellExecuteHookA}
|
|
IID_IShellExecuteHookA: TGUID = (
|
|
D1:$000214F5; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IPropSheetPage}
|
|
IID_IPropSheetPage: TGUID = (
|
|
D1:$000214F6; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_INewShortcutHookW}
|
|
IID_INewShortcutHookW: TGUID = (
|
|
D1:$000214F7; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IFileViewerW}
|
|
IID_IFileViewerW: TGUID = (
|
|
D1:$000214F8; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellLinkW}
|
|
IID_IShellLinkW: TGUID = (
|
|
D1:$000214F9; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IExtractIconW}
|
|
IID_IExtractIconW: TGUID = (
|
|
D1:$000214FA; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellExecuteHookW}
|
|
IID_IShellExecuteHookW: TGUID = (
|
|
D1:$000214FB; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellCopyHookW}
|
|
IID_IShellCopyHookW: TGUID = (
|
|
D1:$000214FC; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
|
|
{$EXTERNALSYM IID_IRemoteComputer}
|
|
IID_IRemoteComputer: TGUID = (
|
|
D1:$000214FE; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
|
|
{$EXTERNALSYM IID_ICopyHookA}
|
|
IID_ICopyHookA: TGUID = (
|
|
D1:$000214EF; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_ICopyHookW}
|
|
IID_ICopyHookW: TGUID = (
|
|
D1:$000214FC; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
|
|
{$EXTERNALSYM SID_LinkSite}
|
|
SID_LinkSite: TGUID = (
|
|
D1:$000214F9; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
|
|
{$EXTERNALSYM IID_IQueryInfo}
|
|
IID_IQueryInfo: TGUID = (
|
|
D1:$00021500; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
|
|
{$EXTERNALSYM IID_IBriefcaseStg}
|
|
IID_IBriefcaseStg: TGUID = (
|
|
D1:$8BCE1FA1; D2:$0921; D3:$101B; D4:($B1,$FF,$00,$DD,$01,$0C,$CC,$48));
|
|
{$EXTERNALSYM IID_IShellView2}
|
|
IID_IShellView2: TGUID = (
|
|
D1:$88E39E80; D2:$3578; D3:$11CF; D4:($AE,$69,$08,$00,$2B,$2E,$12,$62));
|
|
|
|
{$EXTERNALSYM IID_IShellLinkDataList}
|
|
IID_IShellLinkDataList: TGUID = (
|
|
D1:$45E2B4AE; D2:$B1C3; D3:$11D0; D4:($B9,$2F,$00,$A0,$C9,$03,$12,$E1));
|
|
{$EXTERNALSYM IID_IResolveShellLink}
|
|
IID_IResolveShellLink: TGUID = (
|
|
D1:$5CD52983; D2:$9449; D3:$11D2; D4:($96,$3A,$00,$C0,$4F,$79,$AD,$F0));
|
|
|
|
{$EXTERNALSYM IID_IURLSearchHook}
|
|
IID_IURLSearchHook: TGUID = (
|
|
D1:$AC60F6A0; D2:$0FD9; D3:$11D0; D4:($99,$CB,$00,$C0,$4F,$D6,$44,$97));
|
|
{$EXTERNALSYM IID_ISearchContext}
|
|
IID_ISearchContext: TGUID = (
|
|
D1:$09F656A2; D2:$41AF; D3:$480C; D4:($88,$F7,$16,$CC,$0D,$16,$46,$15));
|
|
{$EXTERNALSYM IID_IURLSearchHook2}
|
|
IID_IURLSearchHook2: TGUID = (
|
|
D1:$5EE44DA4; D2:$6D32; D3:$46E3; D4:($86,$BC,$07,$54,$0D,$ED,$D0,$E0));
|
|
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM IID_IDefViewID}
|
|
IID_IDefViewID: TGUID = (
|
|
D1:$985F64F0; D2:$D410; D3:$4E02; D4:($BE,$22,$DA,$07,$F2,$B5,$C5,$E1));
|
|
|
|
{$EXTERNALSYM CLSID_ShellTaskScheduler}
|
|
CLSID_ShellTaskScheduler: TGUID = (
|
|
D1:$603D3800; D2:$BD81; D3:$11D0; D4:($A3,$A5,$00,$C0,$4F,$D7,$06,$EC));
|
|
{$EXTERNALSYM IID_IShellTaskScheduler}
|
|
IID_IShellTaskScheduler: TGUID = (
|
|
D1:$6CCB7BE0; D2:$6807; D3:$11D0; D4:($B8,$10,$00,$C0,$4F,$D7,$06,$EC));
|
|
|
|
type
|
|
{$EXTERNALSYM IDefViewID}
|
|
IDefViewID = interface(IUnknown)
|
|
['{985F64F0-D410-4E02-BE22-DA07F2B5C5E1}']
|
|
end;
|
|
|
|
const
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CLSID_FolderShortcut}
|
|
CLSID_FolderShortcut: TGUID = (
|
|
D1:$0AFACED1; D2:$E828; D3:$11D1; D4:($91,$87,$B5,$32,$F1,$E9,$57,$5D));
|
|
|
|
{$EXTERNALSYM CLSID_StgFolder}
|
|
CLSID_StgFolder: TGUID = (
|
|
D1:$E773F1AF; D2:$3A65; D3:$4866; D4:($85,$7D,$84,$6F,$C9,$C4,$59,$8A));
|
|
|
|
{$EXTERNALSYM IID_IInputObject}
|
|
IID_IInputObject: TGUID = (
|
|
D1:$68284FAA; D2:$6A48; D3:$11D0; D4:($8C,$78,$00,$C0,$4F,$D9,$18,$B4));
|
|
{$EXTERNALSYM IID_IInputObjectSite}
|
|
IID_IInputObjectSite: TGUID = (
|
|
D1:$F1DB8392; D2:$7331; D3:$11D0; D4:($8C,$99,$00,$A0,$C9,$2D,$BF,$E8));
|
|
|
|
{$EXTERNALSYM IID_IDockingWindowSite}
|
|
IID_IDockingWindowSite: TGUID = (
|
|
D1:$2A342FC2; D2:$7B26; D3:$11D0; D4:($8C,$A9,$00,$A0,$C9,$2D,$BF,$E8));
|
|
{$EXTERNALSYM IID_IDockingWindowFrame}
|
|
IID_IDockingWindowFrame: TGUID = (
|
|
D1:$47D2657A; D2:$7B27; D3:$11D0; D4:($8C,$A9,$00,$A0,$C9,$2D,$BF,$E8));
|
|
|
|
{$EXTERNALSYM IID_IShellIconOverlay}
|
|
IID_IShellIconOverlay: TGUID = (
|
|
D1:$7D688A70; D2:$C613; D3:$11D0; D4:($99,$9B,$00,$C0,$4F,$D6,$55,$E1));
|
|
{$EXTERNALSYM IID_IShellIconOverlayIdentifier}
|
|
IID_IShellIconOverlayIdentifier: TGUID = (
|
|
D1:$0C6C4200; D2:$C589; D3:$11D0; D4:($99,$9A,$00,$C0,$4F,$D6,$55,$E1));
|
|
|
|
{$EXTERNALSYM IID_ICommDlgBrowser2}
|
|
IID_ICommDlgBrowser2: TGUID = (
|
|
D1:$10339516; D2:$2894; D3:$11D2; D4:($90,$39,$00,$C0,$4F,$8E,$EB,$3E));
|
|
|
|
{$EXTERNALSYM IID_IShellFolderViewCB}
|
|
IID_IShellFolderViewCB: TGUID = (
|
|
D1:$2047E320; D2:$F2A9; D3:$11CE; D4:($AE,$65,$08,$00,$2B,$2E,$12,$62));
|
|
{$EXTERNALSYM SID_ShellFolderViewCB}
|
|
SID_ShellFolderViewCB: TGUID = (
|
|
D1:$2047E320; D2:$F2A9; D3:$11CE; D4:($AE,$65,$08,$00,$2B,$2E,$12,$62));
|
|
|
|
{$EXTERNALSYM IID_IPersistFolder3}
|
|
IID_IPersistFolder3: TGUID = (
|
|
D1:$CEF04FDF; D2:$FE72; D3:$11D2; D4:($87,$A5,$00,$C0,$4F,$68,$37,$CF));
|
|
|
|
{$EXTERNALSYM CLSID_CFSIconOverlayManager}
|
|
CLSID_CFSIconOverlayManager: TGUID = (
|
|
D1:$63B51F81; D2:$C868; D3:$11D0; D4:($99,$9C,$00,$C0,$4F,$D6,$55,$E1));
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM IID_IShellIconOverlayManager}
|
|
IID_IShellIconOverlayManager: TGUID = (
|
|
D1:$F10B5E34; D2:$DD3B; D3:$42A7; D4:($AA,$7D,$2F,$4E,$C5,$4B,$B0,$9B));
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM IID_IRunnableTask}
|
|
IID_IRunnableTask: TGUID = (
|
|
D1:$85788D00; D2:$6807; D3:$11D0; D4:($B8,$10,$00,$C0,$4F,$D7,$06,$EC));
|
|
|
|
{$EXTERNALSYM IID_IThumbnailCapture}
|
|
IID_IThumbnailCapture: TGUID = (
|
|
D1:$4EA39266; D2:$7211; D3:$409F; D4:($B6,$22,$F6,$3D,$BD,$16,$C5,$33));
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM IID_IShellImageStore}
|
|
IID_IShellImageStore: TGUID = (
|
|
D1:$48C8118C; D2:$B924; D3:$11D1; D4:($98,$D5,$00,$C0,$4F,$B6,$87,$DA));
|
|
|
|
{$EXTERNALSYM IID_IEnumShellImageStore}
|
|
IID_IEnumShellImageStore: TGUID = (
|
|
D1:$6DFD582B; D2:$92E3; D3:$11D1; D4:($98,$A3,$00,$C0,$4F,$B6,$87,$DA));
|
|
|
|
{$EXTERNALSYM CLSID_ShellThumbnailDiskCache}
|
|
CLSID_ShellThumbnailDiskCache: TGUID = (
|
|
D1:$1EBDCF80; D2:$A200; D3:$11D0; D4:($A3,$A4,$00,$C0,$4F,$D7,$06,$EC));
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM IID_IContextMenu3}
|
|
IID_IContextMenu3: TGUID = (
|
|
D1:$BCFCE0A0; D2:$EC17; D3:$11D0; D4:($8D,$10,$00,$A0,$C9,$0F,$27,$19));
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM SID_DefView}
|
|
SID_DefView: TGUID = (
|
|
D1:$6D12FE80; D2:$7911; D3:$11CF; D4:($95,$34,$00,$00,$C0,$5B,$AE,$0B));
|
|
|
|
{$EXTERNALSYM CGID_DefView}
|
|
CGID_DefView: TGUID = (
|
|
D1:$4AF07F10; D2:$D231; D3:$11D0; D4:($B9,$42,$00,$A0,$C9,$03,$12,$E1));
|
|
|
|
{$EXTERNALSYM CLSID_MenuBand}
|
|
CLSID_MenuBand: TGUID = (
|
|
D1:$5B4DAE26; D2:$B807; D3:$11D0; D4:($98,$15,$00,$C0,$4F,$D9,$19,$72));
|
|
|
|
// IShellFolderBand stuff
|
|
{$EXTERNALSYM IID_IShellFolderBand}
|
|
IID_IShellFolderBand: TGUID = (
|
|
D1:$7FE80CC8; D2:$C247; D3:$11D0; D4:($B9,$3A,$00,$A0,$C9,$03,$12,$E1));
|
|
{$EXTERNALSYM IID_IDefViewFrame}
|
|
IID_IDefViewFrame: TGUID = (
|
|
D1:$710EB7A0; D2:$45ED; D3:$11D0; D4:($92,$4A,$00,$20,$AF,$C7,$AC,$4D));
|
|
|
|
{$EXTERNALSYM VID_LargeIcons}
|
|
VID_LargeIcons: TGUID = (
|
|
D1:$0057D0E0; D2:$3573; D3:$11CF; D4:($AE,$69,$08,$00,$2B,$2E,$12,$62));
|
|
{$EXTERNALSYM VID_SmallIcons}
|
|
VID_SmallIcons: TGUID = (
|
|
D1:$089000C0; D2:$3573; D3:$11CF; D4:($AE,$69,$08,$00,$2B,$2E,$12,$62));
|
|
{$EXTERNALSYM VID_List}
|
|
VID_List : TGUID = (
|
|
D1:$0E1FA5E0; D2:$3573; D3:$11CF; D4:($AE,$69,$08,$00,$2B,$2E,$12,$62));
|
|
{$EXTERNALSYM VID_Details}
|
|
VID_Details : TGUID = (
|
|
D1:$137E7700; D2:$3573; D3:$11CF; D4:($AE,$69,$08,$00,$2B,$2E,$12,$62));
|
|
{$EXTERNALSYM VID_Tile}
|
|
VID_Tile : TGUID = (
|
|
D1:$65F125E5; D2:$7BE1; D3:$4810; D4:($BA,$9D,$D2,$71,$C8,$43,$2C,$E3));
|
|
|
|
|
|
// NOTE: This has to be the same as the old CLSID_Thumbnails
|
|
{$EXTERNALSYM VID_Thumbnails}
|
|
VID_Thumbnails: TGUID = (
|
|
D1:$8BEBB290; D2:$52D0; D3:$11D0; D4:($B7,$F4,$00,$C0,$4F,$D7,$06,$EC));
|
|
|
|
// ThumbStrip
|
|
{$EXTERNALSYM VID_ThumbStrip}
|
|
VID_ThumbStrip: TGUID = (
|
|
D1:$8EEFA624; D2:$D1E9; D3:$445B; D4:($94,$B7,$74,$FB,$CE,$2E,$A1,$1A));
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM SID_SShellBrowser}
|
|
SID_SShellBrowser: TGUID = (// IID_IShellBrowser
|
|
D1:$000214E2; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM SID_SShellDesktop}
|
|
SID_SShellDesktop: TGUID = (// CLSID_ShellDesktop
|
|
D1:$00021400; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
|
|
//
|
|
// IShellDiscardable is an IID-only interface. If the object supports this
|
|
// interface it can be discarded anytime. IWebBrowser::PutProperty QI's for
|
|
// this interface to detect discardable properties.
|
|
//
|
|
{$EXTERNALSYM IID_IDiscardableBrowserProperty}
|
|
IID_IDiscardableBrowserProperty: TGUID = (
|
|
D1:$49C3DE7C; D2:$D329; D3:$11D0; D4:($AB,$73,$00,$C0,$4F,$C3,$3E,$80));
|
|
|
|
// IShellChangeNotify is a sink of PItemIDList notification events
|
|
//
|
|
{$EXTERNALSYM IID_IShellChangeNotify}
|
|
IID_IShellChangeNotify: TGUID = (
|
|
D1:$D82BE2B1; D2:$5764; D3:$11D0; D4:($A9,$6E,$00,$C0,$4F,$D7,$05,$A2));
|
|
|
|
{$EXTERNALSYM IID_IFileViewer}
|
|
IID_IFileViewer: TGUID = ( // IID_IFileViewerA
|
|
D1:$000214F0; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellLink}
|
|
IID_IShellLink: TGUID = ( // IID_IShellLinkA
|
|
D1:$000214EE; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IExtractIcon}
|
|
IID_IExtractIcon: TGUID = ( // IID_IExtractIconA
|
|
D1:$000214EB; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellCopyHook}
|
|
IID_IShellCopyHook: TGUID = ( // IID_IShellCopyHookA
|
|
D1:$000214EF; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_IShellExecuteHook}
|
|
IID_IShellExecuteHook: TGUID = ( // IID_IShellExecuteHookA
|
|
D1:$000214F5; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
{$EXTERNALSYM IID_INewShortcutHook}
|
|
IID_INewShortcutHook: TGUID = ( // IID_INewShortcutHookA
|
|
D1:$000214E1; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46));
|
|
|
|
|
|
//
|
|
// isguids.h - Internet Shortcut GUID definitions.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
|
|
{$EXTERNALSYM CLSID_InternetShortcut}
|
|
CLSID_InternetShortcut: TGUID = (
|
|
D1:$FBF23B40; D2:$E3F0; D3:$101B; D4:($84,$88,$00,$AA,$00,$3E,$56,$F8));
|
|
|
|
{$EXTERNALSYM IID_IUniformResourceLocatorA}
|
|
IID_IUniformResourceLocatorA: TGUID = (
|
|
D1:$FBF23B80; D2:$E3F0; D3:$101B; D4:($84,$88,$00,$AA,$00,$3E,$56,$F8));
|
|
{$EXTERNALSYM IID_IUniformResourceLocatorW}
|
|
IID_IUniformResourceLocatorW: TGUID = (
|
|
D1:$CABB0DA0; D2:$DA57; D3:$11CF; D4:($99,$74,$00,$20,$AF,$D7,$97,$62));
|
|
{$EXTERNALSYM IID_IUniformResourceLocator}
|
|
IID_IUniformResourceLocator: TGUID = (
|
|
D1:$FBF23B80; D2:$E3F0; D3:$101B; D4:($84,$88,$00,$AA,$00,$3E,$56,$F8));
|
|
|
|
|
|
//#include <shldisp.h>
|
|
|
|
// UrlHistory Guids
|
|
{$EXTERNALSYM CLSID_CUrlHistory}
|
|
CLSID_CUrlHistory: TGUID = (
|
|
D1:$3C374A40; D2:$BAE4; D3:$11CF; D4:($BF,$7D,$00,$AA,$00,$69,$46,$EE));
|
|
{$EXTERNALSYM SID_SUrlHistory}
|
|
SID_SUrlHistory: TGUID = (
|
|
D1:$3C374A40; D2:$BAE4; D3:$11CF; D4:($BF,$7D,$00,$AA,$00,$69,$46,$EE));
|
|
|
|
//UrlSearchHook Guids
|
|
{$EXTERNALSYM CLSID_CURLSearchHook}
|
|
CLSID_CURLSearchHook: TGUID = (
|
|
D1:$CFBFAE00; D2:$17A6; D3:$11D0; D4:($99,$CB,$00,$C0,$4F,$D6,$44,$97));
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM SID_SInternetExplorer}
|
|
SID_SInternetExplorer: TGUID = '{0002DF05-0000-0000-C000-000000000046}'; //IID_IWebBrowserApp
|
|
{$EXTERNALSYM SID_SWebBrowserApp}
|
|
SID_SWebBrowserApp: TGUID = '{0002DF05-0000-0000-C000-000000000046}'; //IID_IWebBrowserApp
|
|
|
|
// AutoComplete Guids
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM IID_IAutoCompList}
|
|
IID_IAutoCompList: TGUID = (
|
|
D1:$00BB2760; D2:$6A77; D3:$11D0; D4:($A5,$35,$00,$C0,$4F,$D7,$D0,$62));
|
|
{$EXTERNALSYM IID_IObjMgr}
|
|
IID_IObjMgr: TGUID = (
|
|
D1:$00BB2761; D2:$6A77; D3:$11D0; D4:($A5,$35,$00,$C0,$4F,$D7,$D0,$62));
|
|
{$EXTERNALSYM IID_IACList}
|
|
IID_IACList: TGUID = (
|
|
D1:$77A130B0; D2:$94FD; D3:$11D0; D4:($A5,$44,$00,$C0,$4F,$D7,$d0,$62));
|
|
{$EXTERNALSYM IID_IACList2}
|
|
IID_IACList2: TGUID = (
|
|
D1:$470141a0; D2:$5186; D3:$11d2; D4:($bb,$b6,$00,$60,$97,$7b,$46,$4c));
|
|
{$EXTERNALSYM IID_ICurrentWorkingDirectory}
|
|
IID_ICurrentWorkingDirectory: TGUID = (
|
|
D1:$91956D21; D2:$9276; D3:$11D1; D4:($92,$1A,$00,$60,$97,$DF,$5B,$D4));
|
|
{$EXTERNALSYM CLSID_AutoComplete}
|
|
CLSID_AutoComplete: TGUID = (
|
|
D1:$00BB2763; D2:$6A77; D3:$11D0; D4:($A5,$35,$00,$C0,$4F,$D7,$D0,$62));
|
|
{$EXTERNALSYM CLSID_ACLHistory}
|
|
CLSID_ACLHistory: TGUID = (
|
|
D1:$00BB2764; D2:$6A77; D3:$11D0; D4:($A5,$35,$00,$C0,$4F,$D7,$D0,$62));
|
|
{$EXTERNALSYM CLSID_ACListISF}
|
|
CLSID_ACListISF: TGUID = (
|
|
D1:$03C036F1; D2:$A186; D3:$11D0; D4:($82,$4A,$00,$AA,$00,$5B,$43,$83));
|
|
{$EXTERNALSYM CLSID_ACLMRU}
|
|
CLSID_ACLMRU: TGUID = (
|
|
D1:$6756a641; D2:$de71; D3:$11d0; D4:($83,$1b,$00,$aa,$00,$5b,$43,$83));
|
|
{$EXTERNALSYM CLSID_ACLMulti}
|
|
CLSID_ACLMulti: TGUID = (
|
|
D1:$00BB2765; D2:$6A77; D3:$11D0; D4:($A5,$35,$00,$C0,$4F,$D7,$D0,$62));
|
|
{$EXTERNALSYM CLSID_ACLCustomMRU}
|
|
CLSID_ACLCustomMRU: TGUID = (
|
|
D1:$6935DB93; D2:$21E8; D3:$4CCC; D4:($BE,$B9,$9F,$E3,$C7,$7A,$29,$7A));
|
|
|
|
|
|
// IProgressDialog
|
|
{$EXTERNALSYM CLSID_ProgressDialog}
|
|
CLSID_ProgressDialog: TGUID = (
|
|
D1:$F8383852; D2:$FCD3; D3:$11D1; D4:($A6,$B9,$00,$60,$97,$DF,$5B,$D4));
|
|
{$EXTERNALSYM IID_IProgressDialog}
|
|
IID_IProgressDialog: TGUID = (
|
|
D1:$EBBC7C04; D2:$315E; D3:$11D2; D4:($B6,$2F,$00,$60,$97,$DF,$5B,$D4));
|
|
|
|
//
|
|
// Progress objects exposed via QueryService
|
|
//
|
|
{$EXTERNALSYM SID_SProgressUI}
|
|
SID_SProgressUI: TGUID = (
|
|
D1:$F8383852; D2:$FCD3; D3:$11D1; D4:($A6,$B9,$00,$60,$97,$DF,$5B,$D4));
|
|
|
|
|
|
//
|
|
// Top-most browser implementation in the heirarchy. use IServiceProvider::QueryService()
|
|
// to get to interfaces (IID_IShellBrowser, IID_IBrowserService, etc.)
|
|
//
|
|
{$EXTERNALSYM SID_STopLevelBrowser}
|
|
SID_STopLevelBrowser: TGUID = (
|
|
D1:$4C96BE40; D2:$915C; D3:$11CF; D4:($99,$D3,$00,$AA,$00,$4A,$E8,$37));
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM CLSID_FileTypes}
|
|
CLSID_FileTypes: TGUID = (
|
|
D1:$B091E540; D2:$83E3; D3:$11CF; D4:($A7,$13,$00,$20,$AF,$D7,$97,$62));
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CLSID_ActiveDesktop}
|
|
CLSID_ActiveDesktop: TGUID = (
|
|
D1:$75048700; D2:$EF1F; D3:$11D0; D4:($98,$88,$00,$60,$97,$DE,$AC,$F9));
|
|
|
|
{$EXTERNALSYM IID_IActiveDesktop}
|
|
IID_IActiveDesktop: TGUID = (
|
|
D1:$F490EB00; D2:$1240; D3:$11D1; D4:($98,$88,$00,$60,$97,$DE,$AC,$F9));
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM IID_IActiveDesktopP}
|
|
IID_IActiveDesktopP: TGUID = (
|
|
D1:$52502EE0; D2:$EC80; D3:$11D0; D4:($89,$AB,$00,$C0,$4F,$C2,$97,$2D));
|
|
|
|
{$EXTERNALSYM IID_IADesktopP2}
|
|
IID_IADesktopP2: TGUID = (
|
|
D1:$B22754E2; D2:$4574; D3:$11D1; D4:($98,$88,$00,$60,$97,$DE,$AC,$F9));
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM IID_ISynchronizedCallBack}
|
|
IID_ISynchronizedCallBack: TGUID = (
|
|
D1:$74C26041; D2:$70D1; D3:$11D1; D4:($B7,$5A,$00,$A0,$C9,$05,$64,$FE));
|
|
|
|
// Extended column handler interfaces
|
|
{$EXTERNALSYM IID_IShellDetails3}
|
|
IID_IShellDetails3: TGUID = (
|
|
D1:$D2A105C0; D2:$87D5; D3:$11D1; D4:($83,$91,$00,$00,$F8,$04,$61,$CF));
|
|
|
|
{$EXTERNALSYM IID_IQueryAssociations}
|
|
IID_IQueryAssociations: TGUID = (
|
|
D1:$C46CA590; D2:$3C3F; D3:$11D2; D4:($BE,$E6,$00,$00,$F8,$05,$CA,$57));
|
|
|
|
{$EXTERNALSYM CLSID_QueryAssociations}
|
|
CLSID_QueryAssociations: TGUID = (
|
|
D1:$A07034FD; D2:$6CAA; D3:$4954; D4:($AC,$3F,$97,$A2,$72,$16,$F9,$8A));
|
|
|
|
{$EXTERNALSYM IID_IColumnProvider}
|
|
IID_IColumnProvider: TGUID = (
|
|
D1:$E8025004; D2:$1C42; D3:$11D2; D4:($BE,$2C,$00,$A0,$C9,$A8,$3D,$A1));
|
|
|
|
{$EXTERNALSYM CLSID_DocFileColumnProvider}
|
|
CLSID_DocFileColumnProvider: TGUID = (
|
|
D1:$24F14F01; D2:$7B1C; D3:$11D1; D4:($83,$8F,$00,$00,$F8,$04,$61,$CF));
|
|
|
|
{$EXTERNALSYM CLSID_LinkColumnProvider}
|
|
CLSID_LinkColumnProvider: TGUID = (
|
|
D1:$24F14F02; D2:$7B1C; D3:$11D1; D4:($83,$8F,$00,$00,$F8,$04,$61,$CF));
|
|
|
|
{$EXTERNALSYM CLSID_FileSysColumnProvider}
|
|
CLSID_FileSysColumnProvider: TGUID = (
|
|
D1:$0D2E74C4; D2:$3C34; D3:$11D2; D4:($A2,$7E,$00,$C0,$4F,$C3,$08,$71));
|
|
|
|
// For Internet Shortcut Creation Command
|
|
// The shell uses this command to allow trident to save off it's per frame data in the shortcut
|
|
// and to allow it to fire the OnPersist() event on every frame
|
|
{$EXTERNALSYM CGID_ShortCut}
|
|
CGID_ShortCut: TGUID = (
|
|
D1:$93A68750; D2:$951A; D3:$11D1; D4:($94,$6F,$00,$00,$00,$00,$00,$00));
|
|
|
|
{$EXTERNALSYM IID_INamedPropertyBag}
|
|
IID_INamedPropertyBag: TGUID = (
|
|
D1:$FB700430; D2:$952C; D3:$11D1; D4:($94,$6F,$00,$00,$00,$00,$00,$00));
|
|
|
|
{$EXTERNALSYM CLSID_InternetButtons}
|
|
CLSID_InternetButtons: TGUID = (
|
|
D1:$1E796980; D2:$9CC5; D3:$11D1; D4:($A8,$3F,$00,$C0,$4F,$C9,$9D,$61));
|
|
|
|
{$EXTERNALSYM CLSID_MSOButtons}
|
|
CLSID_MSOButtons: TGUID = (
|
|
D1:$178F34B8; D2:$A282; D3:$11D2; D4:($86,$C5,$00,$C0,$4F,$8E,$EA,$99));
|
|
|
|
{$EXTERNALSYM CLSID_ToolbarExtButtons}
|
|
CLSID_ToolbarExtButtons: TGUID = (
|
|
D1:$2CE4B5D8; D2:$A28F; D3:$11D2; D4:($86,$C5,$00,$C0,$4F,$8E,$EA,$99));
|
|
|
|
{$EXTERNALSYM CLSID_DarwinAppPublisher}
|
|
CLSID_DarwinAppPublisher: TGUID = (
|
|
D1:$CFCCC7A0; D2:$A282; D3:$11D1; D4:($90,$82,$00,$60,$08,$05,$93,$82));
|
|
|
|
{$EXTERNALSYM CLSID_DocHostUIHandler}
|
|
CLSID_DocHostUIHandler: TGUID = (
|
|
D1:$7057e952; D2:$bd1b; D3:$11d1; D4:($89,$19,$00,$c0,$4f,$c2,$c8,$36));
|
|
|
|
{$EXTERNALSYM IID_IShellFolder2}
|
|
IID_IShellFolder2: TGUID = (
|
|
D1:$93F2F68C; D2:$1D1B; D3:$11D3; D4:($A3,$0E,$00,$C0,$4F,$79,$AB,$D1));
|
|
|
|
{$EXTERNALSYM PSGUID_SHELLDETAILS}
|
|
PSGUID_SHELLDETAILS: TGUID = (
|
|
D1:$28636AA6; D2:$953D; D3:$11D2; D4:($B5,$D6,$00,$C0,$4F,$D9,$18,$D0));
|
|
{$EXTERNALSYM FMTID_ShellDetails}
|
|
FMTID_ShellDetails: TGUID = (
|
|
D1:$28636AA6; D2:$953D; D3:$11D2; D4:($B5,$D6,$00,$C0,$4F,$D9,$18,$D0));
|
|
|
|
{$EXTERNALSYM PID_FINDDATA}
|
|
PID_FINDDATA = 0;
|
|
{$EXTERNALSYM PID_NETRESOURCE}
|
|
PID_NETRESOURCE = 1;
|
|
{$EXTERNALSYM PID_DESCRIPTIONID}
|
|
PID_DESCRIPTIONID = 2;
|
|
{$EXTERNALSYM PID_WHICHFOLDER}
|
|
PID_WHICHFOLDER = 3;
|
|
{$EXTERNALSYM PID_NETWORKLOCATION}
|
|
PID_NETWORKLOCATION = 4;
|
|
{$EXTERNALSYM PID_COMPUTERNAME}
|
|
PID_COMPUTERNAME = 5;
|
|
|
|
// PSGUID_STORAGE comes from ntquery.h
|
|
{$EXTERNALSYM PSGUID_STORAGE}
|
|
PSGUID_STORAGE: TGUID = (
|
|
D1:$B725F130; D2:$47EF; D3:$101A; D4:($A5,$F1,$02,$60,$8C,$9E,$EB,$AC));
|
|
{$EXTERNALSYM FMTID_Storage}
|
|
FMTID_Storage: TGUID = (
|
|
D1:$B725F130; D2:$47EF; D3:$101A; D4:($A5,$F1,$02,$60,$8C,$9E,$EB,$AC));
|
|
|
|
// Image properties
|
|
{$EXTERNALSYM PSGUID_IMAGEPROPERTIES}
|
|
PSGUID_IMAGEPROPERTIES: TGUID = (
|
|
D1:$14B81DA1; D2:$0135; D3:$4D31; D4:($96,$D9,$6C,$BF,$C9,$67,$1A,$99));
|
|
{$EXTERNALSYM FMTID_ImageProperties}
|
|
FMTID_ImageProperties: TGUID = (
|
|
D1:$14B81DA1; D2:$0135; D3:$4D31; D4:($96,$D9,$6C,$BF,$C9,$67,$1A,$99));
|
|
|
|
// The GUIDs used to identify shell item attributes (columns).
|
|
// See IShellFolder2::GetDetailsEx implementations...
|
|
|
|
{$EXTERNALSYM PSGUID_DISPLACED}
|
|
PSGUID_DISPLACED: TGUID = (
|
|
D1:$9B174B33; D2:$40FF; D3:$11D2; D4:($A2,$7E,$00,$C0,$4F,$C3,$08,$71));
|
|
{$EXTERNALSYM FMTID_Displaced}
|
|
FMTID_Displaced: TGUID = (
|
|
D1:$9B174B33; D2:$40FF; D3:$11D2; D4:($A2,$7E,$00,$C0,$4F,$C3,$08,$71));
|
|
|
|
{$EXTERNALSYM PID_DISPLACED_FROM}
|
|
PID_DISPLACED_FROM = 2;
|
|
{$EXTERNALSYM PID_DISPLACED_DATE}
|
|
PID_DISPLACED_DATE = 3;
|
|
|
|
{$EXTERNALSYM PSGUID_BRIEFCASE}
|
|
PSGUID_BRIEFCASE: TGUID = (
|
|
D1:$328D8B21; D2:$7729; D3:$4BFC; D4:($95,$4C,$90,$2B,$32,$9D,$56,$B0));
|
|
{$EXTERNALSYM FMTID_Briefcase}
|
|
FMTID_Briefcase: TGUID = (
|
|
D1:$328D8B21; D2:$7729; D3:$4BFC; D4:($95,$4C,$90,$2B,$32,$9D,$56,$B0));
|
|
|
|
{$EXTERNALSYM PID_SYNC_COPY_IN}
|
|
PID_SYNC_COPY_IN = 2;
|
|
|
|
{$EXTERNALSYM PSGUID_MISC}
|
|
PSGUID_MISC: TGUID = (
|
|
D1:$9B174B34; D2:$40FF; D3:$11D2; D4:($A2,$7E,$00,$C0,$4F,$C3,$08,$71));
|
|
{$EXTERNALSYM FMTID_Misc}
|
|
FMTID_Misc: TGUID = (
|
|
D1:$9B174B34; D2:$40FF; D3:$11D2; D4:($A2,$7E,$00,$C0,$4F,$C3,$08,$71));
|
|
|
|
{$EXTERNALSYM PID_MISC_STATUS}
|
|
PID_MISC_STATUS = 2;
|
|
{$EXTERNALSYM PID_MISC_ACCESSCOUNT}
|
|
PID_MISC_ACCESSCOUNT = 3;
|
|
{$EXTERNALSYM PID_MISC_OWNER}
|
|
PID_MISC_OWNER = 4;
|
|
{$EXTERNALSYM PID_HTMLINFOTIPFILE}
|
|
PID_HTMLINFOTIPFILE = 5;
|
|
{$EXTERNALSYM PID_MISC_PICS}
|
|
PID_MISC_PICS = 6;
|
|
|
|
{$EXTERNALSYM PSGUID_WEBVIEW}
|
|
PSGUID_WEBVIEW: TGUID = (
|
|
D1:$F2275480; D2:$F782; D3:$4291; D4:($BD,$94,$F1,$36,$93,$51,$3A,$EC));
|
|
{$EXTERNALSYM FMTID_WebView}
|
|
FMTID_WebView: TGUID = (
|
|
D1:$F2275480; D2:$F782; D3:$4291; D4:($BD,$94,$F1,$36,$93,$51,$3A,$EC));
|
|
|
|
{$EXTERNALSYM PID_DISPLAY_PROPERTIES}
|
|
PID_DISPLAY_PROPERTIES = 0;
|
|
{$EXTERNALSYM PID_INTROTEXT}
|
|
PID_INTROTEXT = 1;
|
|
|
|
{$EXTERNALSYM PSGUID_MUSIC}
|
|
PSGUID_MUSIC: TGUID = (
|
|
D1:$56A3372E; D2:$CE9C; D3:$11D2; D4:($9F,$0E,$00,$60,$97,$C6,$86,$F6));
|
|
{$EXTERNALSYM FMTID_MUSIC}
|
|
FMTID_MUSIC: TGUID = (
|
|
D1:$56A3372E; D2:$CE9C; D3:$11D2; D4:($9F,$0E,$00,$60,$97,$C6,$86,$F6));
|
|
|
|
{$EXTERNALSYM PIDSI_ARTIST}
|
|
PIDSI_ARTIST = 2;
|
|
{$EXTERNALSYM PIDSI_SONGTITLE}
|
|
PIDSI_SONGTITLE = 3;
|
|
{$EXTERNALSYM PIDSI_ALBUM}
|
|
PIDSI_ALBUM = 4;
|
|
{$EXTERNALSYM PIDSI_YEAR}
|
|
PIDSI_YEAR = 5;
|
|
{$EXTERNALSYM PIDSI_COMMENT}
|
|
PIDSI_COMMENT = 6;
|
|
{$EXTERNALSYM PIDSI_TRACK}
|
|
PIDSI_TRACK = 7;
|
|
{$EXTERNALSYM PIDSI_GENRE}
|
|
PIDSI_GENRE = 11;
|
|
{$EXTERNALSYM PIDSI_LYRICS}
|
|
PIDSI_LYRICS = 12;
|
|
|
|
{$EXTERNALSYM PSGUID_DRM}
|
|
PSGUID_DRM: TGUID = (
|
|
D1:$AEAC19E4; D2:$89AE; D3:$4508; D4:($B9,$B7,$BB,$86,$7A,$BE,$E2,$ED));
|
|
{$EXTERNALSYM FMTID_DRM}
|
|
FMTID_DRM: TGUID = (
|
|
D1:$AEAC19E4; D2:$89AE; D3:$4508; D4:($B9,$B7,$BB,$86,$7A,$BE,$E2,$ED));
|
|
|
|
{$EXTERNALSYM PIDDRSI_PROTECTED}
|
|
PIDDRSI_PROTECTED = 2;
|
|
{$EXTERNALSYM PIDDRSI_DESCRIPTION}
|
|
PIDDRSI_DESCRIPTION = 3;
|
|
{$EXTERNALSYM PIDDRSI_PLAYCOUNT}
|
|
PIDDRSI_PLAYCOUNT = 4;
|
|
{$EXTERNALSYM PIDDRSI_PLAYSTARTS}
|
|
PIDDRSI_PLAYSTARTS = 5;
|
|
{$EXTERNALSYM PIDDRSI_PLAYEXPIRES}
|
|
PIDDRSI_PLAYEXPIRES = 6;
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM PSGUID_VIDEO}
|
|
PSGUID_VIDEO: TGUID = '{64440491-4c8b-11d1-8b70-080036b11a03}';
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
// FMTID_VideoSummaryInformation property identifiers
|
|
{$EXTERNALSYM PIDVSI_STREAM_NAME}
|
|
PIDVSI_STREAM_NAME = $00000002; // "StreamName", VT_LPWSTR
|
|
{$EXTERNALSYM PIDVSI_FRAME_WIDTH}
|
|
PIDVSI_FRAME_WIDTH = $00000003; // "FrameWidth", VT_UI4
|
|
{$EXTERNALSYM PIDVSI_FRAME_HEIGHT}
|
|
PIDVSI_FRAME_HEIGHT = $00000004; // "FrameHeight", VT_UI4
|
|
{$EXTERNALSYM PIDVSI_TIMELENGTH}
|
|
PIDVSI_TIMELENGTH = $00000007; // "TimeLength", VT_UI4, milliseconds
|
|
{$EXTERNALSYM PIDVSI_FRAME_COUNT}
|
|
PIDVSI_FRAME_COUNT = $00000005; // "FrameCount". VT_UI4
|
|
{$EXTERNALSYM PIDVSI_FRAME_RATE}
|
|
PIDVSI_FRAME_RATE = $00000006; // "FrameRate", VT_UI4, frames/millisecond
|
|
{$EXTERNALSYM PIDVSI_DATA_RATE}
|
|
PIDVSI_DATA_RATE = $00000008; // "DataRate", VT_UI4, bytes/second
|
|
{$EXTERNALSYM PIDVSI_SAMPLE_SIZE}
|
|
PIDVSI_SAMPLE_SIZE = $00000009; // "SampleSize", VT_UI4
|
|
{$EXTERNALSYM PIDVSI_COMPRESSION}
|
|
PIDVSI_COMPRESSION = $0000000A; // "Compression", VT_LPWSTR
|
|
{$EXTERNALSYM PIDVSI_STREAM_NUMBER}
|
|
PIDVSI_STREAM_NUMBER = $0000000B; // "StreamNumber", VT_UI2
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM PSGUID_AUDIO}
|
|
PSGUID_AUDIO: TGUID = '{64440490-4c8b-11d1-8b70-080036b11a03}';
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
// FMTID_AudioSummaryInformation property identifiers
|
|
{$EXTERNALSYM PIDASI_FORMAT}
|
|
PIDASI_FORMAT = $00000002; // VT_BSTR
|
|
{$EXTERNALSYM PIDASI_TIMELENGTH}
|
|
PIDASI_TIMELENGTH = $00000003; // VT_UI4, milliseconds
|
|
{$EXTERNALSYM PIDASI_AVG_DATA_RATE}
|
|
PIDASI_AVG_DATA_RATE = $00000004; // VT_UI4, Hz
|
|
{$EXTERNALSYM PIDASI_SAMPLE_RATE}
|
|
PIDASI_SAMPLE_RATE = $00000005; // VT_UI4, bits
|
|
{$EXTERNALSYM PIDASI_SAMPLE_SIZE}
|
|
PIDASI_SAMPLE_SIZE = $00000006; // VT_UI4, bits
|
|
{$EXTERNALSYM PIDASI_CHANNEL_COUNT}
|
|
PIDASI_CHANNEL_COUNT = $00000007; // VT_UI4
|
|
{$EXTERNALSYM PIDASI_STREAM_NUMBER}
|
|
PIDASI_STREAM_NUMBER = $00000008; // VT_UI2
|
|
{$EXTERNALSYM PIDASI_STREAM_NAME}
|
|
PIDASI_STREAM_NAME = $00000009; // VT_LPWSTR
|
|
{$EXTERNALSYM PIDASI_COMPRESSION}
|
|
PIDASI_COMPRESSION = $0000000A; // VT_LPWSTR
|
|
|
|
{$EXTERNALSYM PSGUID_CONTROLPANEL}
|
|
PSGUID_CONTROLPANEL: TGUID = '{305ca226-d286-468e-b848-2b2e8e697b74}';
|
|
{$EXTERNALSYM PID_CONTROLPANEL_CATEGORY}
|
|
PID_CONTROLPANEL_CATEGORY = 2;
|
|
|
|
{$EXTERNALSYM PSGUID_VOLUME}
|
|
PSGUID_VOLUME: TGUID = '{9B174B35-40FF-11d2-A27E-00C04FC30871}';
|
|
|
|
{$EXTERNALSYM FMTID_Volume}
|
|
FMTID_Volume: TGUID = (
|
|
D1:$9B174B35; D2:$40FF; D3:$11D2; D4:($A2,$7E,$00,$C0,$4F,$C3,$08,$71));
|
|
|
|
{$EXTERNALSYM PID_VOLUME_FREE}
|
|
PID_VOLUME_FREE = 2;
|
|
{$EXTERNALSYM PID_VOLUME_CAPACITY}
|
|
PID_VOLUME_CAPACITY = 3;
|
|
{$EXTERNALSYM PID_VOLUME_FILESYSTEM}
|
|
PID_VOLUME_FILESYSTEM = 4;
|
|
|
|
{$EXTERNALSYM PSGUID_SHARE}
|
|
PSGUID_SHARE: TGUID = '{D8C3986F-813B-449c-845D-87B95D674ADE}';
|
|
|
|
{$EXTERNALSYM PID_SHARE_CSC_STATUS}
|
|
PID_SHARE_CSC_STATUS = 2;
|
|
|
|
{$EXTERNALSYM PSGUID_LINK}
|
|
PSGUID_LINK: TGUID = '{B9B4B3FC-2B51-4a42-B5D8-324146AFCF25}';
|
|
|
|
{$EXTERNALSYM PID_LINK_TARGET}
|
|
PID_LINK_TARGET = 2;
|
|
|
|
{$EXTERNALSYM PSGUID_QUERY_D}
|
|
PSGUID_QUERY_D: TGUID = (
|
|
D1:$49691C90; D2:$7E17; D3:$101A; D4:($A9,$1C,$08,$00,$2B,$2E,$CD,$A9));
|
|
{$EXTERNALSYM FMTID_Query}
|
|
FMTID_Query: TGUID = (
|
|
D1:$49691C90; D2:$7E17; D3:$101A; D4:($A9,$1C,$08,$00,$2B,$2E,$CD,$A9));
|
|
|
|
{$EXTERNALSYM PID_QUERY_RANK}
|
|
PID_QUERY_RANK = 2;
|
|
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
// FMTID_SummaryInformation, see OLE docs for PID_ values for these
|
|
{$EXTERNALSYM PSGUID_SUMMARYINFORMATION}
|
|
PSGUID_SUMMARYINFORMATION: TGUID = '{f29f85e0-4ff9-1068-ab91-08002b27b3d9}';
|
|
// FMTID_DocumentSummaryInformation, see OLE docs on the PID_ values for this
|
|
{$EXTERNALSYM PSGUID_DOCUMENTSUMMARYINFORMATION}
|
|
PSGUID_DOCUMENTSUMMARYINFORMATION: TGUID = '{d5cdd502-2e9c-101b-9397-08002b2cf9ae}';
|
|
|
|
// FMTID_MediaFileSummaryInformation, see propidl.h PID_ values for this
|
|
PSGUID_MEDIAFILESUMMARYINFORMATION: TGUID = '{64440492-4c8b-11d1-8b70-080036b11a03}';
|
|
|
|
// FMTID_ImageSummaryInformation,, see propidl.h PID_ values for this
|
|
PSGUID_IMAGESUMMARYINFORMATION: TGUID = '{6444048f-4c8b-11d1-8b70-080036b11a03}';
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM IID_IEnumExtraSearch}
|
|
IID_IEnumExtraSearch: TGUID = (
|
|
D1:$0E700BE1; D2:$9DB6; D3:$11D1; D4:($A1,$CE,$00,$C0,$4F,$D7,$5D,$13));
|
|
|
|
{$EXTERNALSYM CLSID_MountedVolume}
|
|
CLSID_MountedVolume: TGUID = (
|
|
D1:$12518493; D2:$00B2; D3:$11d2; D4:($9F,$A5,$9E,$34,$20,$52,$41,$53));
|
|
|
|
{$EXTERNALSYM CLSID_HWShellExecute}
|
|
CLSID_HWShellExecute: TGUID = (
|
|
D1:$ffb8655f; D2:$81b9; D3:$4fce; D4:($b8,$9c,$9a,$6b,$a7,$6d,$13,$e7));
|
|
|
|
{$EXTERNALSYM IID_IMountedVolume}
|
|
IID_IMountedVolume: TGUID = (
|
|
D1:$12518492; D2:$00B2; D3:$11d2; D4:($9F,$A5,$9E,$34,$20,$52,$41,$53));
|
|
|
|
{$EXTERNALSYM CLSID_DragDropHelper}
|
|
CLSID_DragDropHelper: TGUID = (
|
|
D1:$4657278a; D2:$411b; D3:$11d2; D4:($83,$9a,$00,$c0,$4f,$d9,$18,$d0));
|
|
|
|
{$EXTERNALSYM IID_IDropTargetHelper}
|
|
IID_IDropTargetHelper: TGUID = (
|
|
D1:$4657278b; D2:$411b; D3:$11d2; D4:($83,$9a,$00,$c0,$4f,$d9,$18,$d0));
|
|
|
|
{$EXTERNALSYM IID_IDragSourceHelper}
|
|
IID_IDragSourceHelper: TGUID = (
|
|
D1:$de5bf786; D2:$477a; D3:$11d2; D4:($83,$9d,$00,$c0,$4f,$d9,$18,$d0));
|
|
|
|
{$EXTERNALSYM CLSID_CAnchorBrowsePropertyPage}
|
|
CLSID_CAnchorBrowsePropertyPage: TGUID = (
|
|
D1:$3050f3BB; D2:$98b5; D3:$11cf; D4:($bb,$82,$00,$aa,$00,$bd,$ce,$0b));
|
|
|
|
{$EXTERNALSYM CLSID_CImageBrowsePropertyPage}
|
|
CLSID_CImageBrowsePropertyPage: TGUID = (
|
|
D1:$3050f3B3; D2:$98b5; D3:$11cf; D4:($bb,$82,$00,$aa,$00,$bd,$ce,$0b));
|
|
|
|
{$EXTERNALSYM CLSID_CDocBrowsePropertyPage}
|
|
CLSID_CDocBrowsePropertyPage: TGUID = (
|
|
D1:$3050f3B4; D2:$98b5; D3:$11cf; D4:($bb,$82,$00,$aa,$00,$bd,$ce,$0b));
|
|
|
|
{$EXTERNALSYM IID_IFileSystemBindData}
|
|
IID_IFileSystemBindData: TGUID = (
|
|
D1:$01e18d10; D2:$4d8b; D3:$11d2; D4:($85,$5d,$00,$60,$08,$05,$93,$67));
|
|
|
|
{$EXTERNALSYM SID_STopWindow}
|
|
SID_STopWindow: TGUID = (
|
|
D1:$49e1b500; D2:$4636; D3:$11d3; D4:($97,$f7,$00,$c0,$4f,$45,$d0,$b3));
|
|
|
|
{$EXTERNALSYM SID_SGetViewFromViewDual}
|
|
SID_SGetViewFromViewDual: TGUID = (
|
|
D1:$889A935D; D2:$971E; D3:$4B12; D4:($B9,$0C,$24,$DF,$C9,$E1,$E5,$E8));
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM CLSID_FolderItem}
|
|
CLSID_FolderItem: TGUID = (
|
|
D1:$fef10fa2; D2:$355e; D3:$4e06; D4:($93,$81,$9b,$24,$d7,$f7,$cc,$88));
|
|
|
|
{$EXTERNALSYM CLSID_FolderItemsFDF}
|
|
CLSID_FolderItemsFDF: TGUID = (
|
|
D1:$53c74826; D2:$ab99; D3:$4d33; D4:($ac,$a4,$31,$17,$f5,$1d,$37,$88));
|
|
|
|
{$EXTERNALSYM CLSID_NewMenu}
|
|
CLSID_NewMenu: TGUID = (
|
|
D1:$d969a300; D2:$e7ff; D3:$11d0; D4:($a9,$3b,$00,$a0,$c9,$0f,$27,$19));
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
// BHIDs for IShellItem::BindToHandler()
|
|
// BHID_LocalCopyHelper is #defined as CLSID_LocalCopyHelper, but the latter is
|
|
// not defined anywhere.
|
|
{$EXTERNALSYM BHID_SFObject}
|
|
BHID_SFObject: TGUID = (
|
|
D1:$3981e224; D2:$f559; D3:$11d3; D4:($8e,$3a,$00,$c0,$4f,$68,$37,$d5));
|
|
{$EXTERNALSYM BHID_SFUIObject}
|
|
BHID_SFUIObject: TGUID = (
|
|
D1:$3981e225; D2:$f559; D3:$11d3; D4:($8e,$3a,$00,$c0,$4f,$68,$37,$d5));
|
|
{$EXTERNALSYM BHID_SFViewObject}
|
|
BHID_SFViewObject: TGUID = (
|
|
D1:$3981e226; D2:$f559; D3:$11d3; D4:($8e,$3a,$00,$c0,$4f,$68,$37,$d5));
|
|
{$EXTERNALSYM BHID_Storage}
|
|
BHID_Storage: TGUID = (
|
|
D1:$3981e227; D2:$f559; D3:$11d3; D4:($8e,$3a,$00,$c0,$4f,$68,$37,$d5));
|
|
{$EXTERNALSYM BHID_Stream}
|
|
BHID_Stream: TGUID = (
|
|
D1:$1cebb3ab; D2:$7c10; D3:$499a; D4:($a4,$17,$92,$ca,$16,$c4,$cb,$83));
|
|
{$EXTERNALSYM BHID_LinkTargetItem}
|
|
BHID_LinkTargetItem: TGUID = (
|
|
D1:$3981e228; D2:$f559; D3:$11d3; D4:($8e,$3a,$00,$c0,$4f,$68,$37,$d5));
|
|
{$EXTERNALSYM BHID_StorageEnum}
|
|
BHID_StorageEnum: TGUID = (
|
|
D1:$4621a4e3; D2:$f0d6; D3:$4773; D4:($8a,$9c,$46,$e7,$7b,$17,$48,$40));
|
|
|
|
{$EXTERNALSYM SID_CtxQueryAssociations}
|
|
SID_CtxQueryAssociations: TGUID = (
|
|
D1:$faadfc40; D2:$b777; D3:$4b69; D4:($aa,$81,$77,$03,$5e,$f0,$e6,$e8));
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM IID_IDocViewSite}
|
|
IID_IDocViewSite: TGUID = (
|
|
D1:$87D605E0; D2:$C511; D3:$11CF; D4:($89,$A9,$00,$A0,$C9,$05,$41,$29));
|
|
|
|
{$EXTERNALSYM CLSID_QuickLinks}
|
|
CLSID_QuickLinks: TGUID = (
|
|
D1:$e5cbf21; D2:$d15f; D3:$11d0; D4:($83,$1,$00,$aa,$00,$5b,$43,$83));
|
|
|
|
// The IShellFolder band
|
|
{$EXTERNALSYM CLSID_ISFBand}
|
|
CLSID_ISFBand: TGUID = (
|
|
D1:$D82BE2B0; D2:$5764; D3:$11D0; D4:($A9,$6E,$00,$C0,$4F,$D7,$05,$A2));
|
|
|
|
{$EXTERNALSYM IID_CDefView}
|
|
IID_CDefView: TGUID = (
|
|
D1:$4434FF80; D2:$EF4C; D3:$11CE; D4:($AE,$65,$08,$00,$2B,$2E,$12,$62));
|
|
|
|
{$EXTERNALSYM CLSID_ShellFldSetExt}
|
|
CLSID_ShellFldSetExt: TGUID = (
|
|
D1:$6D5313C0; D2:$8C62; D3:$11D1; D4:($B2,$CD,$00,$60,$97,$DF,$8C,$11));
|
|
|
|
{$EXTERNALSYM SID_SMenuBandChild}
|
|
SID_SMenuBandChild: TGUID = (
|
|
D1:$ed9cc020; D2:$08b9; D3:$11d1; D4:($98,$23,$00,$c0,$4f,$d9,$19,$72));
|
|
|
|
{$EXTERNALSYM SID_SMenuBandParent}
|
|
SID_SMenuBandParent: TGUID = (
|
|
D1:$8c278eec; D2:$3eab; D3:$11d1; D4:($8c,$b0,$00,$c0,$4f,$d9,$18,$d0));
|
|
|
|
{$EXTERNALSYM SID_SMenuPopup}
|
|
SID_SMenuPopup: TGUID = (
|
|
D1:$D1E7AFEB; D2:$6A2E; D3:$11D0; D4:($8C,$78,$00,$C0,$4F,$D9,$18,$B4));
|
|
|
|
{$EXTERNALSYM SID_SMenuBandBottomSelected}
|
|
SID_SMenuBandBottomSelected: TGUID = (
|
|
D1:$165EBAF4; D2:$6D51; D3:$11D2; D4:($83,$AD,$00,$C0,$4F,$D9,$18,$D0));
|
|
|
|
{$EXTERNALSYM SID_SMenuBandBottom}
|
|
SID_SMenuBandBottom: TGUID = (
|
|
D1:$743CA664; D2:$0DEB; D3:$11D1; D4:($98,$25,$00,$C0,$4F,$D9,$19,$72));
|
|
|
|
{$EXTERNALSYM SID_MenuShellFolder}
|
|
SID_MenuShellFolder: TGUID = (
|
|
D1:$A6C17EB4; D2:$2D65; D3:$11D2; D4:($83,$8F,$00,$C0,$4F,$D9,$18,$D0));
|
|
|
|
//Command Group ID for MenuDeskBar
|
|
{$EXTERNALSYM CGID_MENUDESKBAR}
|
|
CGID_MENUDESKBAR: TGUID = (
|
|
D1:$5C9F0A12; D2:$959E; D3:$11D0; D4:($A3,$A4,$00,$A0,$C9,$08,$26,$36));
|
|
|
|
{$EXTERNALSYM SID_SMenuBandTop}
|
|
SID_SMenuBandTop: TGUID = (
|
|
D1:$9493A810; D2:$EC38; D3:$11D0; D4:($BC,$46,$00,$AA,$00,$6C,$E2,$F5));
|
|
|
|
{$EXTERNALSYM CLSID_MenuToolbarBase}
|
|
CLSID_MenuToolbarBase: TGUID = (
|
|
D1:$40B96610; D2:$B522; D3:$11D1; D4:($B3,$B4,$00,$AA,$00,$6E,$FD,$E7));
|
|
|
|
{$EXTERNALSYM IID_IBanneredBar}
|
|
IID_IBanneredBar: TGUID = (
|
|
D1:$596A9A94; D2:$013E; D3:$11D1; D4:($8D,$34,$00,$A0,$C9,$0F,$27,$19));
|
|
|
|
{$EXTERNALSYM CLSID_MenuBandSite}
|
|
CLSID_MenuBandSite: TGUID = (
|
|
D1:$E13EF4E4; D2:$D2F2; D3:$11D0; D4:($98,$16,$00,$C0,$4F,$D9,$19,$72));
|
|
|
|
{$EXTERNALSYM SID_SCommDlgBrowser}
|
|
SID_SCommDlgBrowser: TGUID = (
|
|
D1:$80F30233; D2:$B7DF; D3:$11D2; D4:($A3,$3B,$00,$60,$97,$DF,$5B,$D4));
|
|
|
|
{$IFDEF DELPHI6_UP}
|
|
{$ALIGN 8}
|
|
{$ELSE}
|
|
{$A+}
|
|
//Warning: Record alignment 4
|
|
{$ENDIF DELPHI6_UP}
|
|
|
|
// -- shtypes.h --
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
//===========================================================================
|
|
//
|
|
// Object identifiers in the explorer's name space (ItemID and IDList)
|
|
//
|
|
// All the items that the user can browse with the explorer (such as files,
|
|
// directories, servers, work-groups, etc.) has an identifier which is unique
|
|
// among items within the parent folder. Those identifiers are called item
|
|
// IDs (SHITEMID). Since all its parent folders have their own item IDs,
|
|
// any items can be uniquely identified by a list of item IDs, which is called
|
|
// an ID list (ITEMIDLIST).
|
|
//
|
|
// ID lists are almost always allocated by the task allocator (see some
|
|
// description below as well as OLE 2.0 SDK) and may be passed across
|
|
// some of shell interfaces (such as IShellFolder). Each item ID in an ID list
|
|
// is only meaningful to its parent folder (which has generated it), and all
|
|
// the clients must treat it as an opaque binary data except the first two
|
|
// bytes, which indicates the size of the item ID.
|
|
//
|
|
// When a shell extension -- which implements the IShellFolder interace --
|
|
// generates an item ID, it may put any information in it, not only the data
|
|
// with that it needs to identifies the item, but also some additional
|
|
// information, which would help implementing some other functions efficiently.
|
|
// For example, the shell's IShellFolder implementation of file system items
|
|
// stores the primary (long) name of a file or a directory as the item
|
|
// identifier, but it also stores its alternative (short) name, size and date
|
|
// etc.
|
|
//
|
|
// When an ID list is passed to one of shell APIs (such as SHGetPathFromIDList),
|
|
// it is always an absolute path -- relative from the root of the name space,
|
|
// which is the desktop folder. When an ID list is passed to one of IShellFolder
|
|
// member function, it is always a relative path from the folder (unless it
|
|
// is explicitly specified).
|
|
//
|
|
//===========================================================================
|
|
//
|
|
// SHITEMID -- Item ID (mkid)
|
|
// Word cb; // Size of the ID (including cb itself)
|
|
// BYTE abID[]; // The item ID (variable length)
|
|
//
|
|
|
|
type
|
|
PSHItemID = ^TSHItemID;
|
|
{$EXTERNALSYM _SHITEMID}
|
|
_SHITEMID = packed record
|
|
cb: Word;
|
|
abID: array[0..0] of Byte;
|
|
end;
|
|
{$EXTERNALSYM SHITEMID}
|
|
SHITEMID = _SHITEMID;
|
|
TSHItemID = _SHITEMID;
|
|
|
|
//
|
|
// ITEMIDLIST -- List if item IDs (combined with 0-terminator)
|
|
//
|
|
PItemIDList = ^TItemIDList;
|
|
{$EXTERNALSYM _ITEMIDLIST}
|
|
_ITEMIDLIST = packed record
|
|
mkid: TSHItemID;
|
|
end;
|
|
{$EXTERNALSYM ITEMIDLIST}
|
|
ITEMIDLIST = _ITEMIDLIST;
|
|
TItemIDList = _ITEMIDLIST;
|
|
|
|
{$NODEFINE PPItemIDList}
|
|
PPItemIDList = ^PItemIDList;
|
|
{$NODEFINE TPItemIDListArray}
|
|
TPItemIDListArray = array[0..65535] of PItemIDList;
|
|
{$NODEFINE PPItemIDListArray}
|
|
PPItemIDListArray = ^TPItemIDListArray;
|
|
|
|
{$IFDEF DELPHI6_UP}
|
|
{$ALIGN 8}
|
|
{$ELSE}
|
|
{$A+}
|
|
//Warning: Record alignment 4
|
|
{$ENDIF DELPHI6_UP}
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// struct STRRET
|
|
//
|
|
// structure for returning strings from IShellFolder member functions
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// uType indicate which union member to use
|
|
// STRRET_WSTR Use STRRET.pOleStr must be freed by caller of GetDisplayNameOf
|
|
// STRRET_OFFSET Use STRRET.uOffset Offset into SHITEMID for ANSI string
|
|
// STRRET_CSTR Use STRRET.cStr ANSI Buffer
|
|
//
|
|
{$EXTERNALSYM tagSTRRET_TYPE}
|
|
tagSTRRET_TYPE = DWORD;
|
|
{$EXTERNALSYM STRRET_TYPE}
|
|
STRRET_TYPE = tagSTRRET_TYPE;
|
|
TStrRetType = tagSTRRET_TYPE;
|
|
|
|
const
|
|
{$EXTERNALSYM STRRET_WSTR}
|
|
STRRET_WSTR = $0;
|
|
{$EXTERNALSYM STRRET_OFFSET}
|
|
STRRET_OFFSET = $1;
|
|
{$EXTERNALSYM STRRET_CSTR}
|
|
STRRET_CSTR = $2;
|
|
|
|
type
|
|
PStrRet = ^TStrRet;
|
|
{$EXTERNALSYM _STRRET}
|
|
_STRRET = record
|
|
case uType: UINT of
|
|
STRRET_WSTR:
|
|
(pOleStr: PWideChar);
|
|
STRRET_OFFSET:
|
|
(uOffset: UINT);
|
|
STRRET_CSTR:
|
|
(cStr: array[0..259] of AnsiChar);
|
|
end;
|
|
{$EXTERNALSYM STRRET}
|
|
STRRET = _STRRET;
|
|
TStrRet = _STRRET;
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// struct SHELLDETAILS
|
|
//
|
|
// structure for returning strings from IShellDetails
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// fmt; // LVCFMT_* value (header only)
|
|
// cxChar; // Number of 'average' characters (header only)
|
|
// str; // String information
|
|
//
|
|
PShellDetails = ^TShellDetails;
|
|
{$EXTERNALSYM _SHELLDETAILS}
|
|
_SHELLDETAILS = packed record
|
|
fmt: Integer;
|
|
cxChar: Integer;
|
|
str: TStrRet;
|
|
end;
|
|
{$EXTERNALSYM SHELLDETAILS}
|
|
SHELLDETAILS = _SHELLDETAILS;
|
|
TShellDetails = _SHELLDETAILS;
|
|
|
|
// -- shobjidl.h --
|
|
|
|
{$EXTERNALSYM IPersistFolder}
|
|
IPersistFolder = interface(IPersist)
|
|
['{000214EA-0000-0000-C000-000000000046}']
|
|
function Initialize(pidl: PItemIDList): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IPersistFolder2}
|
|
IPersistFolder2 = interface(IPersistFolder)
|
|
['{1AC3D9F0-175C-11d1-95BE-00609797EA4F}']
|
|
function GetCurFolder(out ppidl: PItemIDList): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IPersistIDList}
|
|
IPersistIDList = interface(IPersist)
|
|
['{1079acfc-29bd-11d3-8e0d-00c04f6837d5}']
|
|
function SetIDList(pidl: PItemIDList): HResult; stdcall;
|
|
function GetIDList(out ppidl: PItemIDList): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IEnumIDList}
|
|
IEnumIDList = interface(IUnknown)
|
|
['{000214F2-0000-0000-C000-000000000046}']
|
|
function Next(celt: ULONG; out rgelt: PItemIDList; out pceltFetched: ULONG): HResult; stdcall;
|
|
function Skip(celt: ULONG): HResult; stdcall;
|
|
function Reset: HResult; stdcall;
|
|
function Clone(out ppenum: IEnumIDList): HResult; stdcall;
|
|
end;
|
|
|
|
type
|
|
{$EXTERNALSYM tagSHGDN}
|
|
tagSHGDN = DWORD;
|
|
{$EXTERNALSYM SHGNO}
|
|
SHGNO = tagSHGDN;
|
|
TSHGNO = tagSHGDN;
|
|
|
|
const
|
|
{$EXTERNALSYM SHGDN_NORMAL}
|
|
SHGDN_NORMAL = $0000; // default (display purpose)
|
|
{$EXTERNALSYM SHGDN_INFOLDER}
|
|
SHGDN_INFOLDER = $0001; // displayed under a folder (relative)
|
|
{$EXTERNALSYM SHGDN_FOREDITING}
|
|
SHGDN_FOREDITING = $1000; // for in-place editing
|
|
{$EXTERNALSYM SHGDN_FORADDRESSBAR}
|
|
SHGDN_FORADDRESSBAR = $4000; // UI friendly parsing name (remove ugly stuff)
|
|
{$EXTERNALSYM SHGDN_FORPARSING}
|
|
SHGDN_FORPARSING = $8000; // parsing name for ParseDisplayName()
|
|
|
|
type
|
|
{$EXTERNALSYM SHGDNF}
|
|
SHGDNF = DWORD;
|
|
TSHGDNF = DWORD;
|
|
|
|
{$EXTERNALSYM tagSHCONTF}
|
|
tagSHCONTF = DWORD;
|
|
{$EXTERNALSYM SHCONTF}
|
|
SHCONTF = DWORD;
|
|
TSHContF = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM SHCONTF_FOLDERS}
|
|
SHCONTF_FOLDERS = $0020; // only want folders enumerated (SFGAO_FOLDER)
|
|
{$EXTERNALSYM SHCONTF_NONFOLDERS}
|
|
SHCONTF_NONFOLDERS = $0040; // include non folders
|
|
{$EXTERNALSYM SHCONTF_INCLUDEHIDDEN}
|
|
SHCONTF_INCLUDEHIDDEN = $0080; // show items normally hidden
|
|
{$EXTERNALSYM SHCONTF_INIT_ON_FIRST_NEXT}
|
|
SHCONTF_INIT_ON_FIRST_NEXT = $0100; // allow EnumObject() to return before validating enum
|
|
{$EXTERNALSYM SHCONTF_NETPRINTERSRCH}
|
|
SHCONTF_NETPRINTERSRCH = $0200; // hint that client is looking for printers
|
|
{$EXTERNALSYM SHCONTF_SHAREABLE}
|
|
SHCONTF_SHAREABLE = $0400; // hint that client is looking sharable resources (remote shares)
|
|
{$EXTERNALSYM SHCONTF_STORAGE}
|
|
SHCONTF_STORAGE = $0800; // include all items with accessible storage and their ancestors
|
|
|
|
{$EXTERNALSYM SHCIDS_ALLFIELDS}
|
|
SHCIDS_ALLFIELDS = $80000000;
|
|
{$EXTERNALSYM SHCIDS_CANONICALONLY}
|
|
SHCIDS_CANONICALONLY = $10000000;
|
|
{$EXTERNALSYM SHCIDS_BITMASK}
|
|
SHCIDS_BITMASK = $FFFF0000;
|
|
{$EXTERNALSYM SHCIDS_COLUMNMASK}
|
|
SHCIDS_COLUMNMASK = $0000FFFF;
|
|
{$EXTERNALSYM SFGAO_CANCOPY}
|
|
SFGAO_CANCOPY = DROPEFFECT_COPY; // Objects can be copied (0x1)
|
|
{$EXTERNALSYM SFGAO_CANMOVE}
|
|
SFGAO_CANMOVE = DROPEFFECT_MOVE; // Objects can be moved (0x2)
|
|
{$EXTERNALSYM SFGAO_CANLINK}
|
|
SFGAO_CANLINK = DROPEFFECT_LINK; // Objects can be linked (0x4)
|
|
{$EXTERNALSYM SFGAO_STORAGE}
|
|
SFGAO_STORAGE = $00000008; // supports BindToObject(IID_IStorage)
|
|
{$EXTERNALSYM SFGAO_CANRENAME}
|
|
SFGAO_CANRENAME = $00000010; // Objects can be renamed
|
|
{$EXTERNALSYM SFGAO_CANDELETE}
|
|
SFGAO_CANDELETE = $00000020; // Objects can be deleted
|
|
{$EXTERNALSYM SFGAO_HASPROPSHEET}
|
|
SFGAO_HASPROPSHEET = $00000040; // Objects have property sheets
|
|
{$EXTERNALSYM SFGAO_DROPTARGET}
|
|
SFGAO_DROPTARGET = $00000100; // Objects are drop target
|
|
{$EXTERNALSYM SFGAO_CAPABILITYMASK}
|
|
SFGAO_CAPABILITYMASK = $00000177;
|
|
{$EXTERNALSYM SFGAO_ENCRYPTED}
|
|
SFGAO_ENCRYPTED = $00002000; // object is encrypted (use alt color)
|
|
{$EXTERNALSYM SFGAO_ISSLOW}
|
|
SFGAO_ISSLOW = $00004000; // 'slow' object
|
|
{$EXTERNALSYM SFGAO_GHOSTED}
|
|
SFGAO_GHOSTED = $00008000; // ghosted icon
|
|
{$EXTERNALSYM SFGAO_LINK}
|
|
SFGAO_LINK = $00010000; // Shortcut (link)
|
|
{$EXTERNALSYM SFGAO_SHARE}
|
|
SFGAO_SHARE = $00020000; // shared
|
|
{$EXTERNALSYM SFGAO_READONLY}
|
|
SFGAO_READONLY = $00040000; // read-only
|
|
{$EXTERNALSYM SFGAO_HIDDEN}
|
|
SFGAO_HIDDEN = $00080000; // hidden object
|
|
{$EXTERNALSYM SFGAO_DISPLAYATTRMASK}
|
|
SFGAO_DISPLAYATTRMASK = $000FC000;
|
|
{$EXTERNALSYM SFGAO_FILESYSANCESTOR}
|
|
SFGAO_FILESYSANCESTOR = $10000000; // may contain children with SFGAO_FILESYSTEM
|
|
{$EXTERNALSYM SFGAO_FOLDER}
|
|
SFGAO_FOLDER = $20000000; // support BindToObject(IID_IShellFolder)
|
|
{$EXTERNALSYM SFGAO_FILESYSTEM}
|
|
SFGAO_FILESYSTEM = $40000000; // is a win32 file system object (file/folder/root)
|
|
{$EXTERNALSYM SFGAO_HASSUBFOLDER}
|
|
SFGAO_HASSUBFOLDER = $80000000; // may contain children with SFGAO_FOLDER
|
|
{$EXTERNALSYM SFGAO_CONTENTSMASK}
|
|
SFGAO_CONTENTSMASK = $80000000;
|
|
{$EXTERNALSYM SFGAO_VALIDATE}
|
|
SFGAO_VALIDATE = $01000000; // invalidate cached information
|
|
{$EXTERNALSYM SFGAO_REMOVABLE}
|
|
SFGAO_REMOVABLE = $02000000; // is this removeable media?
|
|
{$EXTERNALSYM SFGAO_COMPRESSED}
|
|
SFGAO_COMPRESSED = $04000000; // Object is compressed (use alt color)
|
|
{$EXTERNALSYM SFGAO_BROWSABLE}
|
|
SFGAO_BROWSABLE = $08000000; // supports IShellFolder, but only implements CreateViewObject() (non-folder view)
|
|
{$EXTERNALSYM SFGAO_NONENUMERATED}
|
|
SFGAO_NONENUMERATED = $00100000; // is a non-enumerated object
|
|
{$EXTERNALSYM SFGAO_NEWCONTENT}
|
|
SFGAO_NEWCONTENT = $00200000; // should show bold in explorer tree
|
|
{$EXTERNALSYM SFGAO_CANMONIKER}
|
|
SFGAO_CANMONIKER = $00400000; // defunct
|
|
{$EXTERNALSYM SFGAO_HASSTORAGE}
|
|
SFGAO_HASSTORAGE = $00400000; // defunct
|
|
{$EXTERNALSYM SFGAO_STREAM}
|
|
SFGAO_STREAM = $00400000; // supports BindToObject(IID_IStream)
|
|
{$EXTERNALSYM SFGAO_STORAGEANCESTOR}
|
|
SFGAO_STORAGEANCESTOR = $00800000; // may contain children with SFGAO_STORAGE or SFGAO_STREAM
|
|
{$EXTERNALSYM SFGAO_STORAGECAPMASK}
|
|
SFGAO_STORAGECAPMASK = $70C50008; // for determining storage capabilities, ie for open/save semantics
|
|
|
|
type
|
|
{$EXTERNALSYM SFGAOF}
|
|
SFGAOF = ULONG;
|
|
TSFGAOF = ULONG;
|
|
|
|
const
|
|
{$EXTERNALSYM STR_SKIP_BINDING_CLSID}
|
|
STR_SKIP_BINDING_CLSID = 'Skip Binding CLSID';
|
|
{$EXTERNALSYM STR_PARSE_PREFER_FOLDER_BROWSING}
|
|
STR_PARSE_PREFER_FOLDER_BROWSING = 'Parse Prefer Folder Browsing';
|
|
{$EXTERNALSYM STR_DONT_PARSE_RELATIVE}
|
|
STR_DONT_PARSE_RELATIVE = 'Don''t Parse Relative';
|
|
{$EXTERNALSYM STR_PARSE_TRANSLATE_ALIASES}
|
|
STR_PARSE_TRANSLATE_ALIASES = 'Parse Translate Aliases';
|
|
{$EXTERNALSYM STR_PARSE_SHELL_PROTOCOL_TO_FILE_OBJECTS}
|
|
STR_PARSE_SHELL_PROTOCOL_TO_FILE_OBJECTS = 'Parse Shell Protocol To File Objects';
|
|
|
|
type
|
|
{$EXTERNALSYM IShellFolder}
|
|
IShellFolder = interface(IUnknown)
|
|
['{000214E6-0000-0000-C000-000000000046}']
|
|
function ParseDisplayName(hwnd: HWND; pbc: IBindCtx;
|
|
var pszDisplayName: POleStr; out pchEaten: ULONG; out ppidl: PItemIDList;
|
|
var pdwAttributes: ULONG): HResult; stdcall;
|
|
function EnumObjects(hwnd: HWND; grfFlags: TSHContF;
|
|
out ppenumIDList: IEnumIDList): HResult; stdcall;
|
|
function BindToObject(pidl: PItemIDList; pbc: IBindCtx; const riid: TIID;
|
|
out ppv): HResult; stdcall;
|
|
function BindToStorage(pidl: PItemIDList; pbc: IBindCtx; const riid: TIID;
|
|
out ppv): HResult; stdcall;
|
|
function CompareIDs(ram: LPARAM;
|
|
pidl1, pidl2: PItemIDList): HResult; stdcall;
|
|
function CreateViewObject(hwndOwner: HWND; const riid: TIID;
|
|
out ppv): HResult; stdcall;
|
|
function GetAttributesOf(cidl: UINT; var apidl: PItemIDList;
|
|
var rgfInOut: TSFGAOF): HResult; stdcall;
|
|
function GetUIObjectOf(hwndOwner: HWND; cidl: UINT; var apidl: PItemIDList;
|
|
const riid: TIID; rffReserved: PUINT;
|
|
out ppv): HResult; stdcall;
|
|
function GetDisplayNameOf(pidl: PItemIDList; uFlags: TSHGDNF;
|
|
out pName: TStrRet): HResult; stdcall;
|
|
function SetNameOf(hwnd: HWND; pidl: PItemIDList; pszName: POleStr;
|
|
uFlags: TSHGDNF; out ppidlOut: PItemIDList): HResult; stdcall;
|
|
end;
|
|
|
|
PExtraSearch = ^TExtraSearch;
|
|
{$EXTERNALSYM tagEXTRASEARCH}
|
|
tagEXTRASEARCH = record
|
|
guidSearch: TGUID;
|
|
wszFriendlyName: array[0..79] of WideChar;
|
|
wszUrl: array[0..2083] of WideChar;
|
|
end;
|
|
{$EXTERNALSYM EXTRASEARCH}
|
|
EXTRASEARCH = tagEXTRASEARCH;
|
|
TExtraSearch = tagEXTRASEARCH;
|
|
|
|
{$EXTERNALSYM IEnumExtraSearch}
|
|
IEnumExtraSearch = interface(IUnknown)
|
|
['{0E700BE1-9DB6-11d1-A1CE-00C04FD75D13}']
|
|
function Next(celt: ULONG; out rgelt: TExtraSearch;
|
|
out pceltFetched: ULONG): HResult; stdcall;
|
|
function Skip(celt: ULONG): HResult; stdcall;
|
|
function Reset: HResult; stdcall;
|
|
function Clone(out ppenum: IEnumExtraSearch): HResult; stdcall;
|
|
end;
|
|
|
|
type
|
|
{$EXTERNALSYM SHCOLSTATE}
|
|
SHCOLSTATE = DWORD;
|
|
TSHColState = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM SHCOLSTATE_TYPE_STR}
|
|
SHCOLSTATE_TYPE_STR = $01;
|
|
{$EXTERNALSYM SHCOLSTATE_TYPE_INT}
|
|
SHCOLSTATE_TYPE_INT = $02;
|
|
{$EXTERNALSYM SHCOLSTATE_TYPE_DATE}
|
|
SHCOLSTATE_TYPE_DATE = $03;
|
|
{$EXTERNALSYM SHCOLSTATE_TYPEMASK}
|
|
SHCOLSTATE_TYPEMASK = $0F;
|
|
{$EXTERNALSYM SHCOLSTATE_ONBYDEFAULT}
|
|
SHCOLSTATE_ONBYDEFAULT = $10;
|
|
{$EXTERNALSYM SHCOLSTATE_SLOW}
|
|
SHCOLSTATE_SLOW = $20;
|
|
{$EXTERNALSYM SHCOLSTATE_EXTENDED}
|
|
SHCOLSTATE_EXTENDED = $40;
|
|
{$EXTERNALSYM SHCOLSTATE_SECONDARYUI}
|
|
SHCOLSTATE_SECONDARYUI = $80;
|
|
{$EXTERNALSYM SHCOLSTATE_HIDDEN}
|
|
SHCOLSTATE_HIDDEN = $100;
|
|
{$EXTERNALSYM SHCOLSTATE_PREFER_VARCMP}
|
|
SHCOLSTATE_PREFER_VARCMP = $200;
|
|
|
|
type
|
|
{$EXTERNALSYM SHCOLSTATEF}
|
|
SHCOLSTATEF = DWORD;
|
|
TSHColStateF = DWORD;
|
|
|
|
type
|
|
PSHColumnID = ^TSHColumnID;
|
|
{$EXTERNALSYM SHCOLUMNID}
|
|
SHCOLUMNID = record
|
|
fmtid: TGUID;
|
|
pid: DWORD;
|
|
end;
|
|
TSHColumnID = SHCOLUMNID;
|
|
|
|
{$EXTERNALSYM IShellFolder2}
|
|
IShellFolder2 = interface(IShellFolder)
|
|
['{93F2F68C-1D1B-11d3-A30E-00C04F79ABD1}']
|
|
function GetDefaultSearchGUID(out pguid: TGUID): HResult; stdcall;
|
|
function EnumSearches(out ppenum: IEnumExtraSearch): HResult; stdcall;
|
|
function GetDefaultColumn(dwRes: DWORD;
|
|
out pSort, pDisplay: ULONG): HResult; stdcall;
|
|
function GetDefaultColumnState(iColumn: UINT;
|
|
out pcsFlags: TSHColStateF): HResult; stdcall;
|
|
function GetDetailsEx(pidl: PItemIDList; const pscid: TSHColumnID;
|
|
pv: POleVariant): HResult; stdcall;
|
|
function GetDetailsOf(pidl: PItemIDList; iColumn: UINT;
|
|
out psd: TShellDetails): HResult; stdcall;
|
|
function MapColumnToSCID(iColumn: UINT;
|
|
const pscid: TSHColumnID): HResult; stdcall;
|
|
end;
|
|
|
|
{$NODEFINE PViewSettings}
|
|
PViewSettings = PAnsiChar;
|
|
|
|
{$EXTERNALSYM FOLDERFLAGS}
|
|
FOLDERFLAGS = DWORD;
|
|
TFolderFlags = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM FWF_AUTOARRANGE}
|
|
FWF_AUTOARRANGE = $1;
|
|
{$EXTERNALSYM FWF_ABBREVIATEDNAMES}
|
|
FWF_ABBREVIATEDNAMES = $2;
|
|
{$EXTERNALSYM FWF_SNAPTOGRID}
|
|
FWF_SNAPTOGRID = $4;
|
|
{$EXTERNALSYM FWF_OWNERDATA}
|
|
FWF_OWNERDATA = $8;
|
|
{$EXTERNALSYM FWF_BESTFITWINDOW}
|
|
FWF_BESTFITWINDOW = $10;
|
|
{$EXTERNALSYM FWF_DESKTOP}
|
|
FWF_DESKTOP = $20;
|
|
{$EXTERNALSYM FWF_SINGLESEL}
|
|
FWF_SINGLESEL = $40;
|
|
{$EXTERNALSYM FWF_NOSUBFOLDERS}
|
|
FWF_NOSUBFOLDERS = $80;
|
|
{$EXTERNALSYM FWF_TRANSPARENT}
|
|
FWF_TRANSPARENT = $100;
|
|
{$EXTERNALSYM FWF_NOCLIENTEDGE}
|
|
FWF_NOCLIENTEDGE = $200;
|
|
{$EXTERNALSYM FWF_NOSCROLL}
|
|
FWF_NOSCROLL = $400;
|
|
{$EXTERNALSYM FWF_ALIGNLEFT}
|
|
FWF_ALIGNLEFT = $800;
|
|
{$EXTERNALSYM FWF_NOICONS}
|
|
FWF_NOICONS = $1000;
|
|
{$EXTERNALSYM FWF_SHOWSELALWAYS}
|
|
FWF_SHOWSELALWAYS = $2000;
|
|
{$EXTERNALSYM FWF_NOVISIBLE}
|
|
FWF_NOVISIBLE = $4000;
|
|
{$EXTERNALSYM FWF_SINGLECLICKACTIVATE}
|
|
FWF_SINGLECLICKACTIVATE = $8000;
|
|
{$EXTERNALSYM FWF_NOWEBVIEW}
|
|
FWF_NOWEBVIEW = $10000;
|
|
{$EXTERNALSYM FWF_HIDEFILENAMES}
|
|
FWF_HIDEFILENAMES = $20000;
|
|
{$EXTERNALSYM FWF_CHECKSELECT}
|
|
FWF_CHECKSELECT = $40000;
|
|
|
|
type
|
|
{$EXTERNALSYM FOLDERVIEWMODE}
|
|
FOLDERVIEWMODE = DWORD;
|
|
TFolderViewMode = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM FVM_FIRST}
|
|
FVM_FIRST = 1;
|
|
{$EXTERNALSYM FVM_ICON}
|
|
FVM_ICON = 1;
|
|
{$EXTERNALSYM FVM_SMALLICON}
|
|
FVM_SMALLICON = 2;
|
|
{$EXTERNALSYM FVM_LIST}
|
|
FVM_LIST = 3;
|
|
{$EXTERNALSYM FVM_DETAILS}
|
|
FVM_DETAILS = 4;
|
|
{$EXTERNALSYM FVM_THUMBNAIL}
|
|
FVM_THUMBNAIL = 5;
|
|
{$EXTERNALSYM FVM_TILE}
|
|
FVM_TILE = 6;
|
|
{$EXTERNALSYM FVM_THUMBSTRIP}
|
|
FVM_THUMBSTRIP = 7;
|
|
{$EXTERNALSYM FVM_LAST}
|
|
FVM_LAST = 7;
|
|
|
|
type
|
|
PFolderSettings = ^TFolderSettings;
|
|
{$EXTERNALSYM FOLDERSETTINGS}
|
|
FOLDERSETTINGS = record
|
|
ViewMode: UINT;
|
|
fFlags: UINT;
|
|
end;
|
|
TFolderSettings = FOLDERSETTINGS;
|
|
|
|
const
|
|
{$EXTERNALSYM SVSI_DESELECT}
|
|
SVSI_DESELECT = $00000000;
|
|
{$EXTERNALSYM SVSI_SELECT}
|
|
SVSI_SELECT = $00000001;
|
|
{$EXTERNALSYM SVSI_EDIT}
|
|
SVSI_EDIT = $00000003; // includes select
|
|
{$EXTERNALSYM SVSI_DESELECTOTHERS}
|
|
SVSI_DESELECTOTHERS = $00000004;
|
|
{$EXTERNALSYM SVSI_ENSUREVISIBLE}
|
|
SVSI_ENSUREVISIBLE = $00000008;
|
|
{$EXTERNALSYM SVSI_FOCUSED}
|
|
SVSI_FOCUSED = $00000010;
|
|
{$EXTERNALSYM SVSI_TRANSLATEPT}
|
|
SVSI_TRANSLATEPT = $00000020;
|
|
{$EXTERNALSYM SVSI_SELECTIONMARK}
|
|
SVSI_SELECTIONMARK = $00000040;
|
|
{$EXTERNALSYM SVSI_POSITIONITEM}
|
|
SVSI_POSITIONITEM = $00000080;
|
|
{$EXTERNALSYM SVSI_CHECK}
|
|
SVSI_CHECK = $00000100;
|
|
{$EXTERNALSYM SVSI_NOSTATECHANGE}
|
|
SVSI_NOSTATECHANGE = $80000000;
|
|
|
|
type
|
|
{$EXTERNALSYM SVSIF}
|
|
SVSIF = UINT;
|
|
TSVSIF = UINT;
|
|
|
|
{$EXTERNALSYM SVGIO}
|
|
SVGIO = DWORD;
|
|
TSVGIO = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM SVGIO_BACKGROUND}
|
|
SVGIO_BACKGROUND = 0;
|
|
{$EXTERNALSYM SVGIO_SELECTION}
|
|
SVGIO_SELECTION = $1;
|
|
{$EXTERNALSYM SVGIO_ALLVIEW}
|
|
SVGIO_ALLVIEW = $2;
|
|
{$EXTERNALSYM SVGIO_CHECKED}
|
|
SVGIO_CHECKED = $3;
|
|
{$EXTERNALSYM SVGIO_TYPE_MASK}
|
|
SVGIO_TYPE_MASK = $f;
|
|
{$EXTERNALSYM SVGIO_FLAG_VIEWORDER}
|
|
SVGIO_FLAG_VIEWORDER = $80000000;
|
|
|
|
type
|
|
{$EXTERNALSYM SVUIA_STATUS}
|
|
SVUIA_STATUS = DWORD;
|
|
TSVUIAStatus = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM SVUIA_DEACTIVATE}
|
|
SVUIA_DEACTIVATE = 0;
|
|
{$EXTERNALSYM SVUIA_ACTIVATE_NOFOCUS}
|
|
SVUIA_ACTIVATE_NOFOCUS = 1;
|
|
{$EXTERNALSYM SVUIA_ACTIVATE_FOCUS}
|
|
SVUIA_ACTIVATE_FOCUS = 2;
|
|
{$EXTERNALSYM SVUIA_INPLACEACTIVATE}
|
|
SVUIA_INPLACEACTIVATE = 3;
|
|
|
|
type
|
|
{$EXTERNALSYM LPFNSVADDPROPSHEETPAGE}
|
|
LPFNSVADDPROPSHEETPAGE = LPFNADDPROPSHEETPAGE;
|
|
TFNVSAddPropSheetPage = LPFNADDPROPSHEETPAGE;
|
|
|
|
{ -------------------------------------------------------------------------- }
|
|
|
|
{ Interface: IShellBrowser }
|
|
|
|
{ IShellBrowser interface is the interface that is provided by the shell }
|
|
{ explorer/folder frame window. When it creates the "contents pane" of }
|
|
{ a shell folder (which provides IShellFolder interface), it calls its }
|
|
{ CreateViewObject member function to create an IShellView object. Then, }
|
|
{ it calls its CreateViewWindow member to create the "contents pane" }
|
|
{ window. The pointer to the IShellBrowser interface is passed to }
|
|
{ the IShellView object as a parameter to this CreateViewWindow member }
|
|
{ function call. }
|
|
|
|
{ +--------------------------+ <-- Explorer window }
|
|
{ | [] Explorer | }
|
|
{ |--------------------------+ IShellBrowser }
|
|
{ | File Edit View .. | }
|
|
{ |--------------------------| }
|
|
{ | | | }
|
|
{ | | <-------- Content pane }
|
|
{ | | | }
|
|
{ | | | IShellView }
|
|
{ | | | }
|
|
{ | | | }
|
|
{ +--------------------------+ }
|
|
|
|
|
|
|
|
{ [Member functions] }
|
|
|
|
|
|
{ IShellBrowser.GetWindow(phwnd) }
|
|
|
|
{ Inherited from IOleWindow.GetWindow. }
|
|
|
|
|
|
{ IShellBrowser.ContextSensitiveHelp(fEnterMode) }
|
|
|
|
{ Inherited from IOleWindow.ContextSensitiveHelp. }
|
|
|
|
|
|
{ IShellBrowser.InsertMenusSB(hmenuShared, lpMenuWidths) }
|
|
|
|
{ Similar to the IOleInPlaceFrame.InsertMenus. The explorer will put }
|
|
{ "File" and "Edit" pulldown in the File menu group, "View" and "Tools" }
|
|
{ in the Container menu group and "Help" in the Window menu group. Each }
|
|
{ pulldown menu will have a uniqu ID, FCIDM_MENU_FILE/EDIT/VIEW/TOOLS/HELP. }
|
|
{ The view is allowed to insert menuitems into those sub-menus by those }
|
|
{ IDs must be between FCIDM_SHVIEWFIRST and FCIDM_SHVIEWLAST. }
|
|
|
|
|
|
{ IShellBrowser.SetMenuSB(hmenuShared, holemenu, hwndActiveObject) }
|
|
|
|
{ Similar to the IOleInPlaceFrame.SetMenu. The explorer ignores the }
|
|
{ holemenu parameter (reserved for future enhancement) and performs }
|
|
{ menu-dispatch based on the menuitem IDs (see the description above). }
|
|
{ It is important to note that the explorer will add different }
|
|
{ set of menuitems depending on whether the view has a focus or not. }
|
|
{ Therefore, it is very important to call ISB.OnViewWindowActivate }
|
|
{ whenever the view window (or its children) gets the focus. }
|
|
|
|
|
|
{ IShellBrowser.RemoveMenusSB(hmenuShared) }
|
|
|
|
{ Same as the IOleInPlaceFrame.RemoveMenus. }
|
|
|
|
|
|
{ IShellBrowser.SetStatusTextSB(lpszStatusText) }
|
|
|
|
{ Same as the IOleInPlaceFrame.SetStatusText. It is also possible to }
|
|
{ send messages directly to the status window via SendControlMsg. }
|
|
|
|
|
|
{ IShellBrowser.EnableModelessSB(fEnable) }
|
|
|
|
{ Same as the IOleInPlaceFrame.EnableModeless. }
|
|
|
|
{ IShellBrowser.TranslateAcceleratorSB(lpmsg, wID) }
|
|
|
|
{ Same as the IOleInPlaceFrame.TranslateAccelerator, but will be }
|
|
{ never called because we don't support EXEs (i.e., the explorer has }
|
|
{ the message loop). This member function is defined here for possible }
|
|
{ future enhancement. }
|
|
|
|
|
|
{ IShellBrowser.BrowseObject(pidl, wFlags) }
|
|
|
|
{ The view calls this member to let shell explorer browse to another }
|
|
{ folder. The pidl and wFlags specifies the folder to be browsed. }
|
|
|
|
{ Following three flags specifies whether it creates another window or not. }
|
|
{ SBSP_SAMEBROWSER -- Browse to another folder with the same window. }
|
|
{ SBSP_NEWBROWSER -- Creates another window for the specified folder. }
|
|
{ SBSP_DEFBROWSER -- Default behavior (respects the view option). }
|
|
|
|
{ Following three flags specifies open, explore, or default mode. These . }
|
|
{ are ignored if SBSP_SAMEBROWSER or (SBSP_DEFBROWSER && (single window . }
|
|
{ browser || explorer)). . }
|
|
{ SBSP_OPENMODE -- Use a normal folder window }
|
|
{ SBSP_EXPLOREMODE -- Use an explorer window }
|
|
{ SBSP_DEFMODE -- Use the same as the current window }
|
|
|
|
{ Following three flags specifies the pidl. }
|
|
{ SBSP_ABSOLUTE -- pidl is an absolute pidl (relative from desktop) }
|
|
{ SBSP_RELATIVE -- pidl is relative from the current folder. }
|
|
{ SBSP_PARENT -- Browse the parent folder (ignores the pidl) }
|
|
{ SBSP_NAVIGATEBACK -- Navigate back (ignores the pidl) }
|
|
{ SBSP_NAVIGATEFORWARD -- Navigate forward (ignores the pidl) }
|
|
|
|
{ Following two flags control history manipulation as result of navigate }
|
|
{ SBSP_WRITENOHISTORY -- write no history (shell folder) entry }
|
|
{ SBSP_NOAUTOSELECT -- suppress selection in history pane }
|
|
|
|
|
|
{ IShellBrowser.GetViewStateStream(grfMode, ppstm) }
|
|
|
|
{ The browser returns an IStream interface as the storage for view }
|
|
{ specific state information. }
|
|
|
|
{ grfMode -- Specifies the read/write access (STGM_READ/WRITE/READWRITE) }
|
|
{ ppstm -- Specifies the LPSTREAM variable to be filled. }
|
|
|
|
|
|
{ IShellBrowser.GetControlWindow(id, phwnd) }
|
|
|
|
{ The shell view may call this member function to get the window handle }
|
|
{ of Explorer controls (toolbar or status winodw -- FCW_TOOLBAR or }
|
|
{ FCW_STATUS). }
|
|
|
|
|
|
{ IShellBrowser.SendControlMsg(id, uMsg, wParam, lParam, pret) }
|
|
|
|
{ The shell view calls this member function to send control messages to }
|
|
{ one of Explorer controls (toolbar or status window -- FCW_TOOLBAR or }
|
|
{ FCW_STATUS). }
|
|
|
|
|
|
{ IShellBrowser.QueryActiveShellView(IShellView * ppshv) }
|
|
|
|
{ This member returns currently activated (displayed) shellview object. }
|
|
{ A shellview never need to call this member function. }
|
|
|
|
|
|
{ IShellBrowser.OnViewWindowActive(pshv) }
|
|
|
|
{ The shell view window calls this member function when the view window }
|
|
{ (or one of its children) got the focus. It MUST call this member before }
|
|
{ calling IShellBrowser.InsertMenus, because it will insert different }
|
|
{ set of menu items depending on whether the view has the focus or not. }
|
|
|
|
|
|
{ IShellBrowser.SetToolbarItems(lpButtons, nButtons, uFlags) }
|
|
|
|
{ The view calls this function to add toolbar items to the exporer's }
|
|
{ toolbar. "lpButtons" and "nButtons" specifies the array of toolbar }
|
|
{ items. "uFlags" must be one of FCT_MERGE, FCT_CONFIGABLE, FCT_ADDTOEND. }
|
|
|
|
{ ------------------------------------------------------------------------- }
|
|
|
|
const
|
|
{$EXTERNALSYM SBSP_DEFBROWSER}
|
|
SBSP_DEFBROWSER = $0000;
|
|
{$EXTERNALSYM SBSP_SAMEBROWSER}
|
|
SBSP_SAMEBROWSER = $0001;
|
|
{$EXTERNALSYM SBSP_NEWBROWSER}
|
|
SBSP_NEWBROWSER = $0002;
|
|
{$EXTERNALSYM SBSP_DEFMODE}
|
|
SBSP_DEFMODE = $0000;
|
|
{$EXTERNALSYM SBSP_OPENMODE}
|
|
SBSP_OPENMODE = $0010;
|
|
{$EXTERNALSYM SBSP_EXPLOREMODE}
|
|
SBSP_EXPLOREMODE = $0020;
|
|
{$EXTERNALSYM SBSP_HELPMODE}
|
|
SBSP_HELPMODE = $0040; // IEUNIX : Help window uses this.
|
|
{$EXTERNALSYM SBSP_NOTRANSFERHIST}
|
|
SBSP_NOTRANSFERHIST = $0080;
|
|
{$EXTERNALSYM SBSP_ABSOLUTE}
|
|
SBSP_ABSOLUTE = $0000;
|
|
{$EXTERNALSYM SBSP_RELATIVE}
|
|
SBSP_RELATIVE = $1000;
|
|
{$EXTERNALSYM SBSP_PARENT}
|
|
SBSP_PARENT = $2000;
|
|
{$EXTERNALSYM SBSP_NAVIGATEBACK}
|
|
SBSP_NAVIGATEBACK = $4000;
|
|
{$EXTERNALSYM SBSP_NAVIGATEFORWARD}
|
|
SBSP_NAVIGATEFORWARD = $8000;
|
|
{$EXTERNALSYM SBSP_ALLOW_AUTONAVIGATE}
|
|
SBSP_ALLOW_AUTONAVIGATE = $10000;
|
|
{$EXTERNALSYM SBSP_CALLERUNTRUSTED}
|
|
SBSP_CALLERUNTRUSTED = $00800000;
|
|
{$EXTERNALSYM SBSP_TRUSTFIRSTDOWNLOAD}
|
|
SBSP_TRUSTFIRSTDOWNLOAD = $01000000;
|
|
{$EXTERNALSYM SBSP_UNTRUSTEDFORDOWNLOAD}
|
|
SBSP_UNTRUSTEDFORDOWNLOAD = $02000000;
|
|
{$EXTERNALSYM SBSP_NOAUTOSELECT}
|
|
SBSP_NOAUTOSELECT = $04000000;
|
|
{$EXTERNALSYM SBSP_WRITENOHISTORY}
|
|
SBSP_WRITENOHISTORY = $08000000;
|
|
{$EXTERNALSYM SBSP_TRUSTEDFORACTIVEX}
|
|
SBSP_TRUSTEDFORACTIVEX = $10000000;
|
|
{$EXTERNALSYM SBSP_REDIRECT}
|
|
SBSP_REDIRECT = $40000000;
|
|
{$EXTERNALSYM SBSP_INITIATEDBYHLINKFRAME}
|
|
SBSP_INITIATEDBYHLINKFRAME = $80000000;
|
|
|
|
{$EXTERNALSYM FCW_STATUS}
|
|
FCW_STATUS = $0001;
|
|
{$EXTERNALSYM FCW_TOOLBAR}
|
|
FCW_TOOLBAR = $0002;
|
|
{$EXTERNALSYM FCW_TREE}
|
|
FCW_TREE = $0003;
|
|
{$EXTERNALSYM FCW_INTERNETBAR}
|
|
FCW_INTERNETBAR = $0006;
|
|
{$EXTERNALSYM FCW_PROGRESS}
|
|
FCW_PROGRESS = $0008;
|
|
{$EXTERNALSYM FCT_MERGE}
|
|
FCT_MERGE = $0001;
|
|
{$EXTERNALSYM FCT_CONFIGABLE}
|
|
FCT_CONFIGABLE = $0002;
|
|
{$EXTERNALSYM FCT_ADDTOEND}
|
|
FCT_ADDTOEND = $0004;
|
|
|
|
type
|
|
TTBButtonSB = TTBButton;
|
|
PTBButtonSB = PTBButton;
|
|
|
|
{$EXTERNALSYM HOLEMENU}
|
|
HOLEMENU = HGLOBAL;
|
|
|
|
IShellView = interface;
|
|
|
|
{$EXTERNALSYM IShellBrowser}
|
|
IShellBrowser = interface(IOleWindow)
|
|
['{000214E2-0000-0000-C000-000000000046}']
|
|
function InsertMenusSB(hmenuShared: HMENU;
|
|
var lpMenuWidths: TOLEMENUGROUPWIDTHS): HResult; stdcall;
|
|
function SetMenuSB(hmenuShared: HMENU; holemenuRes: HOLEMENU;
|
|
hwndActiveObject: HWND): HResult; stdcall;
|
|
function RemoveMenusSB(hmenuShared: HMENU): HResult; stdcall;
|
|
function SetStatusTextSB(pszStatusText: POleStr): HResult; stdcall;
|
|
function EnableModelessSB(fEnable: BOOL): HResult; stdcall;
|
|
function TranslateAcceleratorSB(pmsg: PMSG;
|
|
wID: Word): HResult; stdcall;
|
|
function BrowseObject(pidl: PItemIDList; wFlags: UINT): HResult; stdcall;
|
|
function GetViewStateStream(grfMode: DWORD;
|
|
out ppStrm: IStream): HResult; stdcall;
|
|
function GetControlWindow(id: UINT; out phwnd: HWND): HResult; stdcall;
|
|
function SendControlMsg(id, uMsg: UINT; wParam: WPARAM; lParam: LPARAM;
|
|
var pret: LRESULT): HResult; stdcall;
|
|
function QueryActiveShellView(out ppshv: IShellView): HResult; stdcall;
|
|
function OnViewWindowActive(pshv: IShellView): HResult; stdcall;
|
|
function SetToolbarItems(lpButtons: PTBButtonSB;
|
|
nButtons, uFlags: UINT): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IShellView}
|
|
IShellView = interface(IOleWindow)
|
|
['{000214E3-0000-0000-C000-000000000046}']
|
|
function TranslateAccelerator(pmsg: PMSG): HResult; stdcall;
|
|
function EnableModeless(fEnable: BOOL): HResult; stdcall;
|
|
function UIActivate(uState: UINT): HResult; stdcall;
|
|
function Refresh: HResult; stdcall;
|
|
function CreateViewWindow(psvPrevious: IShellView;
|
|
var pfs: TFolderSettings; psb: IShellBrowser;
|
|
out prcView: TRect; out phWnd: HWND): HResult; stdcall;
|
|
function DestroyViewWindow: HResult; stdcall;
|
|
function GetCurrentInfo(out pfs: TFolderSettings): HResult; stdcall;
|
|
function AddPropertySheetPages(dwReserved: DWORD;
|
|
pfn: TFNVSAddPropSheetPage; lparam: LPARAM): HResult; stdcall;
|
|
function SaveViewState: HResult; stdcall;
|
|
function SelectItem(pidlItem: PItemIDList;
|
|
uFlags: SVSIF): HResult; stdcall;
|
|
function GetItemObject(uItem: UINT; const riid: TIID;
|
|
out ppv): HResult; stdcall;
|
|
end;
|
|
|
|
PShellViewID = PGUID;
|
|
{$EXTERNALSYM SHELLVIEWID}
|
|
SHELLVIEWID = TGUID;
|
|
TShellViewID = TGUID;
|
|
|
|
const
|
|
{$EXTERNALSYM SV2GV_CURRENTVIEW}
|
|
SV2GV_CURRENTVIEW = UINT(-1);
|
|
{$EXTERNALSYM SV2GV_DEFAULTVIEW}
|
|
SV2GV_DEFAULTVIEW = UINT(-2);
|
|
|
|
type
|
|
PSV2CVW2Params = ^TSV2CVW2Params;
|
|
{$EXTERNALSYM _SV2CVW2_PARAMS}
|
|
_SV2CVW2_PARAMS = record
|
|
cbSize: DWORD;
|
|
psvPrev: IShellView;
|
|
pfs: PFolderSettings;
|
|
psbOwner: IShellBrowser;
|
|
prcView: PRect;
|
|
pvid: PShellViewID;
|
|
hwndView: HWND;
|
|
end;
|
|
{$EXTERNALSYM SV2CVW2_PARAMS}
|
|
SV2CVW2_PARAMS = _SV2CVW2_PARAMS;
|
|
TSV2CVW2Params = _SV2CVW2_PARAMS;
|
|
|
|
{$EXTERNALSYM IShellView2}
|
|
IShellView2 = interface(IShellView)
|
|
['{88E39E80-3578-11CF-AE69-08002B2E1262}']
|
|
function GetView(pvid: PShellViewID; uView: ULONG): HResult; stdcall;
|
|
function CreateViewWindow2(var lpParams: TSV2CVW2Params): HResult; stdcall;
|
|
function HandleRename(pidlNew: PItemIDList): HResult; stdcall;
|
|
function SelectAndPositionItem(pidlItem: PItemIDList;
|
|
uFlags: UINT; var ppt: TPoint): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IFolderView}
|
|
IFolderView = interface(IUnknown)
|
|
['{cde725b0-ccc9-4519-917e-325d72fab4ce}']
|
|
function GetCurrentViewMode(var pViewMode: UINT): HResult; stdcall;
|
|
function SetCurrentViewMode(ViewMode: UINT): HResult; stdcall;
|
|
function GetFolder(const riid: TIID; out ppv): HResult; stdcall;
|
|
function Item(iItemIndex: Integer;
|
|
out ppidl: PItemIDList): HResult; stdcall;
|
|
function ItemCount(uFlags: UINT; out pcItems: Integer): HResult; stdcall;
|
|
function Items(uFlags: UINT; const riid: TIID; out ppv): HResult; stdcall;
|
|
function GetSelectionMarkedItem(out piItem: Integer): HResult; stdcall;
|
|
function GetFocusedItem(out piItem: Integer): HResult; stdcall;
|
|
function GetItemPosition(pidl: PItemIDList;
|
|
out ppt: TPoint): HResult; stdcall;
|
|
function GetSpacing(var ppt: TPoint): HResult; stdcall;
|
|
function GetDefaultSpacing(out ppt: TPoint): HResult; stdcall;
|
|
function GetAutoArrange: HResult; stdcall;
|
|
function SelectItem(iItem: Integer; dwFlags: DWORD): HResult; stdcall;
|
|
function SelectAndPositionItems(cidl: UINT; var apidl: PItemIDList;
|
|
var apt: TPoint; dwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IFolderView}
|
|
IID_IFolderView: TGUID = '{CDE725B0-CCC9-4519-917E-325D72FAB4CE}';
|
|
{$EXTERNALSYM SID_SFolderView}
|
|
SID_SFolderView: TGUID = '{CDE725B0-CCC9-4519-917E-325D72FAB4CE}';
|
|
|
|
{$EXTERNALSYM IID_IFolderFilterSite}
|
|
IID_IFolderFilterSite: TGUID = '{C0A651F5-B48B-11d2-B5ED-006097C686F6}';
|
|
|
|
type
|
|
{$EXTERNALSYM IFolderFilterSite}
|
|
IFolderFilterSite = interface(IUnknown)
|
|
['{C0A651F5-B48B-11d2-B5ED-006097C686F6}']
|
|
function SetFilter(punk: IUnknown): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IFolderFilter}
|
|
IID_IFolderFilter: TGUID = '{9CC22886-DC8E-11d2-B1D0-00C04F8EEB3E}';
|
|
|
|
type
|
|
{$EXTERNALSYM IFolderFilter}
|
|
IFolderFilter = interface(IUnknown)
|
|
['{9CC22886-DC8E-11d2-B1D0-00C04F8EEB3E}']
|
|
function ShouldShow(psf: IShellFolder;
|
|
pidlFolder, pidlItem: PItemIDList): HResult; stdcall;
|
|
function GetEnumFlags(psf: IShellFolder; pidlFolder: PItemIDList;
|
|
var phwnd: HWND; out pgrfFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IProfferService}
|
|
IID_IProfferService: TGUID = '{CB728B20-F786-11CE-92AD-00AA00A74CD0}';
|
|
// nearest service that you can proffer to
|
|
{$EXTERNALSYM SID_SProfferService}
|
|
SID_SProfferService: TGUID = '{CB728B20-F786-11CE-92AD-00AA00A74CD0}';
|
|
|
|
type
|
|
{$EXTERNALSYM IProfferService}
|
|
IProfferService = interface(IUnknown)
|
|
['{CB728B20-F786-11CE-92AD-00AA00A74CD0}']
|
|
function ProfferService(const rguidService: TGUID; psp: IServiceProvider;
|
|
out pdwCookie: DWORD): HResult; stdcall;
|
|
function RevokeService(dwCookie: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
type
|
|
{$EXTERNALSYM PROPERTYUI_NAME_FLAGS}
|
|
PROPERTYUI_NAME_FLAGS = UINT;
|
|
TPropertyUINameFlags = UINT;
|
|
|
|
const
|
|
{$EXTERNALSYM PUIFNF_DEFAULT}
|
|
PUIFNF_DEFAULT = $0;
|
|
{$EXTERNALSYM PUIFNF_MNEMONIC}
|
|
PUIFNF_MNEMONIC = $1;
|
|
|
|
type
|
|
{$EXTERNALSYM PROPERTYUI_FLAGS}
|
|
PROPERTYUI_FLAGS = UINT;
|
|
TPropertyUIFlags = UINT;
|
|
|
|
const
|
|
{$EXTERNALSYM PUIF_DEFAULT}
|
|
PUIF_DEFAULT = $0;
|
|
{$EXTERNALSYM PUIF_RIGHTALIGN}
|
|
PUIF_RIGHTALIGN = $1;
|
|
{$EXTERNALSYM PUIF_NOLABELININFOTIP}
|
|
PUIF_NOLABELININFOTIP = $2;
|
|
|
|
type
|
|
{$EXTERNALSYM PROPERTYUI_FORMAT_FLAGS}
|
|
PROPERTYUI_FORMAT_FLAGS = UINT;
|
|
TPropertyUIFormatFlags = UINT;
|
|
|
|
const
|
|
{$EXTERNALSYM PUIFFDF_DEFAULT}
|
|
PUIFFDF_DEFAULT = $0;
|
|
{$EXTERNALSYM PUIFFDF_RIGHTTOLEFT}
|
|
PUIFFDF_RIGHTTOLEFT = $1;
|
|
{$EXTERNALSYM PUIFFDF_SHORTFORMAT}
|
|
PUIFFDF_SHORTFORMAT = $2;
|
|
{$EXTERNALSYM PUIFFDF_NOTIME}
|
|
PUIFFDF_NOTIME = $4;
|
|
{$EXTERNALSYM PUIFFDF_FRIENDLYDATE}
|
|
PUIFFDF_FRIENDLYDATE = $8;
|
|
{$EXTERNALSYM PUIFFDF_NOUNITS}
|
|
PUIFFDF_NOUNITS = $10;
|
|
|
|
{$EXTERNALSYM IID_IPropertyUI}
|
|
IID_IPropertyUI: TIID = '{757A7D9F-919A-4118-99D7-DBB208C8CC66}';
|
|
|
|
type
|
|
{$EXTERNALSYM IPropertyUI}
|
|
IPropertyUI = interface(IUnknown)
|
|
['{757A7D9F-919A-4118-99D7-DBB208C8CC66}']
|
|
function ParsePropertyName(pszName: PWideChar; out pfmtid: TFmtID;
|
|
out ppid: TPropID; var pchEaten: ULONG): HResult; stdcall;
|
|
function GetCannonicalName(fmtid: PFmtID; pid: TPropID;
|
|
pwszText: PWideChar; cchText: DWORD): HResult; stdcall;
|
|
function GetDisplayName(fmtid: PFmtID; pid: TPropID;
|
|
flags: TPropertyUINameFlags; pwszText: PWideChar;
|
|
cchText: DWORD): HResult; stdcall;
|
|
function GetPropertyDescription(fmtid: PFmtID; pid: TPropID;
|
|
pwszText: PWideChar; cchText: DWORD): HResult; stdcall;
|
|
function GetDefaultWidth(fmtid: PFmtID; pid: TPropID;
|
|
out pcxChars: ULONG): HResult; stdcall;
|
|
function GetFlags(fmtid: PFmtID; pid: TPropID;
|
|
out pFlags: TPropertyUIFlags): HResult; stdcall;
|
|
function FormatForDisplay(fmtid: PFmtID; pid: TPropID; pvar: PPropVariant;
|
|
flags: TPropertyUIFormatFlags; pwszText: PWideChar;
|
|
cchText: DWORD): HResult; stdcall;
|
|
function GetHelpInfo(fmtid: PFmtID; pid: TPropID; pwszHelpFile: PWideChar;
|
|
cch: DWORD; out puHelpID: UINT): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_ICategoryProvider}
|
|
IID_ICategoryProvider: TGUID = '{9AF64809-5864-4C26-A720-C1F78C086EE3}';
|
|
|
|
type
|
|
{$EXTERNALSYM ICategoryProvider}
|
|
ICategoryProvider = interface(IUnknown)
|
|
['{9AF64809-5864-4C26-A720-C1F78C086EE3}']
|
|
function CanCategorizeOnSCID(const pscid: TSHColumnID): HResult; stdcall;
|
|
function GetDefaultCategory(pguid: PGUID;
|
|
out pscid: TSHColumnID): HResult; stdcall;
|
|
function GetCategoryForSCID(const pscid: TSHCOLUMNID;
|
|
out pguid: TGUID): HResult; stdcall;
|
|
function EnumCategories(out penum: IEnumGUID): HResult; stdcall;
|
|
function GetCategoryName(const pguid: TGUID; pszName: PWideChar;
|
|
cch: UINT): HResult; stdcall;
|
|
function CreateCategory(const pguid: TGUID; const riid: TIID;
|
|
out ppv): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM CATEGORYINFO_FLAGS}
|
|
CATEGORYINFO_FLAGS = UINT;
|
|
TCategoryInfoFlags = UINT;
|
|
|
|
const
|
|
{$EXTERNALSYM CATINFO_NORMAL}
|
|
CATINFO_NORMAL = $0;
|
|
{$EXTERNALSYM CATINFO_COLLAPSED}
|
|
CATINFO_COLLAPSED = $1;
|
|
{$EXTERNALSYM CATINFO_HIDDEN}
|
|
CATINFO_HIDDEN = $2;
|
|
|
|
type
|
|
{$EXTERNALSYM CATSORT_FLAGS}
|
|
CATSORT_FLAGS = UINT;
|
|
TCatSortFlags = UINT;
|
|
|
|
const
|
|
{$EXTERNALSYM CATSORT_DEFAULT}
|
|
CATSORT_DEFAULT = $0;
|
|
{$EXTERNALSYM CATSORT_NAME}
|
|
CATSORT_NAME = $1;
|
|
|
|
type
|
|
PCategoryInfo = ^TCategoryInfo;
|
|
{$EXTERNALSYM CATEGORY_INFO}
|
|
CATEGORY_INFO = record
|
|
cif: TCategoryInfoFlags;
|
|
wszName: array[0..259] of WideChar;
|
|
end;
|
|
TCategoryInfo = CATEGORY_INFO;
|
|
|
|
const
|
|
IID_ICategorizer: TGUID = '{A3B14589-9174-49A8-89A3-06A1AE2B9BA7}';
|
|
|
|
type
|
|
{$EXTERNALSYM ICategorizer}
|
|
ICategorizer = interface(IUnknown)
|
|
['{A3B14589-9174-49A8-89A3-06A1AE2B9BA7}']
|
|
function GetDescription(pszDesc: PWideChar; cch: UINT): HResult; stdcall;
|
|
function GetCategory(cidl: UINT; apidl: PPItemIDList;
|
|
rgCategoryIds: PDWORD): HResult; stdcall;
|
|
function GetCategoryInfo(dwCategoryId: DWORD;
|
|
out pci: TCategoryInfo): HResult; stdcall;
|
|
function CompareCategory(csfFlags: TCatSortFlags;
|
|
dwCategoryId1, dwCategoryId2: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM SLR_FLAGS}
|
|
SLR_FLAGS = UINT;
|
|
TSLRFlags = UINT;
|
|
|
|
const
|
|
{$EXTERNALSYM SLR_NO_UI}
|
|
SLR_NO_UI = $1;
|
|
{$EXTERNALSYM SLR_ANY_MATCH}
|
|
SLR_ANY_MATCH = $2;
|
|
{$EXTERNALSYM SLR_UPDATE}
|
|
SLR_UPDATE = $4;
|
|
{$EXTERNALSYM SLR_NOUPDATE}
|
|
SLR_NOUPDATE = $8;
|
|
{$EXTERNALSYM SLR_NOSEARCH}
|
|
SLR_NOSEARCH = $10;
|
|
{$EXTERNALSYM SLR_NOTRACK}
|
|
SLR_NOTRACK = $20;
|
|
{$EXTERNALSYM SLR_NOLINKINFO}
|
|
SLR_NOLINKINFO = $40;
|
|
{$EXTERNALSYM SLR_INVOKE_MSI}
|
|
SLR_INVOKE_MSI = $80;
|
|
{$EXTERNALSYM SLR_NO_UI_WITH_MSG_PUMP}
|
|
SLR_NO_UI_WITH_MSG_PUMP = $101;
|
|
|
|
type
|
|
{$EXTERNALSYM SLGP_FLAGS}
|
|
SLGP_FLAGS = UINT;
|
|
TSLGPFlags = UINT;
|
|
|
|
const
|
|
{$EXTERNALSYM SLGP_SHORTPATH}
|
|
SLGP_SHORTPATH = $1;
|
|
{$EXTERNALSYM SLGP_UNCPRIORITY}
|
|
SLGP_UNCPRIORITY = $2;
|
|
{$EXTERNALSYM SLGP_RAWPATH}
|
|
SLGP_RAWPATH = $4;
|
|
|
|
type
|
|
{$EXTERNALSYM IShellLinkA}
|
|
IShellLinkA = interface(IUnknown)
|
|
['{000214EE-0000-0000-C000-000000000046}']
|
|
function GetPath(pszFile: PAnsiChar; cch: Integer; var pfd: TWin32FindDataA;
|
|
fFlags: DWORD): HResult; stdcall;
|
|
function GetIDList(out ppidl: PItemIDList): HResult; stdcall;
|
|
function SetIDList(pidl: PItemIDList): HResult; stdcall;
|
|
function GetDescription(pszName: PAnsiChar; cch: Integer): HResult; stdcall;
|
|
function SetDescription(pszName: PAnsiChar): HResult; stdcall;
|
|
function GetWorkingDirectory(pszDir: PAnsiChar;
|
|
cch: Integer): HResult; stdcall;
|
|
function SetWorkingDirectory(pszDir: PAnsiChar): HResult; stdcall;
|
|
function GetArguments(pszArgs: PAnsiChar; cch: Integer): HResult; stdcall;
|
|
function SetArguments(pszArgs: PAnsiChar): HResult; stdcall;
|
|
function GetHotkey(out pwHotkey: Word): HResult; stdcall;
|
|
function SetHotkey(wHotkey: Word): HResult; stdcall;
|
|
function GetShowCmd(out piShowCmd: Integer): HResult; stdcall;
|
|
function SetShowCmd(iShowCmd: Integer): HResult; stdcall;
|
|
function GetIconLocation(pszIconPath: PAnsiChar; cch: Integer;
|
|
out piIcon: Integer): HResult; stdcall;
|
|
function SetIconLocation(pszIconPath: PAnsiChar;
|
|
iIcon: Integer): HResult; stdcall;
|
|
function SetRelativePath(pszPathRel: PAnsiChar;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function Resolve(hwnd: HWND; fFlags: DWORD): HResult; stdcall;
|
|
function SetPath(pszFile: PAnsiChar): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IShellLinkW}
|
|
IShellLinkW = interface(IUnknown)
|
|
['{000214F9-0000-0000-C000-000000000046}']
|
|
function GetPath(pszFile: PWideChar; cch: Integer; var pfd: TWin32FindDataW;
|
|
fFlags: DWORD): HResult; stdcall;
|
|
function GetIDList(out ppidl: PItemIDList): HResult; stdcall;
|
|
function SetIDList(pidl: PItemIDList): HResult; stdcall;
|
|
function GetDescription(pszName: PWideChar; cch: Integer): HResult; stdcall;
|
|
function SetDescription(pszName: PWideChar): HResult; stdcall;
|
|
function GetWorkingDirectory(pszDir: PWideChar;
|
|
cch: Integer): HResult; stdcall;
|
|
function SetWorkingDirectory(pszDir: PWideChar): HResult; stdcall;
|
|
function GetArguments(pszArgs: PWideChar; cch: Integer): HResult; stdcall;
|
|
function SetArguments(pszArgs: PWideChar): HResult; stdcall;
|
|
function GetHotkey(out pwHotkey: Word): HResult; stdcall;
|
|
function SetHotkey(wHotkey: Word): HResult; stdcall;
|
|
function GetShowCmd(out piShowCmd: Integer): HResult; stdcall;
|
|
function SetShowCmd(iShowCmd: Integer): HResult; stdcall;
|
|
function GetIconLocation(pszIconPath: PWideChar; cch: Integer;
|
|
out piIcon: Integer): HResult; stdcall;
|
|
function SetIconLocation(pszIconPath: PWideChar;
|
|
iIcon: Integer): HResult; stdcall;
|
|
function SetRelativePath(pszPathRel: PWideChar;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function Resolve(hwnd: HWND; fFlags: DWORD): HResult; stdcall;
|
|
function SetPath(pszFile: PWideChar): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IShellLink}
|
|
IShellLink = IShellLinkA;
|
|
|
|
{$HPPEMIT '#ifdef UNICODE'}
|
|
{$HPPEMIT '#define _di_IShellLink _di_IShellLinkW'}
|
|
{$HPPEMIT '#else'}
|
|
{$HPPEMIT '#define _di_IShellLink _di_IShellLinkA'}
|
|
{$HPPEMIT '#endif'}
|
|
|
|
type
|
|
{$EXTERNALSYM SPINITF}
|
|
SPINITF = DWORD;
|
|
TSpinItF = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM SPINITF_NORMAL}
|
|
SPINITF_NORMAL = $0;
|
|
{$EXTERNALSYM SPINITF_MODAL}
|
|
SPINITF_MODAL = $1;
|
|
{$EXTERNALSYM SPINITF_NOMINIMIZE}
|
|
SPINITF_NOMINIMIZE = $8;
|
|
|
|
{$EXTERNALSYM IID_IActionProgressDialog}
|
|
IID_IActionProgressDialog: TGUID = '{49FF1172-EADC-446D-9285-156453A6431C}';
|
|
|
|
type
|
|
{$EXTERNALSYM IActionProgressDialog}
|
|
IActionProgressDialog = interface(IUnknown)
|
|
['{49FF1172-EADC-446D-9285-156453A6431C}']
|
|
function Initialize(flags: SPINITF;
|
|
pszTitle, pszCancel: PWideChar): HResult; stdcall;
|
|
function Stop: HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IHWEventHandler}
|
|
IID_IHWEventHandler: TGUID = '{C1FB73D0-EC3A-4BA2-B512-8CDB9187B6D1}';
|
|
|
|
type
|
|
{$EXTERNALSYM IHWEventHandler}
|
|
IHWEventHandler = interface(IUnknown)
|
|
['{C1FB73D0-EC3A-4BA2-B512-8CDB9187B6D1}']
|
|
function Initialize(pszParams: PWideChar): HResult; stdcall;
|
|
function HandleEvent(
|
|
pszDeviceID, pszAltDeviceID, pszEventType: PWideChar): HResult; stdcall;
|
|
function HandleEventWithContent(
|
|
pszDeviceID, pszAltDeviceID, pszEventType, pszContentTypeHandler: PWideChar;
|
|
pdataobject: IDataObject): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM ARCONTENT_AUTORUNINF}
|
|
ARCONTENT_AUTORUNINF = $00000002;
|
|
{$EXTERNALSYM ARCONTENT_AUDIOCD}
|
|
ARCONTENT_AUDIOCD = $00000004;
|
|
{$EXTERNALSYM ARCONTENT_DVDMOVIE}
|
|
ARCONTENT_DVDMOVIE = $00000008;
|
|
{$EXTERNALSYM ARCONTENT_BLANKCD}
|
|
ARCONTENT_BLANKCD = $00000010;
|
|
{$EXTERNALSYM ARCONTENT_BLANKDVD}
|
|
ARCONTENT_BLANKDVD = $00000020;
|
|
{$EXTERNALSYM ARCONTENT_UNKNOWNCONTENT}
|
|
ARCONTENT_UNKNOWNCONTENT = $00000040;
|
|
{$EXTERNALSYM ARCONTENT_AUTOPLAYPIX}
|
|
ARCONTENT_AUTOPLAYPIX = $00000080;
|
|
{$EXTERNALSYM ARCONTENT_AUTOPLAYMUSIC}
|
|
ARCONTENT_AUTOPLAYMUSIC = $00000100;
|
|
{$EXTERNALSYM ARCONTENT_AUTOPLAYVIDEO}
|
|
ARCONTENT_AUTOPLAYVIDEO = $00000200;
|
|
|
|
{$EXTERNALSYM IID_IQueryCancelAutoPlay}
|
|
IID_IQueryCancelAutoPlay: TGUID = '{DDEFE873-6997-4E68-BE26-39B633ADBE12}';
|
|
|
|
type
|
|
{$EXTERNALSYM IQueryCancelAutoPlay}
|
|
IQueryCancelAutoPlay = interface(IUnknown)
|
|
['{DDEFE873-6997-4E68-BE26-39B633ADBE12}']
|
|
function AllowAutoPlay(pszPath: PWideChar; dwContentType: DWORD;
|
|
pszLabel: PWideChar; dwSerialNumber: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
type
|
|
{$EXTERNALSYM SPBEGINF}
|
|
SPBEGINF = DWORD;
|
|
TSPBeginF = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM SPBEGINF_NORMAL}
|
|
SPBEGINF_NORMAL = $00;
|
|
{$EXTERNALSYM SPBEGINF_AUTOTIME}
|
|
SPBEGINF_AUTOTIME = $02;
|
|
{$EXTERNALSYM SPBEGINF_NOPROGRESSBAR}
|
|
SPBEGINF_NOPROGRESSBAR = $10;
|
|
{$EXTERNALSYM SPBEGINF_MARQUEEPROGRESS}
|
|
SPBEGINF_MARQUEEPROGRESS = $20;
|
|
|
|
type
|
|
{$EXTERNALSYM _SPACTION}
|
|
_SPACTION = DWORD;
|
|
{$EXTERNALSYM SPACTION}
|
|
SPACTION = _SPACTION;
|
|
TSPAction = _SPACTION;
|
|
|
|
const
|
|
{$EXTERNALSYM SPACTION_NONE}
|
|
SPACTION_NONE = 0;
|
|
{$EXTERNALSYM SPACTION_MOVING}
|
|
SPACTION_MOVING = SPACTION_NONE + 1;
|
|
{$EXTERNALSYM SPACTION_COPYING}
|
|
SPACTION_COPYING = SPACTION_MOVING + 1;
|
|
{$EXTERNALSYM SPACTION_RECYCLING}
|
|
SPACTION_RECYCLING = SPACTION_COPYING + 1;
|
|
{$EXTERNALSYM SPACTION_APPLYINGATTRIBS}
|
|
SPACTION_APPLYINGATTRIBS = SPACTION_RECYCLING + 1;
|
|
{$EXTERNALSYM SPACTION_DOWNLOADING}
|
|
SPACTION_DOWNLOADING = SPACTION_APPLYINGATTRIBS + 1;
|
|
{$EXTERNALSYM SPACTION_SEARCHING_INTERNET}
|
|
SPACTION_SEARCHING_INTERNET = SPACTION_DOWNLOADING + 1;
|
|
{$EXTERNALSYM SPACTION_CALCULATING}
|
|
SPACTION_CALCULATING = SPACTION_SEARCHING_INTERNET + 1;
|
|
{$EXTERNALSYM SPACTION_UPLOADING}
|
|
SPACTION_UPLOADING = SPACTION_CALCULATING + 1;
|
|
{$EXTERNALSYM SPACTION_SEARCHING_FILES}
|
|
SPACTION_SEARCHING_FILES = SPACTION_UPLOADING + 1;
|
|
|
|
type
|
|
{$EXTERNALSYM _SPTEXT}
|
|
_SPTEXT = DWORD;
|
|
{$EXTERNALSYM SPTEXT}
|
|
SPTEXT = _SPTEXT;
|
|
TSPText = _SPTEXT;
|
|
|
|
const
|
|
{$EXTERNALSYM SPTEXT_ACTIONDESCRIPTION}
|
|
SPTEXT_ACTIONDESCRIPTION = 1;
|
|
{$EXTERNALSYM SPTEXT_ACTIONDETAIL}
|
|
SPTEXT_ACTIONDETAIL = SPTEXT_ACTIONDESCRIPTION + 1;
|
|
|
|
{$EXTERNALSYM IID_IActionProgress}
|
|
IID_IActionProgress: TGUID = '{49FF1173-EADC-446D-9285-156453A6431C}';
|
|
|
|
type
|
|
{$EXTERNALSYM IActionProgress}
|
|
IActionProgress = interface(IUnknown)
|
|
['{49FF1173-EADC-446D-9285-156453A6431C}']
|
|
function _Begin(action: TSPAction; flags: TSPBeginF): HResult; stdcall;
|
|
function UpdateProgress(ulCompleted, ulTotal: Int64): HResult; stdcall;
|
|
function UpdateText(sptext: TSPText; pszText: PWideChar;
|
|
fMayCompact: BOOL): HResult; stdcall;
|
|
function QueryCancel(out pfCancelled: BOOL): HResult; stdcall;
|
|
function ResetCancel: HResult; stdcall;
|
|
function _End: HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IShellExtInit}
|
|
IShellExtInit = interface(IUnknown)
|
|
['{000214E8-0000-0000-C000-000000000046}']
|
|
function Initialize(pidlFolder: PItemIDList; pdtobj: IDataObject;
|
|
hkeyProgID: HKEY): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM EXPPS_FILETYPES}
|
|
EXPPS_FILETYPES = $1;
|
|
|
|
type
|
|
{$EXTERNALSYM EXPPS}
|
|
EXPPS = UINT;
|
|
TExPPS = UINT;
|
|
|
|
{$EXTERNALSYM IShellPropSheetExt}
|
|
IShellPropSheetExt = interface(IUnknown)
|
|
['{000214E9-0000-0000-C000-000000000046}']
|
|
function AddPages(pfnAddPage: TFNAddPropSheetPage;
|
|
lParam: LPARAM): HResult; stdcall;
|
|
function ReplacePage(uPageID: TExPPS; pfnReplaceWith: TFNAddPropSheetPage;
|
|
lParam: LPARAM): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IRemoteComputer}
|
|
IRemoteComputer = interface(IUnknown)
|
|
['{000214FE-0000-0000-C000-000000000046}']
|
|
function Initialize(pszMachine: PWideChar;
|
|
bEnumerating: BOOL): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IQueryContinue}
|
|
IID_IQueryContinue: TGUID = '{7307055C-B24A-486B-9F25-163E597A28A9}';
|
|
|
|
type
|
|
IQueryContinue = interface(IUnknown)
|
|
['{7307055C-B24A-486B-9F25-163E597A28A9}']
|
|
function QueryContinue: HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IUserNotification}
|
|
IID_IUserNotification: TGUID = '{BA9711BA-5893-4787-A7E1-41277151550B}';
|
|
|
|
type
|
|
{$EXTERNALSYM IUserNotification}
|
|
IUserNotification = interface(IUnknown)
|
|
['{BA9711BA-5893-4787-A7E1-41277151550B}']
|
|
function SetBalloonInfo(pszTitle, pszText: PWideChar;
|
|
dwInfoFlags: DWORD): HResult; stdcall;
|
|
function SetBalloonRetry(dwShowTime, dwInterval: DWORD;
|
|
cRetryCount: UINT): HResult; stdcall;
|
|
function SetIconInfo(hIcon: HICON; pszToolTip: PWideChar): HResult; stdcall;
|
|
function Show(pqc: IQueryContinue;
|
|
dwContinuePollInterval: DWORD): HResult; stdcall;
|
|
function PlaySound(pszSoundName: PWideChar): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IItemNameLimits}
|
|
IID_IItemNameLimits: TGUID = '{1DF0D7F1-B267-4D28-8B10-12E23202A5C4}';
|
|
|
|
type
|
|
{$EXTERNALSYM IItemNameLimits}
|
|
IItemNameLimits = interface(IUnknown)
|
|
['{1DF0D7F1-B267-4D28-8B10-12E23202A5C4}']
|
|
function GetValidCharacters(
|
|
out ppwszValidChars, ppwszInvalidChars: PWideChar): HResult; stdcall;
|
|
function GetMaxLength(pszName: PWideChar;
|
|
out piMaxNameLen: Integer): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM SNCF_REFRESHLIST}
|
|
SNCF_REFRESHLIST = $00000001; // refresh the list (eg. from F5 or opening a folder)
|
|
|
|
{$EXTERNALSYM IID_INetCrawler}
|
|
IID_INetCrawler: TGUID = '{49C929EE-A1B7-4C58-B539-E63BE392B6F3}';
|
|
|
|
type
|
|
{$EXTERNALSYM INetCrawler}
|
|
INetCrawler = interface(IUnknown)
|
|
['{49C929EE-A1B7-4C58-B539-E63BE392B6F3}']
|
|
function Update(dwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
// Values for IShellTaskScheduler, moved here so the IEI_ values can be defined.
|
|
|
|
// Task priorities
|
|
// ---------------
|
|
// This depends on the cooperation of tasks currently under execution. New tasks will
|
|
// be inserted in the queue in priority order. If a task of a low priority is currently
|
|
// under execution when a higher priority task is added, the scheduler will attempt
|
|
// to suspend the task currently under execution. It will be resumed when the other tasks
|
|
// have been completed.
|
|
const
|
|
{$EXTERNALSYM ITSAT_DEFAULT_PRIORITY}
|
|
ITSAT_DEFAULT_PRIORITY = $10000000;
|
|
{$EXTERNALSYM ITSAT_MAX_PRIORITY}
|
|
ITSAT_MAX_PRIORITY = $7FFFFFFF;
|
|
{$EXTERNALSYM ITSAT_MIN_PRIORITY}
|
|
ITSAT_MIN_PRIORITY = $00000000;
|
|
|
|
{$EXTERNALSYM IEI_PRIORITY_MAX}
|
|
IEI_PRIORITY_MAX = ITSAT_MAX_PRIORITY;
|
|
{$EXTERNALSYM IEI_PRIORITY_MIN}
|
|
IEI_PRIORITY_MIN = ITSAT_MIN_PRIORITY;
|
|
{$EXTERNALSYM IEIT_PRIORITY_NORMAL}
|
|
IEIT_PRIORITY_NORMAL = ITSAT_DEFAULT_PRIORITY;
|
|
|
|
{$EXTERNALSYM IEIFLAG_ASYNC}
|
|
IEIFLAG_ASYNC = $0001; // ask the extractor if it supports ASYNC extract (free threaded)
|
|
{$EXTERNALSYM IEIFLAG_CACHE}
|
|
IEIFLAG_CACHE = $0002; // returned from the extractor if it does NOT cache the thumbnail
|
|
{$EXTERNALSYM IEIFLAG_ASPECT}
|
|
IEIFLAG_ASPECT = $0004; // passed to the extractor to beg it to render to the aspect ratio of the supplied rect
|
|
{$EXTERNALSYM IEIFLAG_OFFLINE}
|
|
IEIFLAG_OFFLINE = $0008; // if the extractor shouldn't hit the net to get any content neede for the rendering
|
|
{$EXTERNALSYM IEIFLAG_GLEAM}
|
|
IEIFLAG_GLEAM = $0010; // does the image have a gleam ? this will be returned if it does
|
|
{$EXTERNALSYM IEIFLAG_SCREEN}
|
|
IEIFLAG_SCREEN = $0020; // render as if for the screen (this is exlusive with IEIFLAG_ASPECT )
|
|
{$EXTERNALSYM IEIFLAG_ORIGSIZE}
|
|
IEIFLAG_ORIGSIZE = $0040; // render to the approx size passed, but crop if neccessary
|
|
{$EXTERNALSYM IEIFLAG_NOSTAMP}
|
|
IEIFLAG_NOSTAMP = $0080; // returned from the extractor if it does NOT want an icon stamp on the thumbnail
|
|
{$EXTERNALSYM IEIFLAG_NOBORDER}
|
|
IEIFLAG_NOBORDER = $0100; // returned from the extractor if it does NOT want an a border around the thumbnail
|
|
{$EXTERNALSYM IEIFLAG_QUALITY}
|
|
IEIFLAG_QUALITY = $0200; // passed to the Extract method to indicate that a slower, higher quality image is desired, re-compute the thumbnail
|
|
{$EXTERNALSYM IEIFLAG_REFRESH}
|
|
IEIFLAG_REFRESH = $0400; // returned from the extractor if it would like to have Refresh Thumbnail available
|
|
|
|
{$EXTERNALSYM IID_IExtractImage}
|
|
IID_IExtractImage: TGUID = '{BB2E617C-0920-11D1-9A0B-00C04FC2D6C1}';
|
|
|
|
type
|
|
{$EXTERNALSYM IExtractImage}
|
|
IExtractImage = interface(IUnknown)
|
|
['{BB2E617C-0920-11D1-9A0B-00C04FC2D6C1}']
|
|
function GetLocation(pszPathBuffer: PWideChar; cch: DWORD;
|
|
var pdwPriority: DWORD; var prgSize: SIZE; dwRecClrDepth: DWORD;
|
|
var pdwFlags: DWORD): HResult; stdcall;
|
|
function Extract(out phBmpThumbnail: HBITMAP): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IExtractImage2}
|
|
IID_IExtractImage2: TGUID = '{953BB1EE-93B4-11d1-98A3-00C04FB687DA}';
|
|
|
|
type
|
|
{$EXTERNALSYM IExtractImage2}
|
|
IExtractImage2 = interface(IExtractImage)
|
|
['{953BB1EE-93B4-11d1-98A3-00C04FB687DA}']
|
|
function GetDateStamp(out pDateStamp: TFileTime): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IUserEventTimerCallback}
|
|
IID_IUserEventTimerCallback: TGUID = '{e9ead8e6-2a25-410e-9b58-a9fbef1dd1a2}';
|
|
|
|
type
|
|
{$EXTERNALSYM IUserEventTimerCallback}
|
|
IUserEventTimerCallback = interface(IUnknown)
|
|
['{e9ead8e6-2a25-410e-9b58-a9fbef1dd1a2}']
|
|
function UserEventTimerProc(uUserEventTimerID: ULONG;
|
|
uTimerElapse: UINT): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IUserEventTimer}
|
|
IID_IUserEventTimer: TGUID = '{0F504B94-6E42-42E6-99E0-E20FAFE52AB4}';
|
|
|
|
type
|
|
{$EXTERNALSYM IUserEventTimer}
|
|
IUserEventTimer = interface(IUnknown)
|
|
['{0F504B94-6E42-42E6-99E0-E20FAFE52AB4}']
|
|
function SetUserEventTimer(hWnd: HWND;
|
|
uCallbackMessage, uTimerElapse: UINT;
|
|
pUserEventTimerCallback: IUserEventTimerCallback;
|
|
var puUserEventTimerID: ULONG): HResult; stdcall;
|
|
function KillUserEventTimer(hWnd: HWND;
|
|
uUserEventTimerID: ULONG): HResult; stdcall;
|
|
function GetUserEventTimerElapsed(hWnd: HWND; uUserEventTimerID: ULONG;
|
|
out puTimerElapsed: UINT): HResult; stdcall;
|
|
function InitTimerTickInterval(
|
|
uTimerTickIntervalMs: UINT): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IDockingWindow}
|
|
IID_IDockingWindow: TGUID = '{012dd920-7b26-11d0-8ca9-00a0c92dbfe8}';
|
|
|
|
type
|
|
{$EXTERNALSYM IDockingWindow}
|
|
IDockingWindow = interface(IOleWindow)
|
|
['{012dd920-7b26-11d0-8ca9-00a0c92dbfe8}']
|
|
function ShowDW(fShow: BOOL): HResult; stdcall;
|
|
function CloseDW(dwReserved: DWORD): HResult; stdcall;
|
|
function ResizeBorderDW(const prcBorder: TRect;
|
|
punkToolbarSite: IUnknown; fReserved: BOOL): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM DBIM_MINSIZE}
|
|
DBIM_MINSIZE = $0001;
|
|
{$EXTERNALSYM DBIM_MAXSIZE}
|
|
DBIM_MAXSIZE = $0002;
|
|
{$EXTERNALSYM DBIM_INTEGRAL}
|
|
DBIM_INTEGRAL = $0004;
|
|
{$EXTERNALSYM DBIM_ACTUAL}
|
|
DBIM_ACTUAL = $0008;
|
|
{$EXTERNALSYM DBIM_TITLE}
|
|
DBIM_TITLE = $0010;
|
|
{$EXTERNALSYM DBIM_MODEFLAGS}
|
|
DBIM_MODEFLAGS = $0020;
|
|
{$EXTERNALSYM DBIM_BKCOLOR}
|
|
DBIM_BKCOLOR = $0040;
|
|
|
|
type
|
|
PDeskBandInfo = ^TDeskBandInfo;
|
|
{$EXTERNALSYM DESKBANDINFO}
|
|
DESKBANDINFO = record
|
|
dwMask: DWORD;
|
|
ptMinSize: TPointL;
|
|
ptMaxSize: TPointL;
|
|
ptIntegral: TPointL;
|
|
ptActual: TPointL;
|
|
wszTitle: array[0..255] of WideChar;
|
|
dwModeFlags: DWORD;
|
|
crBkgnd: TColorRef;
|
|
end;
|
|
TDeskBandInfo = DESKBANDINFO;
|
|
|
|
const
|
|
{$EXTERNALSYM DBIMF_NORMAL}
|
|
DBIMF_NORMAL = $0000;
|
|
{$EXTERNALSYM DBIMF_FIXED}
|
|
DBIMF_FIXED = $0001;
|
|
{$EXTERNALSYM DBIMF_FIXEDBMP}
|
|
DBIMF_FIXEDBMP = $0004; // a fixed background bitmap (if supported)
|
|
{$EXTERNALSYM DBIMF_VARIABLEHEIGHT}
|
|
DBIMF_VARIABLEHEIGHT = $0008;
|
|
{$EXTERNALSYM DBIMF_UNDELETEABLE}
|
|
DBIMF_UNDELETEABLE = $0010;
|
|
{$EXTERNALSYM DBIMF_DEBOSSED}
|
|
DBIMF_DEBOSSED = $0020;
|
|
{$EXTERNALSYM DBIMF_BKCOLOR}
|
|
DBIMF_BKCOLOR = $0040;
|
|
{$EXTERNALSYM DBIMF_USECHEVRON}
|
|
DBIMF_USECHEVRON = $0080;
|
|
{$EXTERNALSYM DBIMF_BREAK}
|
|
DBIMF_BREAK = $0100;
|
|
{$EXTERNALSYM DBIMF_ADDTOFRONT}
|
|
DBIMF_ADDTOFRONT = $0200;
|
|
{$EXTERNALSYM DBIMF_TOPALIGN}
|
|
DBIMF_TOPALIGN = $0400;
|
|
{$EXTERNALSYM DBIF_VIEWMODE_NORMAL}
|
|
DBIF_VIEWMODE_NORMAL = $0000;
|
|
{$EXTERNALSYM DBIF_VIEWMODE_VERTICAL}
|
|
DBIF_VIEWMODE_VERTICAL = $0001;
|
|
{$EXTERNALSYM DBIF_VIEWMODE_FLOATING}
|
|
DBIF_VIEWMODE_FLOATING = $0002;
|
|
{$EXTERNALSYM DBIF_VIEWMODE_TRANSPARENT}
|
|
DBIF_VIEWMODE_TRANSPARENT = $0004;
|
|
|
|
{$EXTERNALSYM DBID_BANDINFOCHANGED}
|
|
DBID_BANDINFOCHANGED = 0;
|
|
{$EXTERNALSYM DBID_SHOWONLY}
|
|
DBID_SHOWONLY = 1;
|
|
{$EXTERNALSYM DBID_MAXIMIZEBAND}
|
|
DBID_MAXIMIZEBAND = 2;
|
|
{$EXTERNALSYM DBID_PUSHCHEVRON}
|
|
DBID_PUSHCHEVRON = 3;
|
|
{$EXTERNALSYM DBID_DELAYINIT}
|
|
DBID_DELAYINIT = 4;
|
|
{$EXTERNALSYM DBID_FINISHINIT}
|
|
DBID_FINISHINIT = 5;
|
|
{$EXTERNALSYM DBID_SETWINDOWTHEME}
|
|
DBID_SETWINDOWTHEME = 6;
|
|
{$EXTERNALSYM DBID_PERMITAUTOHIDE}
|
|
DBID_PERMITAUTOHIDE = 7;
|
|
|
|
{$EXTERNALSYM DBPC_SELECTFIRST}
|
|
DBPC_SELECTFIRST = DWORD(-1);
|
|
{$EXTERNALSYM DBPC_SELECTLAST}
|
|
DBPC_SELECTLAST = DWORD(-2);
|
|
|
|
{$EXTERNALSYM IID_IDeskBand}
|
|
IID_IDeskBand: TGUID = '{EB0FE172-1A3A-11D0-89B3-00A0C90A90AC}';
|
|
{$EXTERNALSYM CGID_DeskBand}
|
|
CGID_DeskBand: TGUID = '{EB0FE172-1A3A-11D0-89B3-00A0C90A90AC}';
|
|
|
|
type
|
|
{$EXTERNALSYM IDeskBand}
|
|
IDeskBand = interface(IDockingWindow)
|
|
['{EB0FE172-1A3A-11D0-89B3-00A0C90A90AC}']
|
|
function GetBandInfo(dwBandID, dwViewMode: DWORD;
|
|
out pdbi: TDeskBandInfo): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_ITaskbarList}
|
|
IID_ITaskbarList: TGUID = '{56FDF342-FD6D-11d0-958A-006097C9A090}';
|
|
|
|
type
|
|
{$EXTERNALSYM ITaskbarList}
|
|
ITaskbarList = interface(IUnknown)
|
|
['{56FDF342-FD6D-11d0-958A-006097C9A090}']
|
|
function HrInit: HResult; stdcall;
|
|
function AddTab(hwnd: HWND): HResult; stdcall;
|
|
function DeleteTab(hwnd: HWND): HResult; stdcall;
|
|
function ActivateTab(hwnd: HWND): HResult; stdcall;
|
|
function SetActiveAlt(hwnd: HWND): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_ITaskbarList2}
|
|
IID_ITaskbarList2: TGUID = '{602D4995-B13A-429b-A66E-1935E44F4317}';
|
|
|
|
type
|
|
{$EXTERNALSYM ITaskbarList2}
|
|
ITaskbarList2 = interface(ITaskbarList)
|
|
['{602D4995-B13A-429b-A66E-1935E44F4317}']
|
|
function MarkFullscreenWindow(hwnd: HWND;
|
|
fFullscreen: BOOL): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_ICDBurn}
|
|
IID_ICDBurn: TGUID = '{3d73a659-e5d0-4d42-afc0-5121ba425c8d}';
|
|
|
|
type
|
|
{$EXTERNALSYM ICDBurn}
|
|
ICDBurn = interface(IUnknown)
|
|
['{3d73a659-e5d0-4d42-afc0-5121ba425c8d}']
|
|
function GetRecorderDriveLetter(pszDrive: PWideChar;
|
|
cch: UINT): HResult; stdcall;
|
|
function Burn(hwnd: HWND): HResult; stdcall;
|
|
function HasRecordableDrive(out pfHasRecorder: BOOL): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IDD_WIZEXTN_FIRST}
|
|
IDD_WIZEXTN_FIRST = $5000;
|
|
{$EXTERNALSYM IDD_WIZEXTN_LAST}
|
|
IDD_WIZEXTN_LAST = $5100;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IWizardSite}
|
|
IID_IWizardSite: TGUID = '{88960f5b-422f-4e7b-8013-73415381c3c3}';
|
|
|
|
type
|
|
{$EXTERNALSYM IWizardSite}
|
|
IWizardSite = interface(IUnknown)
|
|
['{88960f5b-422f-4e7b-8013-73415381c3c3}']
|
|
function GetPreviousPage(out phpage: HPROPSHEETPAGE): HResult; stdcall;
|
|
function GetNextPage(out phpage: HPROPSHEETPAGE): HResult; stdcall;
|
|
function GetCancelledPage(out phpage: HPROPSHEETPAGE): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IWizardExtension}
|
|
IID_IWizardExtension: TGUID = '{c02ea696-86cc-491e-9b23-74394a0444a8}';
|
|
|
|
type
|
|
{$NODEFINE PHPROPSHEETPAGEArray}
|
|
PHPROPSHEETPAGEArray = ^THPROPSHEETPAGEArray;
|
|
{$NODEFINE THPROPSHEETPAGEArray}
|
|
THPROPSHEETPAGEArray = array[0..65535] of HPROPSHEETPAGE;
|
|
|
|
{$EXTERNALSYM IWizardExtension}
|
|
IWizardExtension = interface(IUnknown)
|
|
['{c02ea696-86cc-491e-9b23-74394a0444a8}']
|
|
function AddPages(aPages: PHPROPSHEETPAGEArray; cPages: UINT;
|
|
out pnPagesAdded: UINT): HResult; stdcall;
|
|
function GetFirstPage(out phpage: HPROPSHEETPAGE): HResult; stdcall;
|
|
function GetLastPage(out phpage: HPROPSHEETPAGE): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IWebWizardExtension}
|
|
IID_IWebWizardExtension: TGUID = '{0e6b3f66-98d1-48c0-a222-fbde74e2fbc5}';
|
|
|
|
type
|
|
{$EXTERNALSYM IWebWizardExtension}
|
|
IWebWizardExtension = interface(IWizardExtension)
|
|
['{0e6b3f66-98d1-48c0-a222-fbde74e2fbc5}']
|
|
function SetInitialURL(pszURL: PWideChar): HResult; stdcall;
|
|
function SetErrorURL(pszErrorURL: PWideChar): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM SID_WebWizardHost}
|
|
SID_WebWizardHost: TGUID = '{0e6b3f66-98d1-48c0-a222-fbde74e2fbc5}';
|
|
|
|
{$EXTERNALSYM SHPWHF_NORECOMPRESS}
|
|
SHPWHF_NORECOMPRESS = $00000001; // don't allow/prompt for recompress of streams
|
|
{$EXTERNALSYM SHPWHF_NONETPLACECREATE}
|
|
SHPWHF_NONETPLACECREATE = $00000002; // don't create a network place when transfer is complete
|
|
{$EXTERNALSYM SHPWHF_NOFILESELECTOR}
|
|
SHPWHF_NOFILESELECTOR = $00000004; // don't show the file selector
|
|
{$EXTERNALSYM SHPWHF_VALIDATEVIAWEBFOLDERS}
|
|
SHPWHF_VALIDATEVIAWEBFOLDERS = $00010000; // enable web folders to validate network places (ANP support)
|
|
|
|
{$EXTERNALSYM IID_IPublishingWizard}
|
|
IID_IPublishingWizard: TGUID = '{aa9198bb-ccec-472d-beed-19a4f6733f7a}';
|
|
|
|
type
|
|
{$EXTERNALSYM IPublishingWizard}
|
|
IPublishingWizard = interface(IWizardExtension)
|
|
['{aa9198bb-ccec-472d-beed-19a4f6733f7a}']
|
|
function Initialize(pdo: IDataObject; dwOptions: DWORD;
|
|
pszServiceProvider: PWideChar): HResult; stdcall;
|
|
function GetTransferManifest(out phrFromTransfer: HRESULT;
|
|
out pdocManifest: {$IFDEF DELPHI5}Pointer{$ELSE}IXMLDOMDocument{$ENDIF}): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IFolderViewHost}
|
|
IID_IFolderViewHost: TGUID = '{1ea58f02-d55a-411d-b09e-9e65ac21605b}';
|
|
|
|
type
|
|
{$EXTERNALSYM IFolderViewHost}
|
|
IFolderViewHost = interface(IUnknown)
|
|
['{1ea58f02-d55a-411d-b09e-9e65ac21605b}']
|
|
function Initialize(hwndParent: HWND; pdo: IDataObject;
|
|
var prc: TRect): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM ACDD_VISIBLE}
|
|
ACDD_VISIBLE = $0001;
|
|
|
|
{$EXTERNALSYM IID_IAutoCompleteDropDown}
|
|
IID_IAutoCompleteDropDown: TGUID = '{3CD141F4-3C6A-11d2-BCAA-00C04FD929DB}';
|
|
|
|
type
|
|
{$EXTERNALSYM IAutoCompleteDropDown}
|
|
IAutoCompleteDropDown = interface(IUnknown)
|
|
['{3CD141F4-3C6A-11d2-BCAA-00C04FD929DB}']
|
|
function GetDropDownStatus(out pdwFlags: DWORD;
|
|
out ppwszString: PWideChar): HResult; stdcall;
|
|
function ResetEnumerator: HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
// The wizard was launch explicitly by the user, not on demand by the key manager
|
|
{$EXTERNALSYM PPW_LAUNCHEDBYUSER}
|
|
PPW_LAUNCHEDBYUSER = $00000001;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IModalWindow}
|
|
IID_IModalWindow: TGUID = '{b4db1657-70d7-485e-8e3e-6fcb5a5c1802}';
|
|
|
|
type
|
|
{$EXTERNALSYM IModalWindow}
|
|
IModalWindow = interface(IUnknown)
|
|
['{b4db1657-70d7-485e-8e3e-6fcb5a5c1802}']
|
|
function Show(hwndParent: HWND): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IPassportWizard}
|
|
IID_IPassportWizard: TGUID = '{a09db586-9180-41ac-9114-460a7f362b76}';
|
|
|
|
type
|
|
IPassportWizard = interface(IModalWindow)
|
|
['{a09db586-9180-41ac-9114-460a7f362b76}']
|
|
function SetOptions(dwOptions: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM PROPSTR_EXTENSIONCOMPLETIONSTATE}
|
|
PROPSTR_EXTENSIONCOMPLETIONSTATE = 'ExtensionCompletionState';
|
|
|
|
{$EXTERNALSYM CDBE_RET_DEFAULT}
|
|
CDBE_RET_DEFAULT = $0;
|
|
{$EXTERNALSYM CDBE_RET_DONTRUNOTHEREXTS}
|
|
CDBE_RET_DONTRUNOTHEREXTS = $1;
|
|
{$EXTERNALSYM CDBE_RET_STOPWIZARD}
|
|
CDBE_RET_STOPWIZARD = $2;
|
|
|
|
{$EXTERNALSYM CDBE_TYPE_MUSIC}
|
|
CDBE_TYPE_MUSIC = $1;
|
|
{$EXTERNALSYM CDBE_TYPE_DATA}
|
|
CDBE_TYPE_DATA = $2;
|
|
{$EXTERNALSYM CDBE_TYPE_ALL}
|
|
CDBE_TYPE_ALL = $FFFFFFFF;
|
|
|
|
{$EXTERNALSYM IID_ICDBurnExt}
|
|
IID_ICDBurnExt: TGUID = '{2271dcca-74fc-4414-8fb7-c56b05ace2d7}';
|
|
{$EXTERNALSYM SID_CDWizardHost}
|
|
SID_CDWizardHost: TGUID = '{2271dcca-74fc-4414-8fb7-c56b05ace2d7}';
|
|
|
|
type
|
|
{$EXTERNALSYM ICDBurnExt}
|
|
ICDBurnExt = interface(IUnknown)
|
|
['{2271dcca-74fc-4414-8fb7-c56b05ace2d7}']
|
|
function GetSupportedActionTypes(pdwActions: PDWORD): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM PFDVENUMREADYBALLBACK}
|
|
PFDVENUMREADYBALLBACK = procedure(pvData: Pointer) cdecl;
|
|
TFDVEnumReadyCallback = PFDVENUMREADYBALLBACK;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IDVGetEnum}
|
|
IID_IDVGetEnum: TGUID = '{70F55181-5FEA-4900-B6B8-7343CB0A348C}';
|
|
|
|
type
|
|
{$EXTERNALSYM IDVGetEnum}
|
|
IDVGetEnum = interface(IUnknown)
|
|
['{70F55181-5FEA-4900-B6B8-7343CB0A348C}']
|
|
function SetEnumReadyCallback(pfn: TFDVEnumReadyCallback;
|
|
pvData: Pointer): HResult; stdcall;
|
|
function CreateEnumIDListFromContents(pidlFolder: PItemIDList;
|
|
dwEnumFlags: DWORD; out ppEnumIDList: IEnumIDList): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IInsertItem}
|
|
IID_IInsertItem: TGUID = '{D2B57227-3D23-4b95-93C0-492BD454C356}';
|
|
|
|
type
|
|
{$EXTERNALSYM IInsertItem}
|
|
IInsertItem = interface(IUnknown)
|
|
['{D2B57227-3D23-4b95-93C0-492BD454C356}']
|
|
function InsertItem(pidl: PItemIDList): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IDeskBar}
|
|
IID_IDeskBar: TGUID = '{EB0FE173-1A3A-11D0-89B3-00A0C90A90AC}';
|
|
|
|
type
|
|
{$EXTERNALSYM IDeskBar}
|
|
IDeskBar = interface(IOleWindow)
|
|
['{EB0FE173-1A3A-11D0-89B3-00A0C90A90AC}']
|
|
function SetClient(punkClient: IUnknown): HResult; stdcall;
|
|
function GetClient(out ppunkClient: IUnknown): HResult; stdcall;
|
|
function OnPosRectChangeDB(var prc: TRect): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM MBHANDCID_PIDLSELECT}
|
|
MBHANDCID_PIDLSELECT = 0;
|
|
|
|
{$EXTERNALSYM IID_IMenuBand}
|
|
IID_IMenuBand: TGUID = '{568804CD-CBD7-11d0-9816-00C04FD91972}';
|
|
|
|
type
|
|
{$EXTERNALSYM IMenuBand}
|
|
IMenuBand = interface(IUnknown)
|
|
['{568804CD-CBD7-11d0-9816-00C04FD91972}']
|
|
function IsMenuMessage(var pmsg: TMSG): HResult; stdcall;
|
|
function TranslateMenuMessage(var pmsg: TMSG;
|
|
out plRet: LRESULT): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IFolderBandPriv}
|
|
IID_IFolderBandPriv: TGUID = '{47c01f95-e185-412c-b5c5-4f27df965aea}';
|
|
|
|
type
|
|
{$EXTERNALSYM IFolderBandPriv}
|
|
IFolderBandPriv = interface(IUnknown)
|
|
['{47c01f95-e185-412c-b5c5-4f27df965aea}']
|
|
function SetCascade(f: BOOL): HResult; stdcall;
|
|
function SetAccelerators(f: BOOL): HResult; stdcall;
|
|
function SetNoIcons(f: BOOL): HResult; stdcall;
|
|
function SetNoText(f: BOOL): HResult; stdcall;
|
|
end;
|
|
|
|
PBandSiteInfo = ^TBandSiteInfo;
|
|
{$EXTERNALSYM tagBANDSITEINFO}
|
|
tagBANDSITEINFO = record
|
|
dwMask: DWORD;
|
|
dwState: DWORD;
|
|
dwStyle: DWORD;
|
|
end;
|
|
{$EXTERNALSYM BANDSITEINFO}
|
|
BANDSITEINFO = tagBANDSITEINFO;
|
|
TBandSiteInfo = tagBANDSITEINFO;
|
|
|
|
const
|
|
{$EXTERNALSYM BSID_BANDADDED}
|
|
BSID_BANDADDED = 0;
|
|
{$EXTERNALSYM BSID_BANDREMOVED}
|
|
BSID_BANDREMOVED = BSID_BANDADDED + 1;
|
|
|
|
BSIM_STATE = $00000001;
|
|
BSIM_STYLE = $00000002;
|
|
BSSF_VISIBLE = $00000001;
|
|
BSSF_NOTITLE = $00000002;
|
|
BSSF_UNDELETEABLE = $00001000;
|
|
BSIS_AUTOGRIPPER = $00000000;
|
|
BSIS_NOGRIPPER = $00000001;
|
|
BSIS_ALWAYSGRIPPER = $00000002;
|
|
BSIS_LEFTALIGN = $00000004;
|
|
BSIS_SINGLECLICK = $00000008;
|
|
BSIS_NOCONTEXTMENU = $00000010;
|
|
BSIS_NODROPTARGET = $00000020;
|
|
BSIS_NOCAPTION = $00000040;
|
|
BSIS_PREFERNOLINEBREAK = $00000080;
|
|
BSIS_LOCKED = $00000100;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IBandSite}
|
|
IID_IBandSite: TGUID = '{4CF504B0-DE96-11D0-8B3F-00A0C911E8E5}';
|
|
{$EXTERNALSYM SID_SBandSite}
|
|
SID_SBandSite: TGUID = '{4CF504B0-DE96-11D0-8B3F-00A0C911E8E5}';
|
|
{$EXTERNALSYM CGID_BandSite}
|
|
CGID_BandSite: TGUID = '{4CF504B0-DE96-11D0-8B3F-00A0C911E8E5}';
|
|
|
|
type
|
|
{$EXTERNALSYM IBandSite}
|
|
IBandSite = interface(IUnknown)
|
|
['{4CF504B0-DE96-11D0-8B3F-00A0C911E8E5}']
|
|
function AddBand(punk: IUnknown): HResult; stdcall;
|
|
function EnumBands(uBand: UINT; out pdwBandID: DWORD): HResult; stdcall;
|
|
function QueryBand(dwBandID: DWORD; out ppstb: IDeskBand;
|
|
out pdwState: DWORD; pszName: PWideChar;
|
|
cchName: Integer): HResult; stdcall;
|
|
function SetBandState(dwBandID, dwMask, dwState: DWORD): HResult; stdcall;
|
|
function RemoveBand(dwBandID: DWORD): HResult; stdcall;
|
|
function GetBandObject(dwBandID: DWORD; const riid: TIID;
|
|
out ppv): HResult; stdcall;
|
|
function SetBandSiteInfo(var pbsinfo: TBandSiteInfo): HResult; stdcall;
|
|
function GetBandSiteInfo(var pbsinfo: TBandSiteInfo): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_INamespaceWalkCB}
|
|
IID_INamespaceWalkCB: TGUID = '{d92995f8-cf5e-4a76-bf59-ead39ea2b97e}';
|
|
|
|
type
|
|
{$EXTERNALSYM INamespaceWalkCB}
|
|
INamespaceWalkCB = interface(IUnknown)
|
|
['{d92995f8-cf5e-4a76-bf59-ead39ea2b97e}']
|
|
function FoundItem(psf: IShellFolder; pidl: PItemIDList): HResult; stdcall;
|
|
function EnterFolder(psf: IShellFolder;
|
|
pidl: PItemIDList): HResult; stdcall;
|
|
function LeaveFolder(psf: IShellFolder;
|
|
pidl: PItemIDList): HResult; stdcall;
|
|
function InitializeProgressDialog(
|
|
out ppszTitle, ppszCancel: PWideChar): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM NSWF_NONE_IMPLIES_ALL}
|
|
NSWF_NONE_IMPLIES_ALL = $1;
|
|
{$EXTERNALSYM NSWF_ONE_IMPLIES_ALL}
|
|
NSWF_ONE_IMPLIES_ALL = $2;
|
|
{$EXTERNALSYM NSWF_DONT_TRAVERSE_LINKS}
|
|
NSWF_DONT_TRAVERSE_LINKS = $4;
|
|
{$EXTERNALSYM NSWF_DONT_ACCUMULATE_RESULT}
|
|
NSWF_DONT_ACCUMULATE_RESULT = $8;
|
|
{$EXTERNALSYM NSWF_TRAVERSE_STREAM_JUNCTIONS}
|
|
NSWF_TRAVERSE_STREAM_JUNCTIONS = $10;
|
|
{$EXTERNALSYM NSWF_FILESYSTEM_ONLY}
|
|
NSWF_FILESYSTEM_ONLY = $20;
|
|
{$EXTERNALSYM NSWF_SHOW_PROGRESS}
|
|
NSWF_SHOW_PROGRESS = $40;
|
|
{$EXTERNALSYM NSWF_FLAG_VIEWORDER}
|
|
NSWF_FLAG_VIEWORDER = $80;
|
|
{$EXTERNALSYM NSWF_IGNORE_AUTOPLAY_HIDA}
|
|
NSWF_IGNORE_AUTOPLAY_HIDA = $100;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_INamespaceWalk}
|
|
IID_INamespaceWalk: TGUID = '{57ced8a7-3f4a-432c-9350-30f24483f74f}';
|
|
|
|
type
|
|
{$EXTERNALSYM INamespaceWalk}
|
|
INamespaceWalk = interface(IUnknown)
|
|
['{57ced8a7-3f4a-432c-9350-30f24483f74f}']
|
|
function Walk(punkToWalk: IUnknown; dwFlags: DWORD; cDepth: Integer;
|
|
pnswcb: INamespaceWalkCB): HResult; stdcall;
|
|
function GetIDArrayResult(out pcItems: UINT;
|
|
out pppidl: PPItemIDListArray): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IRegTreeItem}
|
|
IID_IRegTreeItem: TGUID = '{A9521922-0812-4d44-9EC3-7FD38C726F3D}';
|
|
|
|
type
|
|
{$EXTERNALSYM IRegTreeItem}
|
|
IRegTreeItem = interface(IUnknown)
|
|
['{A9521922-0812-4d44-9EC3-7FD38C726F3D}']
|
|
function GetCheckState(out pbCheck: BOOL): HResult; stdcall;
|
|
function SetCheckState(bCheck: BOOL): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM MPOS_EXECUTE}
|
|
MPOS_EXECUTE = 0;
|
|
{$EXTERNALSYM MPOS_FULLCANCEL}
|
|
MPOS_FULLCANCEL = MPOS_EXECUTE + 1;
|
|
{$EXTERNALSYM MPOS_CANCELLEVEL}
|
|
MPOS_CANCELLEVEL = MPOS_FULLCANCEL + 1;
|
|
{$EXTERNALSYM MPOS_SELECTLEFT}
|
|
MPOS_SELECTLEFT = MPOS_CANCELLEVEL + 1;
|
|
{$EXTERNALSYM MPOS_SELECTRIGHT}
|
|
MPOS_SELECTRIGHT = MPOS_SELECTLEFT + 1;
|
|
{$EXTERNALSYM MPOS_CHILDTRACKING}
|
|
MPOS_CHILDTRACKING = MPOS_SELECTRIGHT + 1;
|
|
|
|
{$EXTERNALSYM MPPF_SETFOCUS}
|
|
MPPF_SETFOCUS = $1;
|
|
{$EXTERNALSYM MPPF_INITIALSELECT}
|
|
MPPF_INITIALSELECT = $2;
|
|
{$EXTERNALSYM MPPF_NOANIMATE}
|
|
MPPF_NOANIMATE = $4;
|
|
{$EXTERNALSYM MPPF_KEYBOARD}
|
|
MPPF_KEYBOARD = $10;
|
|
{$EXTERNALSYM MPPF_REPOSITION}
|
|
MPPF_REPOSITION = $20;
|
|
{$EXTERNALSYM MPPF_FORCEZORDER}
|
|
MPPF_FORCEZORDER = $40;
|
|
{$EXTERNALSYM MPPF_FINALSELECT}
|
|
MPPF_FINALSELECT = $80;
|
|
{$EXTERNALSYM MPPF_TOP}
|
|
MPPF_TOP = $20000000;
|
|
{$EXTERNALSYM MPPF_LEFT}
|
|
MPPF_LEFT = $40000000;
|
|
{$EXTERNALSYM MPPF_RIGHT}
|
|
MPPF_RIGHT = $60000000;
|
|
{$EXTERNALSYM MPPF_BOTTOM}
|
|
MPPF_BOTTOM = $80000000;
|
|
{$EXTERNALSYM MPPF_POS_MASK}
|
|
MPPF_POS_MASK = $e0000000;
|
|
|
|
{$EXTERNALSYM IID_IMenuPopup}
|
|
IID_IMenuPopup: TGUID = '{D1E7AFEB-6A2E-11d0-8C78-00C04FD918B4}';
|
|
|
|
type
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$NODEFINE TRectL}
|
|
TRectL = TRect;
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM IMenuPopup}
|
|
IMenuPopup = interface(IDeskBar)
|
|
['{D1E7AFEB-6A2E-11d0-8C78-00C04FD918B4}']
|
|
function Popup(var ppt: TPointL; var prcExclude: TRectL;
|
|
dwFlags: DWORD): HResult; stdcall;
|
|
function OnSelect(dwSelectType: DWORD): HResult; stdcall;
|
|
function SetSubMenu(pmp: IMenuPopup; fSet: BOOL): HResult; stdcall;
|
|
end;
|
|
|
|
type
|
|
{$EXTERNALSYM SIGDN}
|
|
SIGDN = DWORD; // ShellItem GetDisplayName
|
|
TSIGDN = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM SIGDN_NORMALDISPLAY}
|
|
SIGDN_NORMALDISPLAY = 0;
|
|
{$EXTERNALSYM SIGDN_PARENTRELATIVEPARSING}
|
|
SIGDN_PARENTRELATIVEPARSING = $80018001;
|
|
{$EXTERNALSYM SIGDN_PARENTRELATIVEFORADDRESSBAR}
|
|
SIGDN_PARENTRELATIVEFORADDRESSBAR = $8001c001;
|
|
{$EXTERNALSYM SIGDN_DESKTOPABSOLUTEPARSING}
|
|
SIGDN_DESKTOPABSOLUTEPARSING = $80028000;
|
|
{$EXTERNALSYM SIGDN_PARENTRELATIVEEDITING}
|
|
SIGDN_PARENTRELATIVEEDITING = $80031001;
|
|
{$EXTERNALSYM SIGDN_DESKTOPABSOLUTEEDITING}
|
|
SIGDN_DESKTOPABSOLUTEEDITING = $8004c000;
|
|
{$EXTERNALSYM SIGDN_FILESYSPATH}
|
|
SIGDN_FILESYSPATH = $80058000;
|
|
{$EXTERNALSYM SIGDN_URL}
|
|
SIGDN_URL = $80068000;
|
|
|
|
type
|
|
{$EXTERNALSYM SICHINTF}
|
|
SICHINTF = DWORD; // ShellItem Compare Hint Flag
|
|
TSICHintF = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM SICHINT_DISPLAY}
|
|
SICHINT_DISPLAY = 0;
|
|
{$EXTERNALSYM SICHINT_ALLFIELDS}
|
|
SICHINT_ALLFIELDS = $80000000;
|
|
{$EXTERNALSYM SICHINT_CANONICAL}
|
|
SICHINT_CANONICAL = $10000000;
|
|
|
|
{$EXTERNALSYM IID_IShellItem}
|
|
IID_IShellItem: TGUID = '{43826d1e-e718-42ee-bc55-a1e261c37bfe}';
|
|
|
|
type
|
|
{$EXTERNALSYM IShellItem}
|
|
IShellItem = interface(IUnknown)
|
|
['{43826d1e-e718-42ee-bc55-a1e261c37bfe}']
|
|
function BindToHandler(pbc: IBindCtx; const rbhid: TGUID; const riid: TIID;
|
|
out ppvOut): HResult; stdcall;
|
|
function GetParent(out ppsi: IShellItem): HResult; stdcall;
|
|
function GetDisplayName(sigdnName: SIGDN;
|
|
out ppszName: POleStr): HResult; stdcall;
|
|
function GetAttributes(sfgaoMask: TSFGAOF;
|
|
out psfgaoAttribs: TSFGAOF): HResult; stdcall;
|
|
function Compare(psi: IShellItem; hint: SICHINTF;
|
|
out piOrder: Integer): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IImageRecompress}
|
|
IID_IImageRecompress: TGUID = '{505f1513-6b3e-4892-a272-59f8889a4d3e}';
|
|
|
|
type
|
|
{$EXTERNALSYM IImageRecompress}
|
|
IImageRecompress = interface(IUnknown)
|
|
['{505f1513-6b3e-4892-a272-59f8889a4d3e}']
|
|
function RecompressImage(psi: IShellItem; cx, cy, iQuality: Integer;
|
|
pstg: IStorage; out ppstrmOut: IStream): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IDefViewSafety}
|
|
IID_IDefViewSafety: TGUID = '{9A93B3FB-4E75-4c74-871A-2CDA667F39A5}';
|
|
|
|
type
|
|
{$EXTERNALSYM IDefViewSafety}
|
|
IDefViewSafety = interface(IUnknown)
|
|
['{9A93B3FB-4E75-4c74-871A-2CDA667F39A5}']
|
|
function IsSafePage: HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IContextMenuSite}
|
|
IID_IContextMenuSite: TGUID = '{0811AEBE-0B87-4C54-9E72-548CF649016B}';
|
|
|
|
type
|
|
{$EXTERNALSYM IContextMenuSite}
|
|
IContextMenuSite = interface(IUnknown)
|
|
['{0811AEBE-0B87-4C54-9E72-548CF649016B}']
|
|
function DoContextMenuPopup(punkContextMenu: IUnknown; fFlags: UINT;
|
|
pt: TPoint): HResult; stdcall;
|
|
end;
|
|
|
|
PDelegateItemID = ^TDelegateItemID;
|
|
{$EXTERNALSYM tagDELEGATEITEMID}
|
|
tagDELEGATEITEMID = packed record
|
|
cbSize: Word;
|
|
wOuter: Word;
|
|
cbInner: Word;
|
|
rgb: array[0..0] of Byte;
|
|
end;
|
|
{$EXTERNALSYM DELEGATEITEMID}
|
|
DELEGATEITEMID = tagDELEGATEITEMID;
|
|
TDelegateItemID = tagDELEGATEITEMID;
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
const
|
|
{$EXTERNALSYM IID_IDelegateFolder}
|
|
IID_IDelegateFolder: TGUID = '{ADD8BA80-002B-11D0-8F0F-00C04FD7D062}';
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
type
|
|
{$EXTERNALSYM IDelegateFolder}
|
|
IDelegateFolder = interface(IUnknown)
|
|
['{ADD8BA80-002B-11D0-8F0F-00C04FD7D062}']
|
|
function SetItemAlloc(pmalloc: IMalloc): HResult; stdcall;
|
|
end;
|
|
|
|
// INTERFACE: IBrowserFrameOptions
|
|
//
|
|
// This interface was implemented so a browser or host can ask a ShellView/ShellNameSpace what
|
|
// kind of 'Behavior' is appropriate for that view.
|
|
//
|
|
// IBrowserFrameOptions::GetBrowserOptions()
|
|
// dwMask is the logical OR of bits to look for. pdwOptions is not optional and
|
|
// it's return value will always equal or will be a subset of dwMask.
|
|
// If the function succeeds, the return value must be S_OK and pdwOptions needs to be filled in.
|
|
// If the function fails, pdwOptions needs to be filled in with BFO_NONE.
|
|
//
|
|
|
|
const
|
|
{$EXTERNALSYM BFO_NONE}
|
|
BFO_NONE = 0;
|
|
{$EXTERNALSYM BFO_BROWSER_PERSIST_SETTINGS}
|
|
BFO_BROWSER_PERSIST_SETTINGS = $1;
|
|
{$EXTERNALSYM BFO_RENAME_FOLDER_OPTIONS_TOINTERNET}
|
|
BFO_RENAME_FOLDER_OPTIONS_TOINTERNET = $2;
|
|
{$EXTERNALSYM BFO_BOTH_OPTIONS}
|
|
BFO_BOTH_OPTIONS = $4;
|
|
{$EXTERNALSYM BIF_PREFER_INTERNET_SHORTCUT}
|
|
BIF_PREFER_INTERNET_SHORTCUT = $8;
|
|
{$EXTERNALSYM BFO_BROWSE_NO_IN_NEW_PROCESS}
|
|
BFO_BROWSE_NO_IN_NEW_PROCESS = $10;
|
|
{$EXTERNALSYM BFO_ENABLE_HYPERLINK_TRACKING}
|
|
BFO_ENABLE_HYPERLINK_TRACKING = $20;
|
|
{$EXTERNALSYM BFO_USE_IE_OFFLINE_SUPPORT}
|
|
BFO_USE_IE_OFFLINE_SUPPORT = $40;
|
|
{$EXTERNALSYM BFO_SUBSTITUE_INTERNET_START_PAGE}
|
|
BFO_SUBSTITUE_INTERNET_START_PAGE = $80;
|
|
{$EXTERNALSYM BFO_USE_IE_LOGOBANDING}
|
|
BFO_USE_IE_LOGOBANDING = $100;
|
|
{$EXTERNALSYM BFO_ADD_IE_TOCAPTIONBAR}
|
|
BFO_ADD_IE_TOCAPTIONBAR = $200;
|
|
{$EXTERNALSYM BFO_USE_DIALUP_REF}
|
|
BFO_USE_DIALUP_REF = $400;
|
|
{$EXTERNALSYM BFO_USE_IE_TOOLBAR}
|
|
BFO_USE_IE_TOOLBAR = $800;
|
|
{$EXTERNALSYM BFO_NO_PARENT_FOLDER_SUPPORT}
|
|
BFO_NO_PARENT_FOLDER_SUPPORT = $1000;
|
|
{$EXTERNALSYM BFO_NO_REOPEN_NEXT_RESTART}
|
|
BFO_NO_REOPEN_NEXT_RESTART = $2000;
|
|
{$EXTERNALSYM BFO_GO_HOME_PAGE}
|
|
BFO_GO_HOME_PAGE = $4000;
|
|
{$EXTERNALSYM BFO_PREFER_IEPROCESS}
|
|
BFO_PREFER_IEPROCESS = $8000;
|
|
{$EXTERNALSYM BFO_SHOW_NAVIGATION_CANCELLED}
|
|
BFO_SHOW_NAVIGATION_CANCELLED = $10000;
|
|
{$EXTERNALSYM BFO_USE_IE_STATUSBAR}
|
|
BFO_USE_IE_STATUSBAR = $20000;
|
|
{$EXTERNALSYM BFO_QUERY_ALL}
|
|
BFO_QUERY_ALL = $FFFFFFFF;
|
|
|
|
type
|
|
{$EXTERNALSYM BROWSERFRAMEOPTIONS}
|
|
BROWSERFRAMEOPTIONS = DWORD;
|
|
TBrowserFrameOptions = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IBrowserFrameOptions}
|
|
IID_IBrowserFrameOptions: TGUID = '{10DF43C8-1DBE-11d3-8B34-006097DF5BD4}';
|
|
|
|
type
|
|
{$EXTERNALSYM IBrowserFrameOptions}
|
|
IBrowserFrameOptions = interface(IUnknown)
|
|
['{10DF43C8-1DBE-11d3-8B34-006097DF5BD4}']
|
|
function GetFrameOptions(dwMask: TBrowserFrameOptions;
|
|
out pdwOptions: TBrowserFrameOptions): HResult; stdcall;
|
|
end;
|
|
|
|
type
|
|
{$EXTERNALSYM tagNWMF}
|
|
tagNWMF = DWORD;
|
|
{$EXTERNALSYM NWMF}
|
|
NWMF = tagNWMF;
|
|
TNWMF = tagNWMF;
|
|
|
|
const
|
|
{$EXTERNALSYM NWMF_UNLOADING}
|
|
NWMF_UNLOADING = $1;
|
|
{$EXTERNALSYM NWMF_USERINITED}
|
|
NWMF_USERINITED = $2;
|
|
{$EXTERNALSYM NWMF_FIRST}
|
|
NWMF_FIRST = $4;
|
|
{$EXTERNALSYM NWMF_OVERRIDEKEY}
|
|
NWMF_OVERRIDEKEY = $8;
|
|
{$EXTERNALSYM NWMF_SHOWHELP}
|
|
NWMF_SHOWHELP = $10;
|
|
{$EXTERNALSYM NWMF_HTMLDIALOG}
|
|
NWMF_HTMLDIALOG = $20;
|
|
{$EXTERNALSYM NWMF_FROMDIALOGCHILD}
|
|
NWMF_FROMDIALOGCHILD = $40;
|
|
{$EXTERNALSYM NWMF_USERREQUESTED}
|
|
NWMF_USERREQUESTED = $80;
|
|
{$EXTERNALSYM NWMF_USERALLOWED}
|
|
NWMF_USERALLOWED = $100;
|
|
|
|
{$EXTERNALSYM IID_INewWindowManager}
|
|
IID_INewWindowManager: TGUID = '{D2BC4C84-3F72-4a52-A604-7BCBF3982CBB}';
|
|
{$EXTERNALSYM SID_SNewWindowManager}
|
|
SID_SNewWindowManager: TGUID = '{D2BC4C84-3F72-4a52-A604-7BCBF3982CBB}';
|
|
|
|
type
|
|
{$EXTERNALSYM INewWindowManager}
|
|
INewWindowManager = interface(IUnknown)
|
|
['{D2BC4C84-3F72-4a52-A604-7BCBF3982CBB}']
|
|
function EvaluateNewWindow(
|
|
pszUrl, pszName, pszUrlContext, pszFeatures: PWideChar; fReplace: BOOL;
|
|
dwFlags, dwUserActionTime: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
PSMData = ^TSMData;
|
|
{$EXTERNALSYM tagSMDATA}
|
|
tagSMDATA = record
|
|
dwMask: DWORD;
|
|
dwFlags: DWORD;
|
|
hmenu: HMENU;
|
|
hwnd: HWND;
|
|
uId: UINT;
|
|
uIdParent: UINT;
|
|
uIdAncestor: UINT;
|
|
punk: IUnknown;
|
|
pidlFolder: PItemIDList;
|
|
pidlItem: PItemIDList;
|
|
psf: IShellFolder;
|
|
pvUserData: Pointer;
|
|
end;
|
|
{$EXTERNALSYM SMDATA}
|
|
SMDATA = tagSMDATA;
|
|
TSMData = tagSMDATA;
|
|
|
|
const
|
|
// Mask
|
|
{$EXTERNALSYM SMDM_SHELLFOLDER}
|
|
SMDM_SHELLFOLDER = $00000001; // This is for an item in the band
|
|
{$EXTERNALSYM SMDM_HMENU}
|
|
SMDM_HMENU = $00000002; // This is for the Band itself
|
|
{$EXTERNALSYM SMDM_TOOLBAR}
|
|
SMDM_TOOLBAR = $00000004; // Plain toolbar, not associated with a shell folder or hmenu
|
|
|
|
type
|
|
// Flags (bitmask)
|
|
PSMInfo = ^TSMInfo;
|
|
{$EXTERNALSYM tagSMINFO}
|
|
tagSMINFO = record
|
|
dwMask: DWORD;
|
|
dwType: DWORD;
|
|
dwFlags: DWORD;
|
|
iIcon: Integer;
|
|
end;
|
|
{$EXTERNALSYM SMINFO}
|
|
SMINFO = tagSMINFO;
|
|
TSMInfo = tagSMINFO;
|
|
|
|
PSMCSHChangeNotifyStruct = ^TSMCSHChangeNotifyStruct;
|
|
{$EXTERNALSYM tagSHCSCHANGENOTIFYSTRUCT}
|
|
tagSHCSCHANGENOTIFYSTRUCT = record
|
|
lEvent: Longint;
|
|
pidl1: PItemIDList;
|
|
pidl2: PItemIDList;
|
|
end;
|
|
{$EXTERNALSYM SMCSHCHANGENOTIFYSTRUCT}
|
|
SMCSHCHANGENOTIFYSTRUCT = tagSHCSCHANGENOTIFYSTRUCT;
|
|
TSMCSHChangeNotifyStruct = tagSHCSCHANGENOTIFYSTRUCT;
|
|
|
|
const
|
|
{$EXTERNALSYM SMIM_TYPE}
|
|
SMIM_TYPE = $1;
|
|
{$EXTERNALSYM SMIM_FLAGS}
|
|
SMIM_FLAGS = $2;
|
|
{$EXTERNALSYM SMIM_ICON}
|
|
SMIM_ICON = $4;
|
|
|
|
{$EXTERNALSYM SMIT_SEPARATOR}
|
|
SMIT_SEPARATOR = $1;
|
|
{$EXTERNALSYM SMIT_STRING}
|
|
SMIT_STRING = $2;
|
|
|
|
{$EXTERNALSYM SMIF_ICON}
|
|
SMIF_ICON = $1;
|
|
{$EXTERNALSYM SMIF_ACCELERATOR}
|
|
SMIF_ACCELERATOR = $2;
|
|
{$EXTERNALSYM SMIF_DROPTARGET}
|
|
SMIF_DROPTARGET = $4;
|
|
{$EXTERNALSYM SMIF_SUBMENU}
|
|
SMIF_SUBMENU = $8;
|
|
{$EXTERNALSYM SMIF_CHECKED}
|
|
SMIF_CHECKED = $20;
|
|
{$EXTERNALSYM SMIF_DROPCASCADE}
|
|
SMIF_DROPCASCADE = $40;
|
|
{$EXTERNALSYM SMIF_HIDDEN}
|
|
SMIF_HIDDEN = $80;
|
|
{$EXTERNALSYM SMIF_DISABLED}
|
|
SMIF_DISABLED = $100;
|
|
{$EXTERNALSYM SMIF_TRACKPOPUP}
|
|
SMIF_TRACKPOPUP = $200;
|
|
{$EXTERNALSYM SMIF_DEMOTED}
|
|
SMIF_DEMOTED = $400;
|
|
{$EXTERNALSYM SMIF_ALTSTATE}
|
|
SMIF_ALTSTATE = $800;
|
|
{$EXTERNALSYM SMIF_DRAGNDROP}
|
|
SMIF_DRAGNDROP = $1000;
|
|
{$EXTERNALSYM SMIF_NEW}
|
|
SMIF_NEW = $2000;
|
|
|
|
{$EXTERNALSYM SMC_INITMENU}
|
|
SMC_INITMENU = $00000001; // The callback is called to init a menuband
|
|
{$EXTERNALSYM SMC_CREATE}
|
|
SMC_CREATE = $00000002;
|
|
{$EXTERNALSYM SMC_EXITMENU}
|
|
SMC_EXITMENU = $00000003; // The callback is called when menu is collapsing
|
|
{$EXTERNALSYM SMC_GETINFO}
|
|
SMC_GETINFO = $00000005; // The callback is called to return DWORD values
|
|
{$EXTERNALSYM SMC_GETSFINFO}
|
|
SMC_GETSFINFO = $00000006; // The callback is called to return DWORD values
|
|
{$EXTERNALSYM SMC_GETOBJECT}
|
|
SMC_GETOBJECT = $00000007; // The callback is called to get some object
|
|
{$EXTERNALSYM SMC_GETSFOBJECT}
|
|
SMC_GETSFOBJECT = $00000008; // The callback is called to get some object
|
|
{$EXTERNALSYM SMC_SFEXEC}
|
|
SMC_SFEXEC = $00000009; // The callback is called to execute an shell folder item
|
|
{$EXTERNALSYM SMC_SFSELECTITEM}
|
|
SMC_SFSELECTITEM = $0000000A; // The callback is called when an item is selected
|
|
{$EXTERNALSYM SMC_REFRESH}
|
|
SMC_REFRESH = $00000010; // Menus have completely refreshed. Reset your state.
|
|
{$EXTERNALSYM SMC_DEMOTE}
|
|
SMC_DEMOTE = $00000011; // Demote an item
|
|
{$EXTERNALSYM SMC_PROMOTE}
|
|
SMC_PROMOTE = $00000012; // Promote an item, wParam = SMINV_* flag
|
|
{$EXTERNALSYM SMC_DEFAULTICON}
|
|
SMC_DEFAULTICON = $00000016; // Returns Default icon location in wParam, index in lParam
|
|
{$EXTERNALSYM SMC_NEWITEM}
|
|
SMC_NEWITEM = $00000017; // Notifies item is not in the order stream.
|
|
{$EXTERNALSYM SMC_CHEVRONEXPAND}
|
|
SMC_CHEVRONEXPAND = $00000019; // Notifies of a expansion via the chevron
|
|
{$EXTERNALSYM SMC_DISPLAYCHEVRONTIP}
|
|
SMC_DISPLAYCHEVRONTIP = $0000002A; // S_OK display, S_FALSE not.
|
|
{$EXTERNALSYM SMC_SETSFOBJECT}
|
|
SMC_SETSFOBJECT = $0000002D; // Called to save the passed object
|
|
{$EXTERNALSYM SMC_SHCHANGENOTIFY}
|
|
SMC_SHCHANGENOTIFY = $0000002E; // Called when a Change notify is received. lParam points to SMCSHCHANGENOTIFYSTRUCT
|
|
{$EXTERNALSYM SMC_CHEVRONGETTIP}
|
|
SMC_CHEVRONGETTIP = $0000002F; // Called to get the chevron tip text. wParam = Tip title, Lparam = TipText Both MAX_PATH
|
|
{$EXTERNALSYM SMC_SFDDRESTRICTED}
|
|
SMC_SFDDRESTRICTED = $00000030; // Called requesting if it's ok to drop. wParam = IDropTarget.
|
|
|
|
|
|
const
|
|
{$EXTERNALSYM IID_IShellMenuCallback}
|
|
IID_IShellMenuCallback: TGUID = '{4CA300A1-9B8D-11d1-8B22-00C04FD918D0}';
|
|
|
|
type
|
|
{$EXTERNALSYM IShellMenuCallback}
|
|
IShellMenuCallback = interface(IUnknown)
|
|
['{4CA300A1-9B8D-11d1-8B22-00C04FD918D0}']
|
|
function CallbackSM(var psmd: TSMData; uMsg: UINT; wParam: WPARAM;
|
|
lParam: LPARAM): HResult; stdcall;
|
|
end;
|
|
|
|
type
|
|
{$EXTERNALSYM tagATTACHMENT_PROMPT}
|
|
tagATTACHMENT_PROMPT = DWORD;
|
|
{$EXTERNALSYM ATTACHMENT_PROMPT}
|
|
ATTACHMENT_PROMPT = tagATTACHMENT_PROMPT;
|
|
TAttachmentPrompt = tagATTACHMENT_PROMPT;
|
|
|
|
const
|
|
{$EXTERNALSYM ATTACHMENT_PROMPT_NONE}
|
|
ATTACHMENT_PROMPT_NONE = $0;
|
|
{$EXTERNALSYM ATTACHMENT_PROMPT_SAVE}
|
|
ATTACHMENT_PROMPT_SAVE = $1;
|
|
{$EXTERNALSYM ATTACHMENT_PROMPT_EXEC}
|
|
ATTACHMENT_PROMPT_EXEC = $2;
|
|
{$EXTERNALSYM ATTACHMENT_PROMPT_EXEC_OR_SAVE}
|
|
ATTACHMENT_PROMPT_EXEC_OR_SAVE = $3;
|
|
|
|
type
|
|
{$EXTERNALSYM tagATTACHMENT_ACTION}
|
|
tagATTACHMENT_ACTION = DWORD;
|
|
{$EXTERNALSYM ATTACHMENT_ACTION}
|
|
ATTACHMENT_ACTION = tagATTACHMENT_ACTION;
|
|
TAttachmentAction = tagATTACHMENT_ACTION;
|
|
|
|
const
|
|
{$EXTERNALSYM ATTACHMENT_ACTION_CANCEL}
|
|
ATTACHMENT_ACTION_CANCEL = $0;
|
|
{$EXTERNALSYM ATTACHMENT_ACTION_SAVE}
|
|
ATTACHMENT_ACTION_SAVE = $1;
|
|
{$EXTERNALSYM ATTACHMENT_ACTION_EXEC}
|
|
ATTACHMENT_ACTION_EXEC = $2;
|
|
|
|
{$EXTERNALSYM IID_IAttachmentExecute}
|
|
IID_IAttachmentExecute: TGUID = '{73db1241-1e85-4581-8e4f-a81e1d0f8c57}';
|
|
|
|
type
|
|
{$EXTERNALSYM IAttachmentExecute}
|
|
IAttachmentExecute = interface(IUnknown)
|
|
['{73db1241-1e85-4581-8e4f-a81e1d0f8c57}']
|
|
function SetClientTitle(pszTitle: PWideChar): HResult; stdcall;
|
|
function SetClientGuid(const guid: TGUID): HResult; stdcall;
|
|
function SetLocalPath(pszLocalPath: PWideChar): HResult; stdcall;
|
|
function SetFileName(pszFileName: PWideChar): HResult; stdcall;
|
|
function SetSource(pszSource: PWideChar): HResult; stdcall;
|
|
function SetReferrer(pszReferrer: PWideChar): HResult; stdcall;
|
|
function CheckPolicy: HResult; stdcall;
|
|
function Prompt(hwnd: HWND; prompt: TAttachmentPrompt;
|
|
out paction: TAttachmentAction): HResult; stdcall;
|
|
function Save: HResult; stdcall;
|
|
function Execute(hwnd: HWND; pszVerb: PWideChar;
|
|
var phProcess: THandle): HResult; stdcall;
|
|
function SaveWithUI(hwnd: HWND): HResult; stdcall;
|
|
function ClearClientState: HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM SMINIT_DEFAULT}
|
|
SMINIT_DEFAULT = $00000000; // No Options
|
|
{$EXTERNALSYM SMINIT_RESTRICT_DRAGDROP}
|
|
SMINIT_RESTRICT_DRAGDROP = $00000002; // Don't allow Drag and Drop
|
|
{$EXTERNALSYM SMINIT_TOPLEVEL}
|
|
SMINIT_TOPLEVEL = $00000004; // This is the top band.
|
|
{$EXTERNALSYM SMINIT_CACHED}
|
|
SMINIT_CACHED = $00000010;
|
|
{$EXTERNALSYM SMINIT_VERTICAL}
|
|
SMINIT_VERTICAL = $10000000; // This is a vertical menu
|
|
{$EXTERNALSYM SMINIT_HORIZONTAL}
|
|
SMINIT_HORIZONTAL = $20000000; // This is a horizontal menu (does not inherit)
|
|
|
|
{$EXTERNALSYM ANCESTORDEFAULT}
|
|
ANCESTORDEFAULT = UINT(-1);
|
|
|
|
{$EXTERNALSYM SMSET_TOP}
|
|
SMSET_TOP = $10000000; // Bias this namespace to the top of the menu
|
|
{$EXTERNALSYM SMSET_BOTTOM}
|
|
SMSET_BOTTOM = $20000000; // Bias this namespace to the bottom of the menu
|
|
{$EXTERNALSYM SMSET_DONTOWN}
|
|
SMSET_DONTOWN = $00000001; // The Menuband doesn't own the non-ref counted object
|
|
|
|
{$EXTERNALSYM SMINV_REFRESH}
|
|
SMINV_REFRESH = $00000001;
|
|
{$EXTERNALSYM SMINV_ID}
|
|
SMINV_ID = $00000008;
|
|
|
|
{$EXTERNALSYM IID_IShellMenu}
|
|
IID_IShellMenu: TGUID = '{EE1F7637-E138-11d1-8379-00C04FD918D0}';
|
|
|
|
type
|
|
{$EXTERNALSYM IShellMenu}
|
|
IShellMenu = interface(IUnknown)
|
|
['{EE1F7637-E138-11d1-8379-00C04FD918D0}']
|
|
function Initialize(psmc: IShellMenuCallback; uId, uIdAncestor: UINT;
|
|
dwFlags: DWORD): HResult; stdcall;
|
|
function GetMenuInfo(out ppsmc: IShellMenuCallback;
|
|
out puId, puIdAncestor: UINT; out pdwFlags: DWORD): HResult; stdcall;
|
|
function SetShellFolder(psf: IShellFolder; pidlFolder: PItemIDList;
|
|
hKey: HKEY; dwFlags: DWORD): HResult; stdcall;
|
|
function GetShellFolder(out pdwFlags: DWORD; ppidl: PPItemIDList;
|
|
const riid: TIID; out ppv): HResult; stdcall;
|
|
function SetMenu(hmenu: HMENU; hwnd: HWND; dwFlags: DWORD): HResult; stdcall;
|
|
function GetMenu(out phmenu: HMENU; out phwnd: HWND;
|
|
out pdwFlags: DWORD): HResult; stdcall;
|
|
function InvalidateItem(var psmd: TSMData;
|
|
dwFlags: DWORD): HResult; stdcall;
|
|
function GetState(out psmd: TSMData): HResult; stdcall;
|
|
function SetMenuToolbar(punk: IUnknown; dwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM LIBID_ShellObjects}
|
|
LIBID_ShellObjects: TGUID = '{50A7E9B0-70EF-11D1-B75A-00A0C90564FE}';
|
|
|
|
{$EXTERNALSYM CLSID_QueryCancelAutoPlay}
|
|
CLSID_QueryCancelAutoPlay: TGUID = '{331F1768-05A9-4ddd-B86E-DAE34DDC998A}';
|
|
{$EXTERNALSYM CLSID_DriveSizeCategorizer}
|
|
CLSID_DriveSizeCategorizer: TGUID = '{94357B53-CA29-4b78-83AE-E8FE7409134F}';
|
|
{$EXTERNALSYM CLSID_DriveTypeCategorizer}
|
|
CLSID_DriveTypeCategorizer: TGUID = '{B0A8F3CF-4333-4bab-8873-1CCB1CADA48B}';
|
|
{$EXTERNALSYM CLSID_FreeSpaceCategorizer}
|
|
CLSID_FreeSpaceCategorizer: TGUID = '{B5607793-24AC-44c7-82E2-831726AA6CB7}';
|
|
{$EXTERNALSYM CLSID_TimeCategorizer}
|
|
CLSID_TimeCategorizer: TGUID = '{3bb4118f-ddfd-4d30-a348-9fb5d6bf1afe}';
|
|
{$EXTERNALSYM CLSID_SizeCategorizer}
|
|
CLSID_SizeCategorizer: TGUID = '{55d7b852-f6d1-42f2-aa75-8728a1b2d264}';
|
|
{$EXTERNALSYM CLSID_AlphabeticalCategorizer}
|
|
CLSID_AlphabeticalCategorizer: TGUID = '{3c2654c6-7372-4f6b-b310-55d6128f49d2}';
|
|
{$EXTERNALSYM CLSID_MergedCategorizer}
|
|
CLSID_MergedCategorizer: TGUID = '{8e827c11-33e7-4bc1-b242-8cd9a1c2b304}';
|
|
{$EXTERNALSYM CLSID_ImageProperties}
|
|
CLSID_ImageProperties: TGUID = '{7ab770c7-0e23-4d7a-8aa2-19bfad479829}';
|
|
{$EXTERNALSYM CLSID_PropertiesUI}
|
|
CLSID_PropertiesUI: TGUID = '{d912f8cf-0396-4915-884e-fb425d32943b}';
|
|
{$EXTERNALSYM CLSID_UserNotification}
|
|
CLSID_UserNotification: TGUID = '{0010890e-8789-413c-adbc-48f5b511b3af}';
|
|
{$EXTERNALSYM CLSID_UserEventTimerCallback}
|
|
CLSID_UserEventTimerCallback: TGUID = '{15fffd13-5140-41b8-b89a-c8d5759cd2b2}';
|
|
{$EXTERNALSYM CLSID_UserEventTimer}
|
|
CLSID_UserEventTimer: TGUID = '{864A1288-354C-4D19-9D68-C2742BB14997}';
|
|
{$EXTERNALSYM CLSID_NetCrawler}
|
|
CLSID_NetCrawler: TGUID = '{601ac3dc-786a-4eb0-bf40-ee3521e70bfb}';
|
|
{$EXTERNALSYM CLSID_CDBurn}
|
|
CLSID_CDBurn: TGUID = '{fbeb8a05-beee-4442-804e-409d6c4515e9}';
|
|
{$EXTERNALSYM CLSID_TaskbarList}
|
|
CLSID_TaskbarList: TGUID = '{56FDF344-FD6D-11d0-958A-006097C9A090}';
|
|
{$EXTERNALSYM CLSID_WebWizardHost}
|
|
CLSID_WebWizardHost: TGUID = '{c827f149-55c1-4d28-935e-57e47caed973}';
|
|
{$EXTERNALSYM CLSID_PublishDropTarget}
|
|
CLSID_PublishDropTarget: TGUID = '{CC6EEFFB-43F6-46c5-9619-51D571967F7D}';
|
|
{$EXTERNALSYM CLSID_PublishingWizard}
|
|
CLSID_PublishingWizard: TGUID = '{6b33163c-76a5-4b6c-bf21-45de9cd503a1}';
|
|
{$EXTERNALSYM SID_PublishingWizard}
|
|
SID_PublishingWizard: TGUID = '{6b33163c-76a5-4b6c-bf21-45de9cd503a1}';
|
|
{$EXTERNALSYM CLSID_InternetPrintOrdering}
|
|
CLSID_InternetPrintOrdering: TGUID = '{add36aa8-751a-4579-a266-d66f5202ccbb}';
|
|
{$EXTERNALSYM CLSID_FolderViewHost}
|
|
CLSID_FolderViewHost: TGUID = '{20b1cb23-6968-4eb9-b7d4-a66d00d07cee}';
|
|
{$EXTERNALSYM CLSID_NamespaceWalker}
|
|
CLSID_NamespaceWalker: TGUID = '{72eb61e0-8672-4303-9175-f2e4c68b2e7c}';
|
|
{$EXTERNALSYM CLSID_ImageRecompress}
|
|
CLSID_ImageRecompress: TGUID = '{6e33091c-d2f8-4740-b55e-2e11d1477a2c}';
|
|
{$EXTERNALSYM CLSID_TrayBandSiteService}
|
|
CLSID_TrayBandSiteService: TGUID = '{F60AD0A0-E5E1-45cb-B51A-E15B9F8B2934}';
|
|
{$EXTERNALSYM CLSID_PassportWizard}
|
|
CLSID_PassportWizard: TGUID = '{58f1f272-9240-4f51-b6d4-fd63d1618591}';
|
|
{$EXTERNALSYM CLSID_AttachmentServices}
|
|
CLSID_AttachmentServices: TGUID = '{4125dd96-e03a-4103-8f70-e0597d803b9c}';
|
|
|
|
// -- shlobj.h --
|
|
|
|
//===========================================================================
|
|
//
|
|
// Task allocator API
|
|
//
|
|
// All the shell extensions MUST use the task allocator (see OLE 2.0
|
|
// programming guild for its definition) when they allocate or free
|
|
// memory objects (mostly ITEMIDLIST) that are returned across any
|
|
// shell interfaces. There are two ways to access the task allocator
|
|
// from a shell extension depending on whether or not it is linked with
|
|
// OLE32.DLL or not (purely for efficiency).
|
|
//
|
|
// (1) A shell extension which calls any OLE API (i.e., linked with
|
|
// OLE32.DLL) should call OLE's task allocator (by retrieving
|
|
// the task allocator by calling CoGetMalloc API).
|
|
//
|
|
// (2) A shell extension which does not call any OLE API (i.e., not linked
|
|
// with OLE32.DLL) should call the shell task allocator API (defined
|
|
// below), so that the shell can quickly loads it when OLE32.DLL is not
|
|
// loaded by any application at that TPoint.
|
|
//
|
|
// Notes:
|
|
// In next version of Windowso release, SHGetMalloc will be replaced by
|
|
// the following macro.
|
|
//
|
|
// #define SHGetMalloc(ppmem) CoGetMalloc(MEMCTX_TASK, ppmem)
|
|
//
|
|
//===========================================================================
|
|
|
|
{$EXTERNALSYM SHGetMalloc}
|
|
function SHGetMalloc(out ppMalloc: IMalloc): HResult; stdcall;
|
|
|
|
{$EXTERNALSYM SHAlloc}
|
|
function SHAlloc(cb: Cardinal): Pointer; stdcall;
|
|
{$EXTERNALSYM SHFree}
|
|
procedure SHFree(pv: Pointer); stdcall;
|
|
|
|
|
|
//===========================================================================
|
|
//
|
|
// IContextMenu interface
|
|
//
|
|
// [OverView]
|
|
//
|
|
// The shell uses the IContextMenu interface in following three cases.
|
|
//
|
|
// case-1: The shell is loading context menu extensions.
|
|
//
|
|
// When the user clicks the right mouse button on an item within the shell's
|
|
// name space (i.g., file, directory, server, work-group, etc.), it creates
|
|
// the default context menu for its type, then loads context menu extensions
|
|
// that are registered for that type (and its base type) so that they can
|
|
// add extra menu items. Those context menu extensions are registered at
|
|
// HKCR\{ProgID}\shellex\ContextMenuHandlers.
|
|
//
|
|
// case-2: The shell is retrieving a context menu of sub-folders in extended
|
|
// name-space.
|
|
//
|
|
// When the explorer's name space is extended by name space extensions,
|
|
// the shell calls their IShellFolder::GetUIObjectOf to get the IContextMenu
|
|
// objects when it creates context menus for folders under those extended
|
|
// name spaces.
|
|
//
|
|
// case-3: The shell is loading non-default drag and drop handler for directories.
|
|
//
|
|
// When the user performed a non-default drag and drop onto one of file
|
|
// system folders (i.e., directories), it loads shell extensions that are
|
|
// registered at HKCR\{ProgID}\DragDropHandlers.
|
|
//
|
|
//
|
|
// [Member functions]
|
|
//
|
|
//
|
|
// IContextMenu::QueryContextMenu
|
|
//
|
|
// This member function may insert one or more menuitems to the specified
|
|
// menu (hmenu) at the specified location (indexMenu which is never be -1).
|
|
// The IDs of those menuitem must be in the specified range (idCmdFirst and
|
|
// idCmdLast). It returns the maximum menuitem ID offset (ushort) in the
|
|
// 'code' field (low Word) of the scode.
|
|
//
|
|
// The uFlags specify the context. It may have one or more of following
|
|
// flags.
|
|
//
|
|
// CMF_DEFAULTONLY: This flag is passed if the user is invoking the default
|
|
// action (typically by double-clicking, case 1 and 2 only). Context menu
|
|
// extensions (case 1) should not add any menu items, and returns NOERROR.
|
|
//
|
|
// CMF_VERBSONLY: The explorer passes this flag if it is constructing
|
|
// a context menu for a short-cut object (case 1 and case 2 only). If this
|
|
// flag is passed, it should not add any menu-items that is not appropriate
|
|
// from a short-cut.
|
|
// A good example is the "Delete" menuitem, which confuses the user
|
|
// because it is not clear whether it deletes the link source item or the
|
|
// link itself.
|
|
//
|
|
// CMF_EXPLORER: The explorer passes this flag if it has the left-side pane
|
|
// (case 1 and 2 only). Context menu extensions should ignore this flag.
|
|
//
|
|
// High Word (16-bit) are reserved for context specific communications
|
|
// and the rest of flags (13-bit) are reserved by the system.
|
|
//
|
|
//
|
|
// IContextMenu::InvokeCommand
|
|
//
|
|
// This member is called when the user has selected one of menuitems that
|
|
// are inserted by previous QueryContextMenu member. In this case, the
|
|
// LOWORD(lpici->lpVerb) contains the menuitem ID offset (menuitem ID -
|
|
// idCmdFirst).
|
|
//
|
|
// This member function may also be called programmatically. In such a case,
|
|
// lpici->lpVerb specifies the canonical name of the command to be invoked,
|
|
// which is typically retrieved by GetCommandString member previously.
|
|
//
|
|
// Parameters in lpci:
|
|
// cbSize -- Specifies the size of this structure (sizeof(*lpci))
|
|
// hwnd -- Specifies the owner window for any message/dialog box.
|
|
// fMask -- Specifies whether or not dwHotkey/hIcon paramter is valid.
|
|
// lpVerb -- Specifies the command to be invoked.
|
|
// lpParameters -- Parameters (optional)
|
|
// lpDirectory -- Working directory (optional)
|
|
// nShow -- Specifies the flag to be passed to ShowWindow (SW_*).
|
|
// dwHotKey -- Hot key to be assigned to the app after invoked (optional).
|
|
// hIcon -- Specifies the icon (optional).
|
|
// hMonitor -- Specifies the default monitor (optional).
|
|
//
|
|
//
|
|
// IContextMenu::GetCommandString
|
|
//
|
|
// This member function is called by the explorer either to get the
|
|
// canonical (language independent) command name (uFlags == GCS_VERB) or
|
|
// the help text ((uFlags & GCS_HELPTEXT) != 0) for the specified command.
|
|
// The retrieved canonical string may be passed to its InvokeCommand
|
|
// member function to invoke a command programmatically. The explorer
|
|
// displays the help texts in its status bar; therefore, the length of
|
|
// the help text should be reasonably short (<40 characters).
|
|
//
|
|
// Parameters:
|
|
// idCmd -- Specifies menuitem ID offset (from idCmdFirst)
|
|
// uFlags -- Either GCS_VERB or GCS_HELPTEXT
|
|
// pwReserved -- Reserved (must pass NULL when calling, must ignore when called)
|
|
// pszName -- Specifies the string buffer.
|
|
// cchMax -- Specifies the size of the string buffer.
|
|
//
|
|
//===========================================================================
|
|
|
|
// QueryContextMenu uFlags
|
|
const
|
|
{$EXTERNALSYM CMF_NORMAL}
|
|
CMF_NORMAL = $00000000;
|
|
{$EXTERNALSYM CMF_DEFAULTONLY}
|
|
CMF_DEFAULTONLY = $00000001;
|
|
{$EXTERNALSYM CMF_VERBSONLY}
|
|
CMF_VERBSONLY = $00000002;
|
|
{$EXTERNALSYM CMF_EXPLORE}
|
|
CMF_EXPLORE = $00000004;
|
|
{$EXTERNALSYM CMF_NOVERBS}
|
|
CMF_NOVERBS = $00000008;
|
|
{$EXTERNALSYM CMF_CANRENAME}
|
|
CMF_CANRENAME = $00000010;
|
|
{$EXTERNALSYM CMF_NODEFAULT}
|
|
CMF_NODEFAULT = $00000020;
|
|
{$EXTERNALSYM CMF_INCLUDESTATIC}
|
|
CMF_INCLUDESTATIC = $00000040;
|
|
{$EXTERNALSYM CMF_EXTENDEDVERBS}
|
|
CMF_EXTENDEDVERBS = $00000100; // rarely used verbs
|
|
{$EXTERNALSYM CMF_RESERVED}
|
|
CMF_RESERVED = $FFFF0000; // View specific
|
|
|
|
// GetCommandString uFlags
|
|
{$EXTERNALSYM GCS_VERBA}
|
|
GCS_VERBA = $00000000; // canonical verb
|
|
{$EXTERNALSYM GCS_HELPTEXTA}
|
|
GCS_HELPTEXTA = $00000001; // help text (for status bar)
|
|
{$EXTERNALSYM GCS_VALIDATEA}
|
|
GCS_VALIDATEA = $00000002; // validate command exists
|
|
{$EXTERNALSYM GCS_VERBW}
|
|
GCS_VERBW = $00000004; // canonical verb (unicode)
|
|
{$EXTERNALSYM GCS_HELPTEXTW}
|
|
GCS_HELPTEXTW = $00000005; // help text (unicode version)
|
|
{$EXTERNALSYM GCS_VALIDATEW}
|
|
GCS_VALIDATEW = $00000006; // validate command exists (unicode)
|
|
{$EXTERNALSYM GCS_UNICODE}
|
|
GCS_UNICODE = $00000004; // for bit testing - Unicode string
|
|
|
|
{$EXTERNALSYM GCS_VERB}
|
|
GCS_VERB = GCS_VERBA;
|
|
{$EXTERNALSYM GCS_HELPTEXT}
|
|
GCS_HELPTEXT = GCS_HELPTEXTA;
|
|
{$EXTERNALSYM GCS_VALIDATE}
|
|
GCS_VALIDATE = GCS_VALIDATEA;
|
|
|
|
{$EXTERNALSYM CMDSTR_NEWFOLDERA}
|
|
CMDSTR_NEWFOLDERA = 'NewFolder';
|
|
{$EXTERNALSYM CMDSTR_VIEWLISTA}
|
|
CMDSTR_VIEWLISTA = 'ViewList';
|
|
{$EXTERNALSYM CMDSTR_VIEWDETAILSA}
|
|
CMDSTR_VIEWDETAILSA = 'ViewDetails';
|
|
{$EXTERNALSYM CMDSTR_NEWFOLDERW}
|
|
CMDSTR_NEWFOLDERW = 'NewFolder';
|
|
{$EXTERNALSYM CMDSTR_VIEWLISTW}
|
|
CMDSTR_VIEWLISTW = 'ViewList';
|
|
{$EXTERNALSYM CMDSTR_VIEWDETAILSW}
|
|
CMDSTR_VIEWDETAILSW = 'ViewDetails';
|
|
|
|
{$EXTERNALSYM CMDSTR_NEWFOLDER}
|
|
CMDSTR_NEWFOLDER = CMDSTR_NEWFOLDERA;
|
|
{$EXTERNALSYM CMDSTR_VIEWLIST}
|
|
CMDSTR_VIEWLIST = CMDSTR_VIEWLISTA;
|
|
{$EXTERNALSYM CMDSTR_VIEWDETAILS}
|
|
CMDSTR_VIEWDETAILS = CMDSTR_VIEWDETAILSA;
|
|
|
|
{$EXTERNALSYM CMIC_MASK_HOTKEY}
|
|
CMIC_MASK_HOTKEY = SEE_MASK_HOTKEY;
|
|
{$EXTERNALSYM CMIC_MASK_ICON}
|
|
CMIC_MASK_ICON = SEE_MASK_ICON;
|
|
{$EXTERNALSYM CMIC_MASK_FLAG_NO_UI}
|
|
CMIC_MASK_FLAG_NO_UI = SEE_MASK_FLAG_NO_UI;
|
|
{$EXTERNALSYM CMIC_MASK_UNICODE}
|
|
CMIC_MASK_UNICODE = SEE_MASK_UNICODE;
|
|
{$EXTERNALSYM CMIC_MASK_NO_CONSOLE}
|
|
CMIC_MASK_NO_CONSOLE = SEE_MASK_NO_CONSOLE;
|
|
// {$EXTERNALSYM CMIC_MASK_HASLINKNAME}
|
|
// CMIC_MASK_HASLINKNAME = SEE_MASK_HASLINKNAME; -- not defined in ShellAPI
|
|
// {$EXTERNALSYM CMIC_MASK_FLAG_SEP_VDM}
|
|
// CMIC_MASK_FLAG_SEP_VDM = SEE_MASK_FLAG_SEPVDM; -- not defined in ShellAPI
|
|
// {$EXTERNALSYM CMIC_MASK_HASTITLE}
|
|
// CMIC_MASK_HASTITLE = SEE_MASK_HASTITLE; -- not defined in ShellAPI
|
|
{$EXTERNALSYM CMIC_MASK_ASYNCOK}
|
|
CMIC_MASK_ASYNCOK = SEE_MASK_ASYNCOK;
|
|
{$EXTERNALSYM CMIC_MASK_NOZONECHECKS}
|
|
CMIC_MASK_NOZONECHECKS = SEE_MASK_NOZONECHECKS;
|
|
|
|
{$EXTERNALSYM CMIC_MASK_SHIFT_DOWN}
|
|
CMIC_MASK_SHIFT_DOWN = $10000000;
|
|
{$EXTERNALSYM CMIC_MASK_CONTROL_DOWN}
|
|
CMIC_MASK_CONTROL_DOWN = $40000000;
|
|
{$EXTERNALSYM CMIC_MASK_FLAG_LOG_USAGE}
|
|
CMIC_MASK_FLAG_LOG_USAGE = SEE_MASK_FLAG_LOG_USAGE;
|
|
|
|
{$EXTERNALSYM CMIC_MASK_PTINVOKE}
|
|
CMIC_MASK_PTINVOKE = $20000000;
|
|
|
|
//NOTE: When SEE_MASK_HMONITOR is set, hIcon is treated as hMonitor
|
|
type
|
|
PCMInvokeCommandInfo = ^TCMInvokeCommandInfo;
|
|
{$EXTERNALSYM _CMINVOKECOMMANDINFO}
|
|
_CMINVOKECOMMANDINFO = record
|
|
cbSize: DWORD; // sizeof(CMINVOKECOMMANDINFO)
|
|
fMask: DWORD; // any combination of CMIC_MASK_*
|
|
hwnd: HWND; // might be NULL (indicating no owner window)
|
|
lpVerb: PAnsiChar; // either a string or MAKEINTRESOURCE(idOffset)
|
|
lpParameters: PAnsiChar; // might be NULL (indicating no parameter)
|
|
lpDirectory: PAnsiChar; // might be NULL (indicating no specific directory)
|
|
nShow: Integer; // one of SW_ values for ShowWindow() API
|
|
dwHotKey: DWORD;
|
|
hIcon: THandle;
|
|
end;
|
|
{$EXTERNALSYM CMINVOKECOMMANDINFO}
|
|
CMINVOKECOMMANDINFO = _CMINVOKECOMMANDINFO;
|
|
TCMInvokeCommandInfo = _CMINVOKECOMMANDINFO;
|
|
|
|
PCMInvokeCommandInfoEx = ^TCMInvokeCommandInfoEx;
|
|
{$EXTERNALSYM _CMInvokeCommandInfoEx}
|
|
_CMInvokeCommandInfoEx = record
|
|
cbSize: DWORD; // must be sizeof(CMINVOKECOMMANDINFOEX)
|
|
fMask: DWORD; // any combination of CMIC_MASK_*
|
|
hwnd: HWND; // might be NULL (indicating no owner window)
|
|
lpVerb: PAnsiChar; // either a string or MAKEINTRESOURCE(idOffset)
|
|
lpParameters: PAnsiChar; // might be NULL (indicating no parameter)
|
|
lpDirectory: PAnsiChar; // might be NULL (indicating no specific directory)
|
|
nShow: Integer; // one of SW_ values for ShowWindow() API
|
|
dwHotKey: DWORD;
|
|
hIcon: THandle;
|
|
|
|
lpTitle: PAnsiChar; // For CreateProcess-StartupInfo.lpTitle
|
|
lpVerbW: PWideChar; // Unicode verb (for those who can use it)
|
|
lpParametersW: PWideChar; // Unicode parameters (for those who can use it)
|
|
lpDirectoryW: PWideChar; // Unicode directory (for those who can use it)
|
|
lpTitleW: PWideChar; // Unicode title (for those who can use it)
|
|
ptInvoke: TPoint; // TPoint where it's invoked
|
|
end;
|
|
{$EXTERNALSYM CMINVOKECOMMANDINFOEX}
|
|
CMINVOKECOMMANDINFOEX = _CMInvokeCommandInfoEx;
|
|
TCMInvokeCommandInfoEx = _CMInvokeCommandInfoEx;
|
|
|
|
{$EXTERNALSYM IContextMenu}
|
|
IContextMenu = interface(IUnknown)
|
|
['{000214E4-0000-0000-C000-000000000046}']
|
|
function QueryContextMenu(hmenu: HMENU;
|
|
indexMenu, idCmdFirst, idCmdLast, uFlags: UINT): HResult; stdcall;
|
|
function InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult; stdcall;
|
|
function GetCommandString(idCmd, uType: UINT; pwReserved: PUINT;
|
|
pszName: PAnsiChar; cchMax: UINT): HResult; stdcall;
|
|
end;
|
|
|
|
//
|
|
// IContextMenu2 (IContextMenu with one new member)
|
|
//
|
|
// IContextMenu2::HandleMenuMsg
|
|
//
|
|
// This function is called, if the client of IContextMenu is aware of
|
|
// IContextMenu2 interface and receives one of following messages while
|
|
// it is calling TrackPopupMenu (in the window proc of hwnd):
|
|
// WM_INITPOPUP, WM_DRAWITEM and WM_MEASUREITEM
|
|
// The callee may handle these messages to draw owner draw menuitems.
|
|
//
|
|
|
|
{$EXTERNALSYM IContextMenu2}
|
|
IContextMenu2 = interface(IContextMenu)
|
|
['{000214F4-0000-0000-C000-000000000046}']
|
|
function HandleMenuMsg(uMsg: UINT;
|
|
wParam: WPARAM; lParam: LPARAM): HResult; stdcall;
|
|
end;
|
|
|
|
//
|
|
// IContextMenu3 (IContextMenu with one new member)
|
|
//
|
|
// IContextMenu3::HandleMenuMsg2
|
|
//
|
|
// This function is called, if the client of IContextMenu is aware of
|
|
// IContextMenu3 interface and receives a menu message while
|
|
// it is calling TrackPopupMenu (in the window proc of hwnd):
|
|
//
|
|
|
|
{$EXTERNALSYM IContextMenu3}
|
|
IContextMenu3 = interface(IContextMenu2)
|
|
['{BCFCE0A0-EC17-11D0-8D10-00A0C90F2719}']
|
|
// *** IUnknown methods ***
|
|
function HandleMenuMsg2(uMsg: UINT; wParam: WPARAM; lParam: LPARAM;
|
|
out plResult: LRESULT): HResult; stdcall;
|
|
end;
|
|
|
|
// DESCRIPTION: PERSIST_FOLDER_TARGET_INFO
|
|
// This stucture is used for Folder Shortcuts which allow the shell to
|
|
// have a file system folder act like another area in the name space.
|
|
// One of pidlTargetFolder, szTargetParsingName, or csidl needs to
|
|
// specify the destination name space.
|
|
//
|
|
// pidlTargetFolder: This is a full pidl to the target folder. Can be NULL in the IPersistFolder3::InitializeEx()
|
|
// call but not in the GetFolderTargetInfo() return structure.
|
|
// szTargetParsingName: Empty string if not specified. Ortherwise, it is the parsible name
|
|
// to the target. This name can be parsed by IShellFolder::
|
|
// ParsedName() from the desktop.
|
|
// szNetworkProvider: Can be an empty string. If not empty, it specifies the type of network
|
|
// provider that will be used when binding to the target. This is used
|
|
// for performance optimizations for the WNet APIs.
|
|
// dwAttributes: -1 if not known. These are the SFGAO_ flags for IShellFolder::GetAttributesOf()
|
|
// csidl: This is -1 if it's not used. This can be used instead of pidlTargetFolder or
|
|
// szTargetParsingName to indicate the TargetFolder. See the list of CSIDL_ folders
|
|
// below. CSIDL_FLAG_PFTI_TRACKTARGET means that the IShellFolder's target folder
|
|
// should change if the user changes the target of the underlying CSIDL value.
|
|
// You can also pass CSIDL_FLAG_CREATE to indicate that the target folder
|
|
// should be created if it does not exist. No other CSIDL_FLAG_* values are supported.
|
|
|
|
|
|
type
|
|
PPersistFolderTargetInfo = ^TPersistFolderTargetInfo;
|
|
{$EXTERNALSYM PERSIST_FOLDER_TARGET_INFO}
|
|
PERSIST_FOLDER_TARGET_INFO = record
|
|
pidlTargetFolder: PItemIDList; // pidl for the folder we want to intiailize
|
|
szTargetParsingName: array[0..MAX_PATH - 1] of WideChar; // optional parsing name for the target
|
|
szNetworkProvider: array[0..MAX_PATH - 1] of WideChar; // optional network provider
|
|
dwAttributes: DWORD; // optional FILE_ATTRIBUTES_ flags (-1 if not used)
|
|
csidl: Integer; // optional folder index (SHGetFolderPath()) -1 if not used
|
|
end;
|
|
TPersistFolderTargetInfo = PERSIST_FOLDER_TARGET_INFO;
|
|
|
|
// DESCRIPTION: IPersistFolder3
|
|
// This interface is implemented by an IShellFolder object that wants non-default
|
|
// handling of Folder Shortcuts. In general, shell name space extensions should use
|
|
// pidlRoot (the alias pidl) as their location in the name space and pass it to public
|
|
// APIs, such as ShellExecute(). The one exception is that pidlTarget should be used
|
|
// when sending ChangeNotifies or registering to listen for change notifies
|
|
// (see SFVM_GETNOTIFY).
|
|
//
|
|
// InitializeEx: This method initializes an IShellFolder and specifies where
|
|
// it is rooted in the name space.
|
|
// pbc: May be NULL.
|
|
// pidlRoot: This is the same parameter as IPersistFolder::Initialize(). Caller allocates
|
|
// and frees this parameter.
|
|
// ppfti: May be NULL, in which case this is the same as a call to IPersistFolder::Initialize().
|
|
// Otherwise this is a Folder Shortcut and this structure specifies the target
|
|
// folder and it's attributes.
|
|
// GetFolderTargetInfo: This is used by the caller to find information about
|
|
// the folder shortcut. This structure may not be initialized by the caller,
|
|
// so the callee needs to initialize every member. The callee allocates
|
|
// pidlTargetFolder and the caller will free it. Filling in pidlTargetFolder is
|
|
// ALWAYS required.
|
|
|
|
{$EXTERNALSYM IPersistFolder3}
|
|
IPersistFolder3 = interface(IPersistFolder2)
|
|
['{CEF04FDF-FE72-11D2-87A5-00C04F6837CF}']
|
|
function InitializeEx(pbc: IBindCtx; pidlRoot: PItemIDList;
|
|
const ppfti: TPersistFolderTargetInfo): HResult; stdcall;
|
|
function GetFolderTargetInfo(
|
|
out ppfti: TPersistFolderTargetInfo): HResult; stdcall;
|
|
end;
|
|
|
|
//
|
|
|
|
//===========================================================================
|
|
//
|
|
// IExtractIcon interface
|
|
//
|
|
// This interface is used in two different places in the shell.
|
|
//
|
|
// Case-1: Icons of sub-folders for the scope-pane of the explorer.
|
|
//
|
|
// It is used by the explorer to get the "icon location" of
|
|
// sub-folders from each shell folders. When the user expands a folder
|
|
// in the scope pane of the explorer, the explorer does following:
|
|
// (1) binds to the folder (gets IShellFolder),
|
|
// (2) enumerates its sub-folders by calling its EnumObjects member,
|
|
// (3) calls its GetUIObjectOf member to get IExtractIcon interface
|
|
// for each sub-folders.
|
|
// In this case, the explorer uses only IExtractIcon::GetIconLocation
|
|
// member to get the location of the appropriate icon. An icon location
|
|
// always consists of a file name (typically DLL or EXE) and either an icon
|
|
// resource or an icon index.
|
|
//
|
|
//
|
|
// Case-2: Extracting an icon image from a file
|
|
//
|
|
// It is used by the shell when it extracts an icon image
|
|
// from a file. When the shell is extracting an icon from a file,
|
|
// it does following:
|
|
// (1) creates the icon extraction handler object (by getting its CLSID
|
|
// under the {ProgID}\shell\ExtractIconHanler key and calling
|
|
// CoCreateInstance requesting for IExtractIcon interface).
|
|
// (2) Calls IExtractIcon::GetIconLocation.
|
|
// (3) Then, calls IExtractIcon::ExtractIcon with the location/index pair.
|
|
// (4) If (3) returns NOERROR, it uses the returned icon.
|
|
// (5) Otherwise, it recursively calls this logic with new location
|
|
// assuming that the location string contains a fully qualified path name.
|
|
//
|
|
// From extension programmer's TPoint of view, there are only two cases
|
|
// where they provide implementations of IExtractIcon:
|
|
// Case-1) providing explorer extensions (i.e., IShellFolder).
|
|
// Case-2) providing per-instance icons for some types of files.
|
|
//
|
|
// Because Case-1 is described above, we'll explain only Case-2 here.
|
|
//
|
|
// When the shell is about display an icon for a file, it does following:
|
|
// (1) Finds its ProgID and ClassID.
|
|
// (2) If the file has a ClassID, it gets the icon location string from the
|
|
// "DefaultIcon" key under it. The string indicates either per-class
|
|
// icon (e.g., "FOOBAR.DLL,2") or per-instance icon (e.g., "%1,1").
|
|
// (3) If a per-instance icon is specified, the shell creates an icon
|
|
// extraction handler object for it, and extracts the icon from it
|
|
// (which is described above).
|
|
//
|
|
// It is important to note that the shell calls IExtractIcon::GetIconLocation
|
|
// first, then calls IExtractIcon::Extract. Most application programs
|
|
// that support per-instance icons will probably store an icon location
|
|
// (DLL/EXE name and index/id) rather than an icon image in each file.
|
|
// In those cases, a programmer needs to implement only the GetIconLocation
|
|
// member and it Extract member simply returns S_FALSE. They need to
|
|
// implement Extract member only if they decided to store the icon images
|
|
// within files themselved or some other database (which is very rare).
|
|
//
|
|
//
|
|
//
|
|
// [Member functions]
|
|
//
|
|
//
|
|
// IExtractIcon::GetIconLocation
|
|
//
|
|
// This function returns an icon location.
|
|
//
|
|
// Parameters:
|
|
// uFlags [in] -- Specifies if it is opened or not (GIL_OPENICON or 0)
|
|
// szIconFile [out] -- Specifies the string buffer buffer for a location name.
|
|
// cchMax [in] -- Specifies the size of szIconFile (almost always MAX_PATH)
|
|
// piIndex [out] -- Sepcifies the address of UINT for the index.
|
|
// pwFlags [out] -- Returns GIL_* flags
|
|
// Returns:
|
|
// NOERROR, if it returns a valid location; S_FALSE, if the shell use a
|
|
// default icon.
|
|
//
|
|
// Notes: The location may or may not be a path to a file. The caller can
|
|
// not assume anything unless the subsequent Extract member call returns
|
|
// S_FALSE.
|
|
//
|
|
// if the returned location is not a path to a file, GIL_NOTFILENAME should
|
|
// be set in the returned flags.
|
|
//
|
|
// IExtractIcon::Extract
|
|
//
|
|
// This function extracts an icon image from a specified file.
|
|
//
|
|
// Parameters:
|
|
// pszFile [in] -- Specifies the icon location (typically a path to a file).
|
|
// nIconIndex [in] -- Specifies the icon index.
|
|
// phiconLarge [out] -- Specifies the HICON variable for large icon.
|
|
// phiconSmall [out] -- Specifies the HICON variable for small icon.
|
|
// nIconSize [in] -- Specifies the size icon required (size of large icon)
|
|
// LOWORD is the requested large icon size
|
|
// HIWORD is the requested small icon size
|
|
// Returns:
|
|
// NOERROR, if it extracted the from the file.
|
|
// S_FALSE, if the caller should extract from the file specified in the
|
|
// location.
|
|
//
|
|
//===========================================================================
|
|
|
|
const
|
|
// GetIconLocation() input flags
|
|
|
|
{$EXTERNALSYM GIL_OPENICON}
|
|
GIL_OPENICON = $0001; // allows containers to specify an "open" look
|
|
{$EXTERNALSYM GIL_FORSHELL}
|
|
GIL_FORSHELL = $0002; // icon is to be displayed in a ShellFolder
|
|
{$EXTERNALSYM GIL_ASYNC}
|
|
GIL_ASYNC = $0020; // this is an async extract, return E_PENDING
|
|
{$EXTERNALSYM GIL_DEFAULTICON}
|
|
GIL_DEFAULTICON = $0040; // get the default icon location if the final one takes too long to get
|
|
{$EXTERNALSYM GIL_FORSHORTCUT}
|
|
GIL_FORSHORTCUT = $0080; // the icon is for a shortcut to the object
|
|
|
|
// GetIconLocation() return flags
|
|
|
|
{$EXTERNALSYM GIL_SIMULATEDOC}
|
|
GIL_SIMULATEDOC = $0001; // simulate this document icon for this
|
|
{$EXTERNALSYM GIL_PERINSTANCE}
|
|
GIL_PERINSTANCE = $0002; // icons from this class are per instance (each file has its own)
|
|
{$EXTERNALSYM GIL_PERCLASS}
|
|
GIL_PERCLASS = $0004; // icons from this class per class (shared for all files of this type)
|
|
{$EXTERNALSYM GIL_NOTFILENAME}
|
|
GIL_NOTFILENAME = $0008; // location is not a filename, must call ::ExtractIcon
|
|
{$EXTERNALSYM GIL_DONTCACHE}
|
|
GIL_DONTCACHE = $0010; // this icon should not be cached
|
|
|
|
type
|
|
{$EXTERNALSYM IExtractIconA}
|
|
IExtractIconA = interface(IUnknown) // exic
|
|
['{000214EB-0000-0000-C000-000000000046}']
|
|
function GetIconLocation(uFlags: UINT; szIconFile: PAnsiChar; cchMax: UINT;
|
|
out piIndex: Integer; out pwFlags: UINT): HResult; stdcall;
|
|
function Extract(pszFile: PAnsiChar; nIconIndex: UINT;
|
|
out phiconLarge, phiconSmall: HICON; nIconSize: UINT): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IExtractIconW}
|
|
IExtractIconW = interface(IUnknown) // exic
|
|
['{000214FA-0000-0000-C000-000000000046}']
|
|
function GetIconLocation(uFlags: UINT; szIconFile: PWideChar; cchMax: UINT;
|
|
out piIndex: Integer; out pwFlags: UINT): HResult; stdcall;
|
|
function Extract(pszFile: PWideChar; nIconIndex: UINT;
|
|
out phiconLarge, phiconSmall: HICON; nIconSize: UINT): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IExtractIcon}
|
|
IExtractIcon = IExtractIconA;
|
|
|
|
//===========================================================================
|
|
//
|
|
// IShellIcon Interface
|
|
//
|
|
// used to get a icon index for a IShellFolder object.
|
|
//
|
|
// this interface can be implemented by a IShellFolder, as a quick way to
|
|
// return the icon for a object in the folder.
|
|
//
|
|
// a instance of this interface is only created once for the folder, unlike
|
|
// IExtractIcon witch is created once for each object.
|
|
//
|
|
// if a ShellFolder does not implement this interface, the standard
|
|
// GetUIObject(....IExtractIcon) method will be used to get a icon
|
|
// for all objects.
|
|
//
|
|
// the following standard imagelist indexs can be returned:
|
|
//
|
|
// 0 document (blank page) (not associated)
|
|
// 1 document (with stuff on the page)
|
|
// 2 application (exe, com, bat)
|
|
// 3 folder (plain)
|
|
// 4 folder (open)
|
|
//
|
|
// IShellIcon:GetIconOf(pidl, flags, lpIconIndex)
|
|
//
|
|
// pidl object to get icon for.
|
|
// flags GIL_* input flags (GIL_OPEN, ...)
|
|
// lpIconIndex place to return icon index.
|
|
//
|
|
// returns:
|
|
// NOERROR, if lpIconIndex contains the correct system imagelist index.
|
|
// S_FALSE, if unable to get icon for this object, go through
|
|
// GetUIObject, IExtractIcon, methods.
|
|
//
|
|
//===========================================================================
|
|
|
|
{$EXTERNALSYM IShellIcon}
|
|
IShellIcon = interface(IUnknown) // shi
|
|
['{000214E5-0000-0000-C000-000000000046}']
|
|
function GetIconOf(pidl: PItemIDList; flags: UINT;
|
|
out lpIconIndex: Integer): HResult; stdcall;
|
|
end;
|
|
|
|
//===========================================================================
|
|
//
|
|
// IShellIconOverlayIdentifier
|
|
//
|
|
// Used to identify a file as a member of the group of files that have this specific
|
|
// icon overlay
|
|
//
|
|
// Users can create new IconOverlayIdentifiers and place them in the following registry
|
|
// location together with the Icon overlay image and their priority.
|
|
// HKEY_LOCAL_MACHINE "Software\\Microsoft\\Windows\\CurrentVersion\\ShellIconOverlayIdentifiers"
|
|
//
|
|
// The shell will enumerate through all IconOverlayIdentifiers at start, and prioritize
|
|
// them according to internal rules, in case the internal rules don't apply, we use their
|
|
// input priority
|
|
//
|
|
// IShellIconOverlayIdentifier:IsMemberOf(PWideChar pwszPath, DWORD dwAttrib)
|
|
// pwszPath full path of the file
|
|
// dwAttrib attribute of this file
|
|
//
|
|
// returns:
|
|
// S_OK, if the file is a member
|
|
// S_FALSE, if the file is not a member
|
|
// E_FAIL, if the operation failed due to bad WIN32_FIND_DATA
|
|
//
|
|
// IShellIconOverlayIdentifier::GetOverlayInfo(PWideChar pwszIconFile, int * pIndex, DWORD * dwFlags): HResult; stdcall;
|
|
// pszIconFile the path of the icon file
|
|
// pIndex Depend on the flags, this could contain the IconIndex
|
|
// dwFlags defined below
|
|
//
|
|
// IShellIconOverlayIdentifier::GetPriority(int * pIPriority): HResult; stdcall;
|
|
// pIPriority the priority of this Overlay Identifier
|
|
//
|
|
//===========================================================================
|
|
|
|
{$EXTERNALSYM IShellIconOverlayIdentifier}
|
|
IShellIconOverlayIdentifier = interface(IUnknown)
|
|
['{0C6C4200-C589-11D0-999A-00C04FD655E1}']
|
|
function IsMemberOf(pwszPath: PWideChar; dwAttrib: DWORD): HResult; stdcall;
|
|
function GetOverlayInfo(pwszIconFile: PWideChar; cchMax: Integer;
|
|
out pIndex: Integer; out pdwFlags: DWORD): HResult; stdcall;
|
|
function GetPriority(out pIPriority: Integer): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM ISIOI_ICONFILE}
|
|
ISIOI_ICONFILE = $00000001; // path is returned through pwszIconFile
|
|
{$EXTERNALSYM ISIOI_ICONINDEX}
|
|
ISIOI_ICONINDEX = $00000002; // icon index in pwszIconFile is returned through pIndex
|
|
|
|
//===========================================================================
|
|
//
|
|
// IShellIconOverlayManager
|
|
//
|
|
// Used to return the icon overlay information including OverlayIndex, Image Index or Priority for an IShellFolder object.
|
|
//
|
|
// IShellIconOverlayManager:GetFileOverlayInfo(PWideChar pwszPath, DWORD dwAttrib, int * pIndex, DWORD dwflags)
|
|
// pwszPath full path of the file
|
|
// dwAttrib attribute of this file
|
|
// pIndex pointer to the Icon Index in the system image list
|
|
// pOverlayIndex pointer to the OverlayIndex in the system image list
|
|
// pPriority pointer to the Priority of this overlay
|
|
// IShellIconOverlayManager:GetReservedOverlayInfo(PWideChar pwszPath, DWORD dwAttrib, int * pIndex, DWORD dwflags, int iReservedID)
|
|
// iReservedID reserved icon overlay id
|
|
// returns:
|
|
// S_OK, if the index of an Overlay is found
|
|
// S_FALSE, if no Overlay exists for this file
|
|
// E_FAIL, if lpfd is bad
|
|
// IShellIconOverlayManager:RefreshOverlayImages(DWORD dwFlags)
|
|
// This will refresh the overlay cache, depends on the dwFlags passed in
|
|
// It will reload the icons into the imagelist, when passed SIOM_ICONINDEX
|
|
// IShellIconOverlayManager::LoadNonloadedOverlayIdentifiers()
|
|
// This method loads any registered overlay identifiers (handlers) that
|
|
// are not currently loaded.
|
|
// IShellIconOverlayManager::OverlayIndexFromImageIndex(int iImage, int *piIndex, BOOL fAdd)
|
|
// iImage existing shell image list index to look for
|
|
// piIndex returned overlay index
|
|
// fAdd Add image if not already present?
|
|
//===========================================================================
|
|
|
|
type
|
|
{$EXTERNALSYM IShellIconOverlayManager}
|
|
IShellIconOverlayManager = interface(IUnknown)
|
|
['{F10B5E34-DD3B-42A7-AA7D-2F4EC54BB09B}']
|
|
function GetFileOverlayInfo(pwszPath: PWideChar; dwAttrib: DWORD;
|
|
out pIndex: Integer; dwflags: DWORD): HResult; stdcall;
|
|
function GetReservedOverlayInfo(pwszPath: PWideChar; dwAttrib: DWORD;
|
|
out pIndex: Integer; dwflags: DWORD;
|
|
iReservedID: Integer): HResult; stdcall;
|
|
function RefreshOverlayImages(dwFlags: DWORD): HResult; stdcall;
|
|
function LoadNonloadedOverlayIdentifiers: HResult; stdcall;
|
|
function OverlayIndexFromImageIndex(iImage: Integer;
|
|
out piIndex: Integer; fAdd: BOOL): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM SIOM_OVERLAYINDEX}
|
|
SIOM_OVERLAYINDEX = 1;
|
|
{$EXTERNALSYM SIOM_ICONINDEX}
|
|
SIOM_ICONINDEX = 2;
|
|
// SIOM_PRIORITY = 3;
|
|
{$EXTERNALSYM SIOM_RESERVED_SHARED}
|
|
SIOM_RESERVED_SHARED = 0;
|
|
{$EXTERNALSYM SIOM_RESERVED_LINK}
|
|
SIOM_RESERVED_LINK = 1;
|
|
{$EXTERNALSYM SIOM_RESERVED_SLOWFILE}
|
|
SIOM_RESERVED_SLOWFILE = 2;
|
|
|
|
//===========================================================================
|
|
//
|
|
// IShellIconOverlay
|
|
//
|
|
// Used to return the icon overlay index or its icon index for an IShellFolder object,
|
|
// this is always implemented with IShellFolder
|
|
//
|
|
// IShellIconOverlay:GetOverlayIndex(PItemIDList pidl, DWORD * pdwIndex)
|
|
// pidl object to identify icon overlay for.
|
|
// pdwIndex the Overlay Index in the system image list
|
|
//
|
|
// IShellIconOverlay:GetOverlayIconIndex(PItemIDList pidl, DWORD * pdwIndex)
|
|
// pdwIconIndex the Overlay Icon index in the system image list
|
|
// This method is only used for those who are interested in seeing the real bits
|
|
// of the Overlay Icon
|
|
//
|
|
// returns:
|
|
// S_OK, if the index of an Overlay is found
|
|
// S_FALSE, if no Overlay exists for this file
|
|
// E_FAIL, if pidl is bad
|
|
//
|
|
//===========================================================================
|
|
|
|
type
|
|
{$EXTERNALSYM IShellIconOverlay}
|
|
IShellIconOverlay = interface(IUnknown)
|
|
['{7D688A70-C613-11D0-999B-00C04FD655E1}']
|
|
function GetOverlayIndex(pidl: PItemIDList;
|
|
out pIndex: Integer): HResult; stdcall;
|
|
function GetOverlayIconIndex(pidl: PItemIDList;
|
|
out pIconIndex: Integer): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM OI_ASYNC}
|
|
OI_ASYNC = $FFFFEEEE;
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// SHGetIconOverlayIndex
|
|
//
|
|
// This function takes the path and icon/res id to the icon and convert it into
|
|
// an overlay index in the system image list.
|
|
// Note: there are totally only 15 slots for system image overlays, some of which
|
|
// was reserved by the system, or taken by the overlayidentifiers, so it's possible
|
|
// that this function would fail and return -1;
|
|
//
|
|
// To get the default overlays in the system, such as the share hand, link shortcut
|
|
// and slow files, pass NULL as the file name, then the IDO_SHGIOI_* flags as the icon index
|
|
//-------------------------------------------------------------------------
|
|
|
|
const
|
|
{$EXTERNALSYM IDO_SHGIOI_SHARE}
|
|
IDO_SHGIOI_SHARE = $0FFFFFFF;
|
|
{$EXTERNALSYM IDO_SHGIOI_LINK}
|
|
IDO_SHGIOI_LINK = $0FFFFFFE;
|
|
{$EXTERNALSYM IDO_SHGIOI_SLOWFILE}
|
|
IDO_SHGIOI_SLOWFILE = $FFFFFFFD;
|
|
|
|
{$EXTERNALSYM SHGetIconOverlayIndexA}
|
|
function SHGetIconOverlayIndexA(pszIconPath: PAnsiChar;
|
|
iIconIndex: Integer): Integer; stdcall;
|
|
{$EXTERNALSYM SHGetIconOverlayIndexW}
|
|
function SHGetIconOverlayIndexW(pszIconPath: PWideChar;
|
|
iIconIndex: Integer): Integer; stdcall;
|
|
{$EXTERNALSYM SHGetIconOverlayIndex}
|
|
function SHGetIconOverlayIndex(pszIconPath: PTSTR;
|
|
iIconIndex: Integer): Integer; stdcall;
|
|
|
|
// IShellLinkDataList::GetFlags()/SetFlags()
|
|
type
|
|
{$EXTERNALSYM SHELL_LINK_DATA_FLAGS}
|
|
SHELL_LINK_DATA_FLAGS = DWORD;
|
|
TShellLinkDataFlags = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM SLDF_HAS_ID_LIST}
|
|
SLDF_HAS_ID_LIST = $00000001; // Shell link saved with ID list
|
|
{$EXTERNALSYM SLDF_HAS_LINK_INFO}
|
|
SLDF_HAS_LINK_INFO = $00000002; // Shell link saved with LinkInfo
|
|
{$EXTERNALSYM SLDF_HAS_NAME}
|
|
SLDF_HAS_NAME = $00000004;
|
|
{$EXTERNALSYM SLDF_HAS_RELPATH}
|
|
SLDF_HAS_RELPATH = $00000008;
|
|
{$EXTERNALSYM SLDF_HAS_WORKINGDIR}
|
|
SLDF_HAS_WORKINGDIR = $00000010;
|
|
{$EXTERNALSYM SLDF_HAS_ARGS}
|
|
SLDF_HAS_ARGS = $00000020;
|
|
{$EXTERNALSYM SLDF_HAS_ICONLOCATION}
|
|
SLDF_HAS_ICONLOCATION = $00000040;
|
|
{$EXTERNALSYM SLDF_UNICODE}
|
|
SLDF_UNICODE = $00000080; // the strings are unicode
|
|
{$EXTERNALSYM SLDF_FORCE_NO_LINKINFO}
|
|
SLDF_FORCE_NO_LINKINFO = $00000100; // don't create a LINKINFO (make a dumb link)
|
|
{$EXTERNALSYM SLDF_HAS_EXP_SZ}
|
|
SLDF_HAS_EXP_SZ = $00000200; // the link contains expandable env strings
|
|
{$EXTERNALSYM SLDF_RUN_IN_SEPARATE}
|
|
SLDF_RUN_IN_SEPARATE = $00000400; // Run the 16-bit target exe in a separate VDM/WOW
|
|
{$EXTERNALSYM SLDF_HAS_LOGO3ID}
|
|
SLDF_HAS_LOGO3ID = $00000800; // this link is a special Logo3/MSICD link
|
|
{$EXTERNALSYM SLDF_HAS_DARWINID}
|
|
SLDF_HAS_DARWINID = $00001000; // this link is a special Darwin link
|
|
{$EXTERNALSYM SLDF_RUNAS_USER}
|
|
SLDF_RUNAS_USER = $00002000; // Run this link as a different user
|
|
{$EXTERNALSYM SLDF_HAS_EXP_ICON_SZ}
|
|
SLDF_HAS_EXP_ICON_SZ = $00004000; // contains expandable env string for icon path
|
|
{$EXTERNALSYM SLDF_NO_PIDL_ALIAS}
|
|
SLDF_NO_PIDL_ALIAS = $00008000; // don't ever resolve to a logical location
|
|
{$EXTERNALSYM SLDF_FORCE_UNCNAME}
|
|
SLDF_FORCE_UNCNAME = $00010000; // make GetPath() prefer the UNC name to the local name
|
|
{$EXTERNALSYM SLDF_RUN_WITH_SHIMLAYER}
|
|
SLDF_RUN_WITH_SHIMLAYER = $00020000; // Launch the target of this link w/ shim layer active
|
|
{$EXTERNALSYM SLDF_RESERVED}
|
|
SLDF_RESERVED = $80000000; // Reserved-- so we can use the low Word as an index value in the future
|
|
|
|
type
|
|
PDataBlcokHeader = ^TDataBlockHeader;
|
|
{$EXTERNALSYM tagDATABLOCKHEADER}
|
|
tagDATABLOCKHEADER = record
|
|
cbSize: DWORD; // Size of this extra data block
|
|
dwSignature: DWORD; // signature of this extra data block
|
|
end;
|
|
{$EXTERNALSYM DATABLOCK_HEADER}
|
|
DATABLOCK_HEADER = tagDATABLOCKHEADER;
|
|
TDataBlockHeader = tagDATABLOCKHEADER;
|
|
{$EXTERNALSYM LPDBLIST}
|
|
LPDBLIST = tagDATABLOCKHEADER;
|
|
|
|
PNTConsoleProps = ^TNTConsoleProps;
|
|
{$EXTERNALSYM NT_CONSOLE_PROPS}
|
|
NT_CONSOLE_PROPS = record
|
|
dbh: TDataBlockHeader;
|
|
wFillAttribute: Word; // fill attribute for console
|
|
wPopupFillAttribute: Word; // fill attribute for console popups
|
|
dwScreenBufferSize: TCoord; // screen buffer size for console
|
|
dwWindowSize: TCoord; // window size for console
|
|
dwWindowOrigin: TCoord; // window origin for console
|
|
nFont: DWORD;
|
|
nInputBufferSize: DWORD;
|
|
dwFontSize: TCoord;
|
|
uFontFamily: UINT;
|
|
uFontWeight: UINT;
|
|
FaceName: array[0..LF_FACESIZE - 1] of WideChar;
|
|
uCursorSize: UINT;
|
|
bFullScreen: BOOL;
|
|
bQuickEdit: BOOL;
|
|
bInsertMode: BOOL;
|
|
bAutoPosition: BOOL;
|
|
uHistoryBufferSize: UINT;
|
|
uNumberOfHistoryBuffers: UINT;
|
|
bHistoryNoDup: BOOL;
|
|
ColorTable: array[0..15] of TColorRef;
|
|
end;
|
|
TNTConsoleProps = NT_CONSOLE_PROPS;
|
|
|
|
const
|
|
{$EXTERNALSYM NT_CONSOLE_PROPS_SIG}
|
|
NT_CONSOLE_PROPS_SIG = $A0000002;
|
|
|
|
type
|
|
// This is a FE Console property
|
|
PNTFEConsoleProps = ^TNTFEConsoleProps;
|
|
{$EXTERNALSYM NT_FE_CONSOLE_PROPS}
|
|
NT_FE_CONSOLE_PROPS = record
|
|
dbh: TDataBlockHeader;
|
|
uCodePage: UINT;
|
|
end;
|
|
TNTFEConsoleProps = NT_FE_CONSOLE_PROPS;
|
|
|
|
const
|
|
{$EXTERNALSYM NT_FE_CONSOLE_PROPS_SIG}
|
|
NT_FE_CONSOLE_PROPS_SIG = $A0000004;
|
|
|
|
type
|
|
PExpDarwinLink = ^TExpDarwinLink;
|
|
{$EXTERNALSYM EXP_DARWIN_LINK}
|
|
EXP_DARWIN_LINK = record
|
|
dbh: TDataBlockHeader;
|
|
szDarwinID: array[0..MAX_PATH - 1] of AnsiChar; // ANSI darwin ID associated with link
|
|
szwDarwinID: array[0..MAX_PATH - 1] of WideChar; // UNICODE darwin ID associated with link
|
|
end;
|
|
TExpDarwinLink = EXP_DARWIN_LINK;
|
|
|
|
const
|
|
{$EXTERNALSYM EXP_DARWIN_ID_SIG}
|
|
EXP_DARWIN_ID_SIG = $A0000006;
|
|
{$EXTERNALSYM EXP_LOGO3_ID_SIG}
|
|
EXP_LOGO3_ID_SIG = $A0000007;
|
|
|
|
{$EXTERNALSYM EXP_SPECIAL_FOLDER_SIG}
|
|
EXP_SPECIAL_FOLDER_SIG = $A0000005; // LPEXP_SPECIAL_FOLDER
|
|
|
|
type
|
|
PExpSpecialFolder = ^TExpSpecialFolder;
|
|
{$EXTERNALSYM EXP_SPECIAL_FOLDER}
|
|
EXP_SPECIAL_FOLDER = record
|
|
cbSize: DWORD; // Size of this extra data block
|
|
dwSignature: DWORD; // signature of this extra data block
|
|
idSpecialFolder: DWORD; // special folder id this link points into
|
|
cbOffset: DWORD; // ofset into pidl from SLDF_HAS_ID_LIST for child
|
|
end;
|
|
TExpSpecialFolder = EXP_SPECIAL_FOLDER;
|
|
|
|
PExpSzLink = ^TExpSzLink;
|
|
{$EXTERNALSYM EXP_SZ_LINK}
|
|
EXP_SZ_LINK = record
|
|
cbSize: DWORD; // Size of this extra data block
|
|
dwSignature: DWORD; // signature of this extra data block
|
|
szTarget: array[0..MAX_PATH - 1] of AnsiChar; // ANSI target name w/EXP_SZ in it
|
|
swzTarget: array[0..MAX_PATH - 1] of WideChar; // UNICODE target name w/EXP_SZ in it
|
|
end;
|
|
TExpSzLink = EXP_SZ_LINK;
|
|
|
|
const
|
|
{$EXTERNALSYM EXP_SZ_LINK_SIG}
|
|
EXP_SZ_LINK_SIG = $A0000001; // LPEXP_SZ_LINK (target)
|
|
{$EXTERNALSYM EXP_SZ_ICON_SIG}
|
|
EXP_SZ_ICON_SIG = $A0000007; // LPEXP_SZ_LINK (icon)
|
|
|
|
type
|
|
{$EXTERNALSYM IShellLinkDataList}
|
|
IShellLinkDataList = interface(IUnknown)
|
|
['{45E2B4AE-B1C3-11D0-B92F-00A0C90312E1}']
|
|
function AddDataBlock(pDataBlock: Pointer): HResult; stdcall;
|
|
function CopyDataBlock(dwSig: DWORD; out ppDataBlock): HResult; stdcall;
|
|
function RemoveDataBlock(dwSig: DWORD): HResult; stdcall;
|
|
function GetFlags(out pdwFlags: DWORD): HResult; stdcall;
|
|
function SetFlags(dwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IResolveShellLink}
|
|
IResolveShellLink = interface(IUnknown)
|
|
['{5CD52983-9449-11D2-963A-00C04F79ADF0}']
|
|
function ResolveShellLink(punk: IUnknown; hwnd: HWND;
|
|
fFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
//===========================================================================
|
|
//
|
|
// IShellExecuteHook Interface
|
|
//
|
|
//===========================================================================
|
|
|
|
{$EXTERNALSYM IShellExecuteHookA}
|
|
IShellExecuteHookA = interface(IUnknown) // shexhk
|
|
['{000214F5-0000-0000-C000-000000000046}']
|
|
function Execute(var pei: TSHellExecuteInfoA): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IShellExecuteHookW}
|
|
IShellExecuteHookW = interface(IUnknown) // shexhk
|
|
['{000214FB-0000-0000-C000-000000000046}']
|
|
function Execute(var pei: TShellExecuteInfoW): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IShellExecuteHook}
|
|
IShellExecuteHook = IShellExecuteHookA;
|
|
|
|
//===========================================================================
|
|
//
|
|
// IURLSearchHook Interface
|
|
//
|
|
//===========================================================================
|
|
|
|
{$EXTERNALSYM IURLSearchHook}
|
|
IURLSearchHook = interface(IUnknown)
|
|
['{AC60F6A0-0FD9-11D0-99CB-00C04FD64497}']
|
|
function Translate(lpwszSearchURL: PWideChar;
|
|
cchBufferSize: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM ISearchContext}
|
|
ISearchContext = interface(IUnknown)
|
|
['{09F656A2-41AF-480C-88F7-16CC0D164615}']
|
|
function GetSearchUrl(out pbstrSearchUrl: TBStr): HResult; stdcall;
|
|
function GetSearchText(out pbstrSearchText: TBStr): HResult; stdcall;
|
|
function GetSearchStyle(out pdwSearchStyle: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IURLSearchHook2}
|
|
IURLSearchHook2 = interface(IURLSearchHook)
|
|
['{5EE44DA4-6D32-46E3-86BC-07540DEDD0E0}']
|
|
function TranslateWithSearchContext(lpwszSearchURL: PWideChar;
|
|
cchBufferSize: DWORD; pSearchContext: ISearchContext): HResult; stdcall;
|
|
end;
|
|
|
|
//===========================================================================
|
|
//
|
|
// INewShortcutHook Interface
|
|
//
|
|
//===========================================================================
|
|
|
|
{$EXTERNALSYM INewShortcutHookA}
|
|
INewShortcutHookA = interface(IUnknown) // nshhk
|
|
['{000214E1-0000-0000-C000-000000000046}']
|
|
function SetReferent(pcszReferent: PAnsiChar; hwnd: HWND): HResult; stdcall;
|
|
function GetReferent(pszReferent: PAnsiChar; cchReferent: Integer): HResult; stdcall;
|
|
function SetFolder(pcszFolder: PAnsiChar): HResult; stdcall;
|
|
function GetFolder(pszFolder: PAnsiChar; cchFolder: Integer): HResult; stdcall;
|
|
function GetName(pszName: PAnsiChar; cchName: Integer): HResult; stdcall;
|
|
function GetExtension(pszExtension: PAnsiChar; cchExtension: Integer): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM INewShortcutHookW}
|
|
INewShortcutHookW = interface(IUnknown) // nshhk
|
|
['{000214F7-0000-0000-C000-000000000046}']
|
|
function SetReferent(pcszReferent: PWideChar; hwnd: HWND): HResult; stdcall;
|
|
function GetReferent(pszReferent: PWideChar; cchReferent: Integer): HResult; stdcall;
|
|
function SetFolder(pcszFolder: PWideChar): HResult; stdcall;
|
|
function GetFolder(pszFolder: PWideChar; cchFolder: Integer): HResult; stdcall;
|
|
function GetName(pszName: PWideChar; cchName: Integer): HResult; stdcall;
|
|
function GetExtension(pszExtension: PWideChar; cchExtension: Integer): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM INewShortcutHook}
|
|
INewShortcutHook = INewShortcutHookA;
|
|
|
|
//===========================================================================
|
|
//
|
|
// ICopyHook Interface
|
|
//
|
|
// The copy hook is called whenever file system directories are
|
|
// copy/moved/deleted/renamed via the shell. It is also called by the shell
|
|
// on changes of status of printers.
|
|
//
|
|
// Clients register their id under STRREG_SHEX_COPYHOOK for file system hooks
|
|
// and STRREG_SHEx_PRNCOPYHOOK for printer hooks.
|
|
// the CopyCallback is called prior to the action, so the hook has the chance
|
|
// to allow, deny or cancel the operation by returning the falues:
|
|
// IDYES - means allow the operation
|
|
// IDNO - means disallow the operation on this file, but continue with
|
|
// any other operations (eg. batch copy)
|
|
// IDCANCEL - means disallow the current operation and cancel any pending
|
|
// operations
|
|
//
|
|
// arguments to the CopyCallback
|
|
// hwnd - window to use for any UI
|
|
// wFunc - what operation is being done
|
|
// wFlags - and flags (FOF_*) set in the initial call to the file operation
|
|
// pszSrcFile - name of the source file
|
|
// dwSrcAttribs - file attributes of the source file
|
|
// pszDestFile - name of the destiation file (for move and renames)
|
|
// dwDestAttribs - file attributes of the destination file
|
|
//
|
|
//
|
|
//===========================================================================
|
|
|
|
// These need to be kept in sync with the ones in ShellAPI.pas
|
|
|
|
// file operations
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
const
|
|
{$EXTERNALSYM FO_MOVE}
|
|
FO_MOVE = $0001;
|
|
{$EXTERNALSYM FO_COPY}
|
|
FO_COPY = $0002;
|
|
{$EXTERNALSYM FO_DELETE}
|
|
FO_DELETE = $0003;
|
|
{$EXTERNALSYM FO_RENAME}
|
|
FO_RENAME = $0004;
|
|
|
|
{$EXTERNALSYM FOF_MULTIDESTFILES}
|
|
FOF_MULTIDESTFILES = $0001;
|
|
{$EXTERNALSYM FOF_CONFIRMMOUSE}
|
|
FOF_CONFIRMMOUSE = $0002;
|
|
{$EXTERNALSYM FOF_SILENT}
|
|
FOF_SILENT = $0004; // don't create progress/report
|
|
{$EXTERNALSYM FOF_RENAMEONCOLLISION}
|
|
FOF_RENAMEONCOLLISION = $0008;
|
|
{$EXTERNALSYM FOF_NOCONFIRMATION}
|
|
FOF_NOCONFIRMATION = $0010; // Don't prompt the user.
|
|
{$EXTERNALSYM FOF_WANTMAPPINGHANDLE}
|
|
FOF_WANTMAPPINGHANDLE = $0020; // Fill in SHFILEOPSTRUCT.hNameMappings
|
|
// Must be freed using SHFreeNameMappings
|
|
{$EXTERNALSYM FOF_ALLOWUNDO}
|
|
FOF_ALLOWUNDO = $0040;
|
|
{$EXTERNALSYM FOF_FILESONLY}
|
|
FOF_FILESONLY = $0080; // on *.*, do only files
|
|
{$EXTERNALSYM FOF_SIMPLEPROGRESS}
|
|
FOF_SIMPLEPROGRESS = $0100; // means don't show names of files
|
|
{$EXTERNALSYM FOF_NOCONFIRMMKDIR}
|
|
FOF_NOCONFIRMMKDIR = $0200; // don't confirm making any needed dirs
|
|
{$EXTERNALSYM FOF_NOERRORUI}
|
|
FOF_NOERRORUI = $0400; // don't put up error UI
|
|
{$EXTERNALSYM FOF_NOCOPYSECURITYATTRIBS}
|
|
FOF_NOCOPYSECURITYATTRIBS = $0800; // dont copy NT file Security Attributes
|
|
{$EXTERNALSYM FOF_NORECURSION}
|
|
FOF_NORECURSION = $1000; // don't recurse into directories.
|
|
{$EXTERNALSYM FOF_NO_CONNECTED_ELEMENTS}
|
|
FOF_NO_CONNECTED_ELEMENTS = $2000; // don't operate on connected file elements.
|
|
{$EXTERNALSYM FOF_WANTNUKEWARNING}
|
|
FOF_WANTNUKEWARNING = $4000; // during delete operation, warn if nuking instead of recycling (partially overrides FOF_NOCONFIRMATION)
|
|
{$EXTERNALSYM FOF_NORECURSEREPARSE}
|
|
FOF_NORECURSEREPARSE = $8000; // treat reparse points as objects, not containers
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
type
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM FILEOP_FLAGS}
|
|
FILEOP_FLAGS = Word;
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
TFileOpFlags = Word;
|
|
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
// printer operations
|
|
const
|
|
{$EXTERNALSYM PO_DELETE}
|
|
PO_DELETE = $0013; // printer is being deleted
|
|
{$EXTERNALSYM PO_RENAME}
|
|
PO_RENAME = $0014; // printer is being renamed
|
|
{$EXTERNALSYM PO_PORTCHANGE}
|
|
PO_PORTCHANGE = $0020; // port this printer connected to is being changed
|
|
// if this id is set, the strings received by
|
|
// the copyhook are a doubly-null terminated
|
|
// list of strings. The first is the printer
|
|
// name and the second is the printer port.
|
|
{$EXTERNALSYM PO_REN_PORT}
|
|
PO_REN_PORT = $0034; // PO_RENAME and PO_PORTCHANGE at same time.
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
// no POF_ flags currently defined
|
|
|
|
type
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM PRINTEROP_FLAGS}
|
|
PRINTEROP_FLAGS = UINT;
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
TPrinterOpFlags = UINT;
|
|
|
|
{$EXTERNALSYM ICopyHookA}
|
|
ICopyHookA = interface(IUnknown) // sl
|
|
['{000214EF-0000-0000-C000-000000000046}']
|
|
function CopyCallback(hwnd: HWND; wFunc, wFlags: UINT;
|
|
pszSrcFile: PAnsiChar; dwSrcAttribs: DWORD;
|
|
pszDestFile: PAnsiChar; dwDestAttribs: DWORD): UINT; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM ICopyHookW}
|
|
ICopyHookW = interface(IUnknown) // sl
|
|
['{000214FC-0000-0000-C000-000000000046}']
|
|
// *** ICopyHook methods ***
|
|
function CopyCallback(hwnd: HWND; wFunc, wFlags: UINT;
|
|
pszSrcFile: PWideChar; dwSrcAttribs: DWORD;
|
|
pszDestFile: PWideChar; dwDestAttribs: DWORD): UINT; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM ICopyHook}
|
|
ICopyHook = ICopyHookA;
|
|
|
|
//===========================================================================
|
|
//
|
|
// IFileViewerSite Interface
|
|
//
|
|
//===========================================================================
|
|
|
|
{$EXTERNALSYM IFileViewerSite}
|
|
IFileViewerSite = interface(IUnknown)
|
|
['{000214F3-0000-0000-C000-000000000046}']
|
|
function SetPinnedWindow(hwnd: HWND): HResult; stdcall;
|
|
function GetPinnedWindow(out phwnd: HWND): HResult; stdcall;
|
|
end;
|
|
|
|
//===========================================================================
|
|
//
|
|
// IFileViewer Interface
|
|
//
|
|
// Implemented in a FileViewer component object. Used to tell a
|
|
// FileViewer to PrintTo or to view, the latter happening though
|
|
// ShowInitialize and Show. The filename is always given to the
|
|
// viewer through IPersistFile.
|
|
//
|
|
//===========================================================================
|
|
|
|
type
|
|
PFVShowInfo = ^TFVShowInfo;
|
|
{$EXTERNALSYM FVSHOWINFO}
|
|
FVSHOWINFO = record
|
|
// Stuff passed into viewer (in)
|
|
cbSize: DWORD; // Size of structure for future expansion...
|
|
hwndOwner: HWND; // who is the owner window.
|
|
iShow: Integer; // The show command
|
|
|
|
// Passed in and updated (in/Out)
|
|
dwFlags: DWORD; // flags
|
|
rect: TRect; // Where to create the window may have defaults
|
|
punkRel: IUnknown; // Relese this interface when window is visible
|
|
|
|
// Stuff that might be returned from viewer (out)
|
|
strNewFile: array[0..MAX_PATH - 1] of TOleChar; // New File to view.
|
|
end;
|
|
TFVShowInfo = FVSHOWINFO;
|
|
|
|
// Define File View Show Info Flags.
|
|
const
|
|
{$EXTERNALSYM FVSIF_RECT}
|
|
FVSIF_RECT = $00000001; // The rect variable has valid data.
|
|
{$EXTERNALSYM FVSIF_PINNED}
|
|
FVSIF_PINNED = $00000002; // We should Initialize pinned
|
|
|
|
{$EXTERNALSYM FVSIF_NEWFAILED}
|
|
FVSIF_NEWFAILED = $08000000; // The new file passed back failed
|
|
// to be viewed.
|
|
|
|
{$EXTERNALSYM FVSIF_NEWFILE}
|
|
FVSIF_NEWFILE = $80000000; // A new file to view has been returned
|
|
{$EXTERNALSYM FVSIF_CANVIEWIT}
|
|
FVSIF_CANVIEWIT = $40000000; // The viewer can view it.
|
|
|
|
type
|
|
{$EXTERNALSYM IFileViewerA}
|
|
IFileViewerA = interface(IUnknown)
|
|
['{000214F0-0000-0000-C000-000000000046}']
|
|
function ShowInitialize(lpfsi: IFileViewerSite): HResult; stdcall;
|
|
function Show(var pvsi: TFVShowInfo): HResult; stdcall;
|
|
function PrintTo(pszDriver: PAnsiChar; fSuppressUI: BOOL): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IFileViewerW}
|
|
IFileViewerW = interface(IUnknown)
|
|
['{000214F8-0000-0000-C000-000000000046}']
|
|
function ShowInitialize(lpfsi: IFileViewerSite): HResult; stdcall;
|
|
function Show(var pvsi: TFVShowInfo): HResult; stdcall;
|
|
function PrintTo(pszDriver: PWideChar; fSuppressUI: BOOL): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IFileViewer}
|
|
IFileViewer = IFileViewerA;
|
|
|
|
//==========================================================================
|
|
//
|
|
// IShellBrowser/IShellView/IShellFolder interface
|
|
//
|
|
// These three interfaces are used when the shell communicates with
|
|
// name space extensions. The shell (explorer) provides IShellBrowser
|
|
// interface, and extensions implements IShellFolder and IShellView
|
|
// interfaces.
|
|
//
|
|
//==========================================================================
|
|
|
|
|
|
//--------------------------------------------------------------------------
|
|
//
|
|
// Command/menuitem IDs
|
|
//
|
|
// The explorer dispatches WM_COMMAND messages based on the range of
|
|
// command/menuitem IDs. All the IDs of menuitems that the view (right
|
|
// pane) inserts must be in FCIDM_SHVIEWFIRST/LAST (otherwise, the explorer
|
|
// won't dispatch them). The view should not deal with any menuitems
|
|
// in FCIDM_BROWSERFIRST/LAST (otherwise, it won't work with the future
|
|
// version of the shell).
|
|
//
|
|
// FCIDM_SHVIEWFIRST/LAST for the right pane (IShellView)
|
|
// FCIDM_BROWSERFIRST/LAST for the explorer frame (IShellBrowser)
|
|
// FCIDM_GLOBAL/LAST for the explorer's submenu IDs
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
const
|
|
{$EXTERNALSYM FCIDM_SHVIEWFIRST}
|
|
FCIDM_SHVIEWFIRST = $0000;
|
|
{$EXTERNALSYM FCIDM_SHVIEWLAST}
|
|
FCIDM_SHVIEWLAST = $7FFF;
|
|
{$EXTERNALSYM FCIDM_BROWSERFIRST}
|
|
FCIDM_BROWSERFIRST = $A000;
|
|
{$EXTERNALSYM FCIDM_BROWSERLAST}
|
|
FCIDM_BROWSERLAST = $BF00;
|
|
{$EXTERNALSYM FCIDM_GLOBALFIRST}
|
|
FCIDM_GLOBALFIRST = $8000;
|
|
{$EXTERNALSYM FCIDM_GLOBALLAST}
|
|
FCIDM_GLOBALLAST = $9FFF;
|
|
|
|
//
|
|
// Global submenu IDs and separator IDs
|
|
//
|
|
{$EXTERNALSYM FCIDM_MENU_FILE}
|
|
FCIDM_MENU_FILE = FCIDM_GLOBALFIRST + $0000;
|
|
{$EXTERNALSYM FCIDM_MENU_EDIT}
|
|
FCIDM_MENU_EDIT = FCIDM_GLOBALFIRST + $0040;
|
|
{$EXTERNALSYM FCIDM_MENU_VIEW}
|
|
FCIDM_MENU_VIEW = FCIDM_GLOBALFIRST + $0080;
|
|
{$EXTERNALSYM FCIDM_MENU_VIEW_SEP_OPTIONS}
|
|
FCIDM_MENU_VIEW_SEP_OPTIONS = FCIDM_GLOBALFIRST + $0081;
|
|
{$EXTERNALSYM FCIDM_MENU_TOOLS}
|
|
FCIDM_MENU_TOOLS = FCIDM_GLOBALFIRST + $00c0; // for Win9x compat
|
|
{$EXTERNALSYM FCIDM_MENU_TOOLS_SEP_GOTO}
|
|
FCIDM_MENU_TOOLS_SEP_GOTO = FCIDM_GLOBALFIRST + $00c1; // for Win9x compat
|
|
{$EXTERNALSYM FCIDM_MENU_HELP}
|
|
FCIDM_MENU_HELP = FCIDM_GLOBALFIRST + $0100;
|
|
{$EXTERNALSYM FCIDM_MENU_FIND}
|
|
FCIDM_MENU_FIND = FCIDM_GLOBALFIRST + $0140;
|
|
{$EXTERNALSYM FCIDM_MENU_EXPLORE}
|
|
FCIDM_MENU_EXPLORE = FCIDM_GLOBALFIRST + $0150;
|
|
{$EXTERNALSYM FCIDM_MENU_FAVORITES}
|
|
FCIDM_MENU_FAVORITES = FCIDM_GLOBALFIRST + $0170;
|
|
|
|
//--------------------------------------------------------------------------
|
|
// control IDs known to the view
|
|
//--------------------------------------------------------------------------
|
|
|
|
{$EXTERNALSYM FCIDM_TOOLBAR}
|
|
FCIDM_TOOLBAR = FCIDM_BROWSERFIRST + 0;
|
|
{$EXTERNALSYM FCIDM_STATUS}
|
|
FCIDM_STATUS = FCIDM_BROWSERFIRST + 1;
|
|
|
|
//--------------------------------------------------------------------------
|
|
//
|
|
// The resource id of the offline cursor
|
|
// This cursor is avaialble in shdocvw.dll
|
|
const
|
|
{$EXTERNALSYM IDC_OFFLINE_HAND}
|
|
IDC_OFFLINE_HAND = 103;
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
// SBCMDID_GETPANE - not necessarily in order
|
|
const
|
|
{$EXTERNALSYM PANE_NONE}
|
|
PANE_NONE = -1;
|
|
{$EXTERNALSYM PANE_ZONE}
|
|
PANE_ZONE = 1;
|
|
{$EXTERNALSYM PANE_OFFLINE}
|
|
PANE_OFFLINE = 2;
|
|
{$EXTERNALSYM PANE_PRINTER}
|
|
PANE_PRINTER = 3;
|
|
{$EXTERNALSYM PANE_SSL}
|
|
PANE_SSL = 4;
|
|
{$EXTERNALSYM PANE_NAVIGATION}
|
|
PANE_NAVIGATION = 5;
|
|
{$EXTERNALSYM PANE_PROGRESS}
|
|
PANE_PROGRESS = 6;
|
|
{$EXTERNALSYM PANE_PRIVACY}
|
|
PANE_PRIVACY = 7;
|
|
|
|
|
|
//-------------------------------------------------------------------------
|
|
// ICommDlgBrowser interface
|
|
//
|
|
// ICommDlgBrowser interface is the interface that is provided by the new
|
|
// common dialog window to hook and modify the behavior of IShellView. When
|
|
// a default view is created, it queries its parent IShellBrowser for the
|
|
// ICommDlgBrowser interface. If supported, it calls out to that interface
|
|
// in several cases that need to behave differently in a dialog.
|
|
//
|
|
// Member functions:
|
|
//
|
|
// ICommDlgBrowser::OnDefaultCommand()
|
|
// Called when the user double-clicks in the view or presses Enter. The
|
|
// browser should return S_OK if it processed the action itself, S_FALSE
|
|
// to let the view perform the default action.
|
|
//
|
|
// ICommDlgBrowser::OnStateChange(ULONG uChange)
|
|
// Called when some states in the view change. 'uChange' is one of the
|
|
// CDBOSC_* values. This call is made after the state (selection, focus,
|
|
// etc) has changed. There is no return value.
|
|
//
|
|
// ICommDlgBrowser::IncludeObject(PItemIDList pidl)
|
|
// Called when the view is enumerating objects. 'pidl' is a relative
|
|
// IDLIST. The browser should return S_OK to include the object in the
|
|
// view, S_FALSE to hide it
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
|
|
{$EXTERNALSYM CDBOSC_SETFOCUS}
|
|
CDBOSC_SETFOCUS = $00000000;
|
|
{$EXTERNALSYM CDBOSC_KILLFOCUS}
|
|
CDBOSC_KILLFOCUS = $00000001;
|
|
{$EXTERNALSYM CDBOSC_SELCHANGE}
|
|
CDBOSC_SELCHANGE = $00000002;
|
|
{$EXTERNALSYM CDBOSC_RENAME}
|
|
CDBOSC_RENAME = $00000003;
|
|
{$EXTERNALSYM CDBOSC_STATECHANGE}
|
|
CDBOSC_STATECHANGE = $00000004;
|
|
|
|
type
|
|
{$EXTERNALSYM ICommDlgBrowser}
|
|
ICommDlgBrowser = interface(IUnknown)
|
|
['{000214F1-0000-0000-C000-000000000046}']
|
|
function OnDefaultCommand(ppshv: IShellView): HResult; stdcall;
|
|
function OnStateChange(ppshv: IShellView;
|
|
uChange: ULONG): HResult; stdcall;
|
|
function IncludeObject(ppshv: IShellView;
|
|
pidl: PItemIDList): HResult; stdcall;
|
|
end;
|
|
|
|
//-------------------------------------------------------------------------
|
|
// ICommDlgBrowser2 interface
|
|
//
|
|
// Member functions:
|
|
//
|
|
// ICommDlgBrowser2::Notify(IShellView *pshv, DWORD dwNotfyType)
|
|
// Called when the view is wants to notify common dialog when an event
|
|
// occurrs.
|
|
//
|
|
// CDB2N_CONTEXTMENU_START indicates the context menu has started.
|
|
// CDB2N_CONTEXTMENU_DONE indicates the context menu has completed.
|
|
//
|
|
// ICommDlgBrowser2::GetDefaultMenuText(IShellView *pshv,
|
|
// WideChar *pszText, INT cchMax)
|
|
// Called when the view wants to get the default context menu text.
|
|
// pszText points to buffer and cchMax specifies the size of the
|
|
// buffer in characters. The browser on return has filled the buffer
|
|
// with the default context menu text. The Shell will call this method
|
|
// with at least a buffer size of MAX_PATH. The browser should return
|
|
// S_OK if it returned a new default menu text, S_FALSE to let the view
|
|
// to use the normal default menu text.
|
|
//
|
|
// ICommDlgBrowser2::GetViewFlags(DWORD *pdwFlags)
|
|
// Called when the view wants to determine if special customization needs to
|
|
// be done for the common dialog browser. For example View calls this function to
|
|
// determin if all files(hidden and system)needs to be shown. If the GetViewFlags returns a DWORD with
|
|
// CDB2GVF_SHOWALLFILES flag set then it will show all the files.
|
|
//-------------------------------------------------------------------------
|
|
|
|
const
|
|
{$EXTERNALSYM CDB2N_CONTEXTMENU_DONE}
|
|
CDB2N_CONTEXTMENU_DONE = $00000001;
|
|
{$EXTERNALSYM CDB2N_CONTEXTMENU_START}
|
|
CDB2N_CONTEXTMENU_START = $00000002;
|
|
|
|
//GetViewFlags
|
|
{$EXTERNALSYM CDB2GVF_SHOWALLFILES}
|
|
CDB2GVF_SHOWALLFILES = $00000001;
|
|
|
|
type
|
|
{$EXTERNALSYM ICommDlgBrowser2}
|
|
ICommDlgBrowser2 = interface(IUnknown)
|
|
['{10339516-2894-11D2-9039-00C04F8EEB3E}']
|
|
function Notify(ppshv: IShellView; dwNotifyType: DWORD): HResult; stdcall;
|
|
function GetDefaultMenuText(ppshv: IShellView;
|
|
pszText: PWideChar; cchMax: Integer): HResult; stdcall;
|
|
function GetViewFlags(out pdwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
//
|
|
// function assumes the size of the buffer (MAX_PATH). The pidl
|
|
// should point to a file system object.
|
|
|
|
{$EXTERNALSYM SHGetPathFromIDListA}
|
|
function SHGetPathFromIDListA(pidl: PItemIDList;
|
|
pszPath: PAnsiChar): BOOL; stdcall;
|
|
{$EXTERNALSYM SHGetPathFromIDListW}
|
|
function SHGetPathFromIDListW(pidl: PItemIDList;
|
|
pszPath: PWideChar): BOOL; stdcall;
|
|
{$EXTERNALSYM SHGetPathFromIDList}
|
|
function SHGetPathFromIDList(pidl: PItemIDList;
|
|
pszPath: PTSTR): BOOL; stdcall;
|
|
|
|
{$EXTERNALSYM SHCreateDirectory}
|
|
function SHCreateDirectory(hwnd: HWND; pszPath: PWideChar): Integer; stdcall;
|
|
|
|
{$EXTERNALSYM SHCreateDirectoryExA}
|
|
function SHCreateDirectoryExA(hwnd: HWND; pszPath: PAnsiChar;
|
|
var psa: TSecurityAttributes): Integer; stdcall;
|
|
{$EXTERNALSYM SHCreateDirectoryExW}
|
|
function SHCreateDirectoryExW(hwnd: HWND; pszPath: PWideChar;
|
|
var psa: TSecurityAttributes): Integer; stdcall;
|
|
{$EXTERNALSYM SHCreateDirectoryEx}
|
|
function SHCreateDirectoryEx(hwnd: HWND; pszPath: PTSTR;
|
|
var psa: TSecurityAttributes): Integer; stdcall;
|
|
|
|
{$EXTERNALSYM SHOpenFolderAndSelectItems}
|
|
function SHOpenFolderAndSelectItems(pidlFolder: PItemIDList; cidl: UINT;
|
|
apidl: PPItemIDListArray; dwFlags: DWORD): HResult; stdcall;
|
|
|
|
{$EXTERNALSYM SHCreateShellItem}
|
|
function SHCreateShellItem(pidlParent: PItemIDList;
|
|
psfParent: IShellFolder; pidl: PItemIDList;
|
|
out ppsi: IShellItem): HResult stdcall;
|
|
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// SHGetSpecialFolderLocation
|
|
//
|
|
// Caller should use SHGetMalloc to obtain an allocator that can free the pidl
|
|
//
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// registry entries for special paths are kept in :
|
|
const
|
|
{$EXTERNALSYM REGSTR_PATH_SPECIAL_FOLDERS}
|
|
REGSTR_PATH_SPECIAL_FOLDERS = '\Shell Folders';
|
|
|
|
{$EXTERNALSYM CSIDL_DESKTOP}
|
|
CSIDL_DESKTOP = $0000; // <desktop>
|
|
{$EXTERNALSYM CSIDL_INTERNET}
|
|
CSIDL_INTERNET = $0001; // Internet Explorer (icon on desktop)
|
|
{$EXTERNALSYM CSIDL_PROGRAMS}
|
|
CSIDL_PROGRAMS = $0002; // Start Menu\Programs
|
|
{$EXTERNALSYM CSIDL_CONTROLS}
|
|
CSIDL_CONTROLS = $0003; // My Computer\Control Panel
|
|
{$EXTERNALSYM CSIDL_PRINTERS}
|
|
CSIDL_PRINTERS = $0004; // My Computer\Printers
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CSIDL_PERSONAL}
|
|
CSIDL_PERSONAL = $0005; // My Documents
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CSIDL_FAVORITES}
|
|
CSIDL_FAVORITES = $0006; // <user name>\Favorites
|
|
{$EXTERNALSYM CSIDL_STARTUP}
|
|
CSIDL_STARTUP = $0007; // Start Menu\Programs\Startup
|
|
{$EXTERNALSYM CSIDL_RECENT}
|
|
CSIDL_RECENT = $0008; // <user name>\Recent
|
|
{$EXTERNALSYM CSIDL_SENDTO}
|
|
CSIDL_SENDTO = $0009; // <user name>\SendTo
|
|
{$EXTERNALSYM CSIDL_BITBUCKET}
|
|
CSIDL_BITBUCKET = $000A; // <desktop>\Recycle Bin
|
|
{$EXTERNALSYM CSIDL_STARTMENU}
|
|
CSIDL_STARTMENU = $000B; // <user name>\Start Menu
|
|
{$EXTERNALSYM CSIDL_MYDOCUMENTS}
|
|
CSIDL_MYDOCUMENTS = $000C; // logical "My Documents" desktop icon
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CSIDL_MYMUSIC}
|
|
CSIDL_MYMUSIC = $000D; // "My Music" folder
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CSIDL_MYVIDEO}
|
|
CSIDL_MYVIDEO = $000E; // "My Videos" folder
|
|
CSIDL_DESKTOPDIRECTORY = $0010; // <user name>\Desktop
|
|
{$EXTERNALSYM CSIDL_DRIVES}
|
|
CSIDL_DRIVES = $0011; // My Computer
|
|
{$EXTERNALSYM CSIDL_NETWORK}
|
|
CSIDL_NETWORK = $0012; // Network Neighborhood (My Network Places)
|
|
{$EXTERNALSYM CSIDL_NETHOOD}
|
|
CSIDL_NETHOOD = $0013; // <user name>\nethood
|
|
{$EXTERNALSYM CSIDL_FONTS}
|
|
CSIDL_FONTS = $0014; // windows\fonts
|
|
{$EXTERNALSYM CSIDL_TEMPLATES}
|
|
CSIDL_TEMPLATES = $0015;
|
|
{$EXTERNALSYM CSIDL_COMMON_STARTMENU}
|
|
CSIDL_COMMON_STARTMENU = $0016; // All Users\Start Menu
|
|
{$EXTERNALSYM CSIDL_COMMON_PROGRAMS}
|
|
CSIDL_COMMON_PROGRAMS = $0017; // All Users\Start Menu\Programs
|
|
{$EXTERNALSYM CSIDL_COMMON_STARTUP}
|
|
CSIDL_COMMON_STARTUP = $0018; // All Users\Startup
|
|
{$EXTERNALSYM CSIDL_COMMON_DESKTOPDIRECTORY}
|
|
CSIDL_COMMON_DESKTOPDIRECTORY = $0019; // All Users\Desktop
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CSIDL_APPDATA}
|
|
CSIDL_APPDATA = $001A; // <user name>\Application Data
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CSIDL_PRINTHOOD}
|
|
CSIDL_PRINTHOOD = $001B; // <user name>\PrintHood
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CSIDL_LOCAL_APPDATA}
|
|
CSIDL_LOCAL_APPDATA = $001C; // <user name>\Local Settings\Applicaiton Data (non roaming)
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM CSIDL_ALTSTARTUP}
|
|
CSIDL_ALTSTARTUP = $001D; // non localized startup
|
|
{$EXTERNALSYM CSIDL_COMMON_ALTSTARTUP}
|
|
CSIDL_COMMON_ALTSTARTUP = $001E; // non localized common startup
|
|
{$EXTERNALSYM CSIDL_COMMON_FAVORITES}
|
|
CSIDL_COMMON_FAVORITES = $001F;
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CSIDL_INTERNET_CACHE}
|
|
CSIDL_INTERNET_CACHE = $0020;
|
|
{$EXTERNALSYM CSIDL_COOKIES}
|
|
CSIDL_COOKIES = $0021;
|
|
{$EXTERNALSYM CSIDL_HISTORY}
|
|
CSIDL_HISTORY = $0022;
|
|
{$EXTERNALSYM CSIDL_COMMON_APPDATA}
|
|
CSIDL_COMMON_APPDATA = $0023; // All Users\Application Data
|
|
{$EXTERNALSYM CSIDL_WINDOWS}
|
|
CSIDL_WINDOWS = $0024; // GetWindowsDirectory()
|
|
{$EXTERNALSYM CSIDL_SYSTEM}
|
|
CSIDL_SYSTEM = $0025; // GetSystemDirectory()
|
|
{$EXTERNALSYM CSIDL_PROGRAM_FILES}
|
|
CSIDL_PROGRAM_FILES = $0026; // C:\Program Files
|
|
{$EXTERNALSYM CSIDL_MYPICTURES}
|
|
CSIDL_MYPICTURES = $0027; // C:\Program Files\My Pictures
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM CSIDL_PROFILE}
|
|
CSIDL_PROFILE = $0028; // USERPROFILE
|
|
{$EXTERNALSYM CSIDL_SYSTEMX86}
|
|
CSIDL_SYSTEMX86 = $0029; // x86 system directory on RISC
|
|
{$EXTERNALSYM CSIDL_PROGRAM_FILESX86}
|
|
CSIDL_PROGRAM_FILESX86 = $002A; // x86 C:\Program Files on RISC
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CSIDL_PROGRAM_FILES_COMMON}
|
|
CSIDL_PROGRAM_FILES_COMMON = $002B; // C:\Program Files\Common
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM CSIDL_PROGRAM_FILES_COMMONX86}
|
|
CSIDL_PROGRAM_FILES_COMMONX86 = $002C; // x86 Program Files\Common on RISC
|
|
{$EXTERNALSYM CSIDL_COMMON_TEMPLATES}
|
|
CSIDL_COMMON_TEMPLATES = $002D; // All Users\Templates
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CSIDL_COMMON_DOCUMENTS}
|
|
CSIDL_COMMON_DOCUMENTS = $002E; // All Users\Documents
|
|
|
|
{$EXTERNALSYM CSIDL_COMMON_ADMINTOOLS}
|
|
CSIDL_COMMON_ADMINTOOLS = $002F; // All Users\Start Menu\Programs\Administrative Tools
|
|
{$EXTERNALSYM CSIDL_ADMINTOOLS}
|
|
CSIDL_ADMINTOOLS = $0030; // <user name>\Start Menu\Programs\Administrative Tools
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM CSIDL_CONNECTIONS}
|
|
CSIDL_CONNECTIONS = $0031; // Network and Dial-up Connections
|
|
{$EXTERNALSYM CSIDL_COMMON_MUSIC}
|
|
CSIDL_COMMON_MUSIC = $0035; // All Users\My Music
|
|
{$EXTERNALSYM CSIDL_COMMON_PICTURES}
|
|
CSIDL_COMMON_PICTURES = $0036; // All Users\My Pictures
|
|
{$EXTERNALSYM CSIDL_COMMON_VIDEO}
|
|
CSIDL_COMMON_VIDEO = $0037; // All Users\My Video
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CSIDL_RESOURCES}
|
|
CSIDL_RESOURCES = $0038; // Resource Direcotry
|
|
|
|
{$EXTERNALSYM CSIDL_RESOURCES_LOCALIZED}
|
|
CSIDL_RESOURCES_LOCALIZED = $0039; // Localized Resource Direcotry
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM CSIDL_COMMON_OEM_LINKS}
|
|
CSIDL_COMMON_OEM_LINKS = $003A; // Links to All Users OEM specific apps
|
|
{$EXTERNALSYM CSIDL_CDBURN_AREA}
|
|
CSIDL_CDBURN_AREA = $003B; // USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning
|
|
// unused = $003C;
|
|
{$EXTERNALSYM CSIDL_COMPUTERSNEARME}
|
|
CSIDL_COMPUTERSNEARME = $003D; // Computers Near Me (computered from Workgroup membership)
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM CSIDL_FLAG_CREATE}
|
|
CSIDL_FLAG_CREATE = $8000; // combine with CSIDL_ value to force folder creation in SHGetFolderPath()
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM CSIDL_FLAG_DONT_VERIFY}
|
|
CSIDL_FLAG_DONT_VERIFY = $4000; // combine with CSIDL_ value to return an unverified folder path
|
|
{$EXTERNALSYM CSIDL_FLAG_NO_ALIAS}
|
|
CSIDL_FLAG_NO_ALIAS = $1000; // combine with CSIDL_ value to insure non-alias versions of the pidl
|
|
{$EXTERNALSYM CSIDL_FLAG_PER_USER_INIT}
|
|
CSIDL_FLAG_PER_USER_INIT = $0800; // combine with CSIDL_ value to indicate per-user init (eg. upgrade)
|
|
{$EXTERNALSYM CSIDL_FLAG_MASK}
|
|
CSIDL_FLAG_MASK = $FF00; // mask for all possible flag values
|
|
|
|
{$EXTERNALSYM CSIDL_FLAG_PFTI_TRACKTARGET}
|
|
CSIDL_FLAG_PFTI_TRACKTARGET = CSIDL_FLAG_DONT_VERIFY;
|
|
|
|
{$EXTERNALSYM SHGetSpecialFolderLocation}
|
|
function SHGetSpecialFolderLocation(hwnd: HWND; csidl: Integer; out ppidl: PItemIDList): HResult; stdcall;
|
|
|
|
{$EXTERNALSYM SHFlushSFCache}
|
|
procedure SHFlushSFCache; stdcall;
|
|
{$EXTERNALSYM SHCloneSpecialIDList}
|
|
function SHCloneSpecialIDList(hwnd: HWND; csidl: Integer; fCreate: BOOL): PItemIDList; stdcall;
|
|
|
|
{$EXTERNALSYM SHGetSpecialFolderPathA}
|
|
function SHGetSpecialFolderPathA(hwnd: HWND; pszPath: PAnsiChar; csidl: Integer; fCreate: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM SHGetSpecialFolderPathW}
|
|
function SHGetSpecialFolderPathW(hwnd: HWND; pszPath: PWideChar; csidl: Integer; fCreate: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM SHGetSpecialFolderPath}
|
|
function SHGetSpecialFolderPath(hwnd: HWND; pszPath: PTSTR; csidl: Integer; fCreate: BOOL): BOOL; stdcall;
|
|
|
|
type
|
|
{$EXTERNALSYM SHGFP_TYPE}
|
|
SHGFP_TYPE = DWORD;
|
|
TSHGFPType = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM SHGFP_TYPE_CURRENT}
|
|
SHGFP_TYPE_CURRENT = 0; // current value for user, verify it exists
|
|
{$EXTERNALSYM SHGFP_TYPE_DEFAULT}
|
|
SHGFP_TYPE_DEFAULT = 1; // default value, may not exist
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
{$EXTERNALSYM SHGetFolderPathA}
|
|
function SHGetFolderPathA(hwnd: HWND; csidl: Integer; hToken: THandle;
|
|
dwFlags: DWORD; pszPath: PAnsiChar): HResult; stdcall;
|
|
{$EXTERNALSYM SHGetFolderPathW}
|
|
function SHGetFolderPathW(hwnd: HWND; csidl: Integer; hToken: THandle;
|
|
dwFlags: DWORD; pszPath: PWideChar): HResult; stdcall;
|
|
{$EXTERNALSYM SHGetFolderPath}
|
|
function SHGetFolderPath(hwnd: HWND; csidl: Integer; hToken: THandle;
|
|
dwFlags: DWORD; pszPath: PTSTR): HResult; stdcall;
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$EXTERNALSYM SHGetFolderLocation}
|
|
function SHGetFolderLocation(hwnd: HWND; csidl: Integer; hToken: THandle; dwFlags: DWORD; out ppidl: ItemIDList): HResult; stdcall;
|
|
|
|
{$EXTERNALSYM SHGetFolderPathAndSubDirA}
|
|
function SHGetFolderPathAndSubDirA(hwnd: HWND; csidl: Integer; hToken: THandle; dwFlags: DWORD; pszSubDir, pszPath: PAnsiChar): HResult; stdcall;
|
|
{$EXTERNALSYM SHGetFolderPathAndSubDirW}
|
|
function SHGetFolderPathAndSubDirW(hwnd: HWND; csidl: Integer; hToken: THandle; dwFlags: DWORD; pszSubDir, pszPath: PWideChar): HResult; stdcall;
|
|
{$EXTERNALSYM SHGetFolderPathAndSubDir}
|
|
function SHGetFolderPathAndSubDir(hwnd: HWND; csidl: Integer; hToken: THandle; dwFlags: DWORD; pszSubDir, pszPath: PTSTR): HResult; stdcall;
|
|
|
|
const
|
|
{$EXTERNALSYM FCS_READ}
|
|
FCS_READ = $00000001;
|
|
{$EXTERNALSYM FCS_FORCEWRITE}
|
|
FCS_FORCEWRITE = $00000002;
|
|
{$EXTERNALSYM FCS_WRITE}
|
|
FCS_WRITE = FCS_READ or FCS_FORCEWRITE;
|
|
|
|
{$EXTERNALSYM FCS_FLAG_DRAGDROP}
|
|
FCS_FLAG_DRAGDROP = 2;
|
|
|
|
// Mask which values have been retreived or being set.
|
|
{$EXTERNALSYM FCSM_VIEWID}
|
|
FCSM_VIEWID = $00000001;
|
|
{$EXTERNALSYM FCSM_WEBVIEWTEMPLATE}
|
|
FCSM_WEBVIEWTEMPLATE = $00000002;
|
|
{$EXTERNALSYM FCSM_INFOTIP}
|
|
FCSM_INFOTIP = $00000004;
|
|
{$EXTERNALSYM FCSM_CLSID}
|
|
FCSM_CLSID = $00000008;
|
|
{$EXTERNALSYM FCSM_ICONFILE}
|
|
FCSM_ICONFILE = $00000010;
|
|
{$EXTERNALSYM FCSM_LOGO}
|
|
FCSM_LOGO = $00000020;
|
|
{$EXTERNALSYM FCSM_FLAGS}
|
|
FCSM_FLAGS = $00000040;
|
|
|
|
// Used by SHGetSetFolderCustomSettingsA
|
|
type
|
|
PSHFolderCustomSettingsA = ^TSHFolderCustomSettingsA;
|
|
{$EXTERNALSYM SHFOLDERCUSTOMSETTINGSA}
|
|
SHFOLDERCUSTOMSETTINGSA = record
|
|
dwSize: DWORD;
|
|
dwMask: DWORD; // IN/OUT Which Attributes to Get/Set
|
|
pvid: PShellViewID; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
// The folder's WebView template path
|
|
pszWebViewTemplate: PAnsiChar; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
cchWebViewTemplate: DWORD; // IN - Specifies the size of the buffer pointed to by pszWebViewTemplate
|
|
// Ignored if dwReadWrite is FCS_READ
|
|
pszWebViewTemplateVersion: PAnsiChar; // currently IN only
|
|
// Infotip for the folder
|
|
pszInfoTip: PAnsiChar; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
cchInfoTip: DWORD; // IN - Specifies the size of the buffer pointed to by pszInfoTip
|
|
// Ignored if dwReadWrite is FCS_READ
|
|
// CLSID that points to more info in the registry
|
|
pclsid: PCLSID; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
// Other flags for the folder. Takes FCS_FLAG_* values
|
|
dwFlags: DWORD; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
|
|
pszIconFile: PAnsiChar; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
cchIconFile: DWORD; // IN - Specifies the size of the buffer pointed to by pszIconFile
|
|
// Ignored if dwReadWrite is FCS_READ
|
|
|
|
iIconIndex: Integer; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
|
|
pszLogo: PAnsiChar; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
cchLogo: DWORD; // IN - Specifies the size of the buffer pointed to by pszIconFile
|
|
// Ignored if dwReadWrite is FCS_READ
|
|
end;
|
|
TSHFolderCustomSettingsA = SHFOLDERCUSTOMSETTINGSA;
|
|
|
|
PSHFolderCustomSettingsW = ^TSHFolderCustomSettingsW;
|
|
{$EXTERNALSYM SHFOLDERCUSTOMSETTINGSW}
|
|
SHFOLDERCUSTOMSETTINGSW = record
|
|
dwSize: DWORD;
|
|
dwMask: DWORD; // IN/OUT Which Attributes to Get/Set
|
|
pvid: PShellViewID; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
// The folder's WebView template path
|
|
pszWebViewTemplate: PWideChar; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
cchWebViewTemplate: DWORD; // IN - Specifies the size of the buffer pointed to by pszWebViewTemplate
|
|
// Ignored if dwReadWrite is FCS_READ
|
|
pszWebViewTemplateVersion: PWideChar; // currently IN only
|
|
// Infotip for the folder
|
|
pszInfoTip: PWideChar; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
cchInfoTip: DWORD; // IN - Specifies the size of the buffer pointed to by pszInfoTip
|
|
// Ignored if dwReadWrite is FCS_READ
|
|
// CLSID that points to more info in the registry
|
|
pclsid: PCLSID; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
// Other flags for the folder. Takes FCS_FLAG_* values
|
|
dwFlags: DWORD; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
|
|
|
|
pszIconFile: PWideChar; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
cchIconFile: DWORD; // IN - Specifies the size of the buffer pointed to by pszIconFile
|
|
// Ignored if dwReadWrite is FCS_READ
|
|
|
|
iIconIndex: Integer; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
|
|
pszLogo: PWideChar; // OUT - if dwReadWrite is FCS_READ, IN - otherwise
|
|
cchLogo: DWORD; // IN - Specifies the size of the buffer pointed to by pszIconFile
|
|
// Ignored if dwReadWrite is FCS_READ
|
|
end;
|
|
TSHFolderCustomSettingsW = SHFOLDERCUSTOMSETTINGSW;
|
|
|
|
{$EXTERNALSYM SHFOLDERCUSTOMSETTINGS}
|
|
SHFOLDERCUSTOMSETTINGS = SHFOLDERCUSTOMSETTINGSA;
|
|
TSHFolderCustomSettings = TSHFolderCustomSettingsA;
|
|
PSHFolderCustomSettings = PSHFolderCustomSettingsA;
|
|
|
|
// Gets/Sets the Folder Custom Settings for pszPath based on dwReadWrite.
|
|
// dwReadWrite can be FCS_READ/FCS_WRITE/FCS_FORCEWRITE
|
|
|
|
{$EXTERNALSYM SHGetSetFolderCustomSettingsA}
|
|
function SHGetSetFolderCustomSettingsA(var pfcs: TSHFolderCustomSettingsA;
|
|
pszPath: PAnsiChar; dwReadWrite: DWORD): HResult; stdcall;
|
|
{$EXTERNALSYM SHGetSetFolderCustomSettingsW}
|
|
function SHGetSetFolderCustomSettingsW(var pfcs: TSHFolderCustomSettingsW;
|
|
pszPath: PWideChar; dwReadWrite: DWORD): HResult; stdcall;
|
|
{$EXTERNALSYM SHGetSetFolderCustomSettingsA}
|
|
function SHGetSetFolderCustomSettings(var pfcs: TSHFolderCustomSettings;
|
|
pszPath: PTSTR; dwReadWrite: DWORD): HResult; stdcall;
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// SHBrowseForFolder API
|
|
//
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
type
|
|
{$EXTERNALSYM BFFCALLBACK}
|
|
BFFCALLBACK = function(hwnd: HWND; uMsg: UINT; lParam: LPARAM; lpData: LPARAM): Integer stdcall;
|
|
TBFFCallback = BFFCALLBACK;
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
//#include <pshpack8.h>
|
|
|
|
type
|
|
PBrowseInfoA = ^TBrowseInfoA;
|
|
{$EXTERNALSYM _browseinfoA}
|
|
_browseinfoA = record
|
|
hwndOwner: HWND;
|
|
pidlRoot: PItemIDList;
|
|
pszDisplayName: PAnsiChar; // Return display name of item selected.
|
|
lpszTitle: PAnsiChar; // text to go in the banner over the tree.
|
|
ulFlags: UINT; // Flags that control the return stuff
|
|
lpfn: TBFFCallback;
|
|
lParam: LPARAM; // extra info that's passed back in callbacks
|
|
iImage: Integer; // output var: where to return the Image index.
|
|
end;
|
|
{$EXTERNALSYM BROWSEINFOA}
|
|
BROWSEINFOA = _browseinfoA;
|
|
TBrowseInfoA = _browseinfoA;
|
|
|
|
PBrowseInfoW = ^TBrowseInfoW;
|
|
{$EXTERNALSYM _browseinfoW}
|
|
_browseinfoW = record
|
|
hwndOwner: HWND;
|
|
pidlRoot: PItemIDList;
|
|
pszDisplayName: PWideChar; // Return display name of item selected.
|
|
lpszTitle: PWideChar; // text to go in the banner over the tree.
|
|
ulFlags: UINT; // Flags that control the return stuff
|
|
lpfn: TBFFCallback;
|
|
lParam: LPARAM; // extra info that's passed back in callbacks
|
|
iImage: Integer; // output var: where to return the Image index.
|
|
end;
|
|
{$EXTERNALSYM BROWSEINFOA}
|
|
BROWSEINFOW = _browseinfoW;
|
|
TBrowseInfoW = _browseinfoW;
|
|
|
|
{$EXTERNALSYM BROWSEINFO}
|
|
BROWSEINFO = BROWSEINFOA;
|
|
TBrowseInfo = TBrowseInfoA;
|
|
PBrowseInfo = PBrowseInfoA;
|
|
|
|
// Browsing for directory.
|
|
const
|
|
{$EXTERNALSYM BIF_RETURNONLYFSDIRS}
|
|
BIF_RETURNONLYFSDIRS = $0001; // For finding a folder to start document searching
|
|
{$EXTERNALSYM BIF_DONTGOBELOWDOMAIN}
|
|
BIF_DONTGOBELOWDOMAIN = $0002; // For starting the Find Computer
|
|
{$EXTERNALSYM BIF_STATUSTEXT}
|
|
BIF_STATUSTEXT = $0004; // Top of the dialog has 2 lines of text for BROWSEINFO.lpszTitle and one line if
|
|
// this flag is set. Passing the message BFFM_SETSTATUSTEXTA to the hwnd can set the
|
|
// rest of the text. This is not used with BIF_USENEWUI and BROWSEINFO.lpszTitle gets
|
|
// all three lines of text.
|
|
{$EXTERNALSYM BIF_RETURNFSANCESTORS}
|
|
BIF_RETURNFSANCESTORS = $0008;
|
|
{$EXTERNALSYM BIF_EDITBOX}
|
|
BIF_EDITBOX = $0010; // Add an editbox to the dialog
|
|
{$EXTERNALSYM BIF_VALIDATE}
|
|
BIF_VALIDATE = $0020; // insist on valid result (or CANCEL)
|
|
|
|
{$EXTERNALSYM BIF_NEWDIALOGSTYLE}
|
|
BIF_NEWDIALOGSTYLE = $0040; // Use the new dialog layout with the ability to resize
|
|
// Caller needs to call OleInitialize() before using this API
|
|
|
|
{$EXTERNALSYM BIF_USENEWUI}
|
|
BIF_USENEWUI = BIF_NEWDIALOGSTYLE or BIF_EDITBOX;
|
|
|
|
{$EXTERNALSYM BIF_BROWSEINCLUDEURLS}
|
|
BIF_BROWSEINCLUDEURLS = $0080; // Allow URLs to be displayed or entered. (Requires BIF_USENEWUI)
|
|
{$EXTERNALSYM BIF_UAHINT}
|
|
BIF_UAHINT = $0100; // Add a UA hint to the dialog, in place of the edit box. May not be combined with BIF_EDITBOX
|
|
{$EXTERNALSYM BIF_NONEWFOLDERBUTTON}
|
|
BIF_NONEWFOLDERBUTTON = $0200; // Do not add the "New Folder" button to the dialog. Only applicable with BIF_NEWDIALOGSTYLE.
|
|
{$EXTERNALSYM BIF_NOTRANSLATETARGETS}
|
|
BIF_NOTRANSLATETARGETS= $0400; // don't traverse target as shortcut
|
|
|
|
{$EXTERNALSYM BIF_BROWSEFORCOMPUTER}
|
|
BIF_BROWSEFORCOMPUTER = $1000; // Browsing for Computers.
|
|
{$EXTERNALSYM BIF_BROWSEFORPRINTER}
|
|
BIF_BROWSEFORPRINTER = $2000; // Browsing for Printers
|
|
{$EXTERNALSYM BIF_BROWSEINCLUDEFILES}
|
|
BIF_BROWSEINCLUDEFILES= $4000; // Browsing for Everything
|
|
{$EXTERNALSYM BIF_SHAREABLE}
|
|
BIF_SHAREABLE = $8000; // sharable resources displayed (remote shares, requires BIF_USENEWUI)
|
|
|
|
// message from browser
|
|
{$EXTERNALSYM BFFM_INITIALIZED}
|
|
BFFM_INITIALIZED = 1;
|
|
{$EXTERNALSYM BFFM_SELCHANGED}
|
|
BFFM_SELCHANGED = 2;
|
|
{$EXTERNALSYM BFFM_VALIDATEFAILEDA}
|
|
BFFM_VALIDATEFAILEDA = 3; // lParam:szPath ret:1(cont),0(EndDialog)
|
|
{$EXTERNALSYM BFFM_VALIDATEFAILEDW}
|
|
BFFM_VALIDATEFAILEDW = 4; // lParam:wzPath ret:1(cont),0(EndDialog)
|
|
{$EXTERNALSYM BFFM_IUNKNOWN}
|
|
BFFM_IUNKNOWN = 5; // provides IUnknown to client. lParam: IUnknown*
|
|
|
|
// messages to browser
|
|
{$EXTERNALSYM BFFM_SETSTATUSTEXTA}
|
|
BFFM_SETSTATUSTEXTA = WM_USER + 100;
|
|
{$EXTERNALSYM BFFM_ENABLEOK}
|
|
BFFM_ENABLEOK = WM_USER + 101;
|
|
{$EXTERNALSYM BFFM_SETSELECTIONA}
|
|
BFFM_SETSELECTIONA = WM_USER + 102;
|
|
{$EXTERNALSYM BFFM_SETSELECTIONW}
|
|
BFFM_SETSELECTIONW = WM_USER + 103;
|
|
{$EXTERNALSYM BFFM_SETSTATUSTEXTW}
|
|
BFFM_SETSTATUSTEXTW = WM_USER + 104;
|
|
{$EXTERNALSYM BFFM_SETOKTEXT}
|
|
BFFM_SETOKTEXT = WM_USER + 105; // Unicode only
|
|
{$EXTERNALSYM BFFM_SETEXPANDED}
|
|
BFFM_SETEXPANDED = WM_USER + 106; // Unicode only
|
|
|
|
{$EXTERNALSYM SHBrowseForFolderA}
|
|
function SHBrowseForFolderA(var lpbi: TBrowseInfoA): PItemIDList; stdcall;
|
|
{$EXTERNALSYM SHBrowseForFolderW}
|
|
function SHBrowseForFolderW(var lpbi: TBrowseInfoW): PItemIDList; stdcall;
|
|
{$EXTERNALSYM SHBrowseForFolder}
|
|
function SHBrowseForFolder(var lpbi: TBrowseInfo): PItemIDList; stdcall;
|
|
|
|
const
|
|
{$EXTERNALSYM BFFM_SETSTATUSTEXT}
|
|
BFFM_SETSTATUSTEXT = BFFM_SETSTATUSTEXTA;
|
|
{$EXTERNALSYM BFFM_SETSELECTION}
|
|
BFFM_SETSELECTION = BFFM_SETSELECTIONA;
|
|
|
|
{$EXTERNALSYM BFFM_VALIDATEFAILED}
|
|
BFFM_VALIDATEFAILED = BFFM_VALIDATEFAILEDA;
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// SHLoadInProc
|
|
//
|
|
// When this function is called, the shell calls CoCreateInstance
|
|
// (or equivalent) with CLSCTX_INPROC_SERVER and the specified CLSID
|
|
// from within the shell's process and release it immediately.
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
|
|
{$EXTERNALSYM SHLoadInProc}
|
|
function SHLoadInProc(const clsid: TCLSID): HResult; stdcall;
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// SHEnableServiceObject
|
|
//
|
|
// Like SHLoadInProc, but gives control over the object's lifetime
|
|
// via fEnable parameter. TRUE tells the shell to create the object
|
|
// and hold onto it, FALSE tells the shell to look for the previously
|
|
// created instance of the object and release it.
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
|
|
{$EXTERNALSYM SHEnableServiceObject}
|
|
function SHEnableServiceObject(const rclsid: TCLSID; fEnable: BOOL): HResult stdcall;
|
|
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// Internet Shortcut Object
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
// Cmds for CGID_ShortCut
|
|
const
|
|
{$EXTERNALSYM ISHCUTCMDID_DOWNLOADICON}
|
|
ISHCUTCMDID_DOWNLOADICON = 0;
|
|
{$EXTERNALSYM ISHCUTCMDID_INTSHORTCUTCREATE}
|
|
ISHCUTCMDID_INTSHORTCUTCREATE = 1;
|
|
|
|
{$EXTERNALSYM CMDID_INTSHORTCUTCREATE}
|
|
CMDID_INTSHORTCUTCREATE = ISHCUTCMDID_INTSHORTCUTCREATE;
|
|
|
|
//
|
|
// Helper function which returns a IShellFolder interface to the desktop
|
|
// folder. This is equivalent to call CoCreateInstance with CLSID_ShellDesktop.
|
|
//
|
|
// CoCreateInstance(CLSID_Desktop, NULL,
|
|
// CLSCTX_INPROC, IID_IShellFolder, &pshf);
|
|
//
|
|
{$EXTERNALSYM SHGetDesktopFolder}
|
|
function SHGetDesktopFolder(out ppshf: IShellFolder): HResult; stdcall;
|
|
|
|
|
|
// IShellFolder IBindCtx* parameters. the IUnknown for these are
|
|
// accessed through IBindCtx::RegisterObjectParam/GetObjectParam
|
|
// use this to provide the data needed create IDLists through
|
|
// IShellFolder::ParseDisplayName(). this data applies to the last element
|
|
// of the name that is parsed (c:\foo\bar.txt, data applies to bar.txt)
|
|
// this makes creating these IDLists much faster that suppling the name only
|
|
|
|
const
|
|
{$EXTERNALSYM STR_FILE_SYS_BIND_DATA}
|
|
STR_FILE_SYS_BIND_DATA = 'File System Bind Data';
|
|
|
|
type
|
|
{$EXTERNALSYM IFileSystemBindData}
|
|
IFileSystemBindData = interface(IUnknown)
|
|
['{01e18d10-4d8b-11d2-855d-006008059367}']
|
|
function SetFindData(const pfd: TWin32FindDataW): HResult; stdcall;
|
|
function GetFindData(out pfd: TWin32FindDataW): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IShellDetails}
|
|
IShellDetails = interface(IUnknown)
|
|
['{000214EC-0000-0000-C000-000000000046}']
|
|
function GetDetailsOf(pidl: PItemIDList; iColumn: UINT; out pDetails: TShellDetails): HResult; stdcall;
|
|
function ColumnClick(iColumn: UINT): HResult; stdcall;
|
|
end;
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// IObjMgr interface
|
|
//
|
|
//
|
|
// [Member functions]
|
|
//
|
|
// IObjMgr::Append(punk)
|
|
// This function adds an object to the end of a list of objects.
|
|
//
|
|
// IObjMgr::Remove(punk)
|
|
// This function removes an object from a list of objects.
|
|
//
|
|
// This is implemented by CLSID_ACLMulti so each AutoComplete List
|
|
// (CLSID_ACLHistory, CLSID_ACListISF, CLSID_ACLMRU) can be added.
|
|
// CLSID_ACLMulti's IEnumString will then be the union of the results
|
|
// from the COM Objects added.
|
|
//-------------------------------------------------------------------------
|
|
|
|
{$EXTERNALSYM IObjMgr}
|
|
IObjMgr = interface(IUnknown)
|
|
['{00BB2761-6A77-11D0-A535-00C04FD7D062}']
|
|
function Append(punk: IUnknown): HResult; stdcall;
|
|
function Remove(punk: IUnknown): HResult; stdcall;
|
|
end;
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// ICurrentWorkingDirectory interface
|
|
//
|
|
//
|
|
// [Member functions]
|
|
//
|
|
// ICurrentWorkingDirectory::GetDirectory(PWideChar pwzPath, DWORD cchSize)
|
|
// This function gets the Current Working Directory from a COM object that
|
|
// stores such state.
|
|
//
|
|
// ICurrentWorkingDirectory::SetDirectory(PWideChar pwzPath)
|
|
// This function sets the Current Working Directory of a COM object that
|
|
// stores such state.
|
|
//
|
|
// This function can be used generically. One COM object that implements it
|
|
// is CLSID_ACListISF so that the AutoComplete engine can complete relative
|
|
// paths. SetDirectory() will set the "Current Working Directory" and
|
|
// AutoComplete with then complete both absolute and relative paths.
|
|
// For Example, if ::SetDirectory(L"C:\Program Files") is called, then
|
|
// the user can AutoComplete "..\winnt". In order to set the current
|
|
// working directory for non-file system paths, "ftp://ftp.microsoft.com/" or
|
|
// "Control Panel" for example, use IPersistFolder.
|
|
//-------------------------------------------------------------------------
|
|
|
|
{$EXTERNALSYM ICurrentWorkingDirectory}
|
|
ICurrentWorkingDirectory = interface(IUnknown)
|
|
['{91956D21-9276-11D1-921A-006097DF5BD4}']
|
|
function GetDirectory(pwzPath: PWideChar; cchSize: DWORD): HResult; stdcall;
|
|
function SetDirectory(pwzPath: PWideChar): HResult; stdcall;
|
|
end;
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// IACList interface
|
|
//
|
|
//
|
|
// [Member functions]
|
|
//
|
|
// IObjMgr::Expand(LPCOLESTR)
|
|
// This function tells an autocomplete list to expand a specific string.
|
|
//
|
|
// If the user enters a multi-level path, AutoComplete (CLSID_AutoComplete)
|
|
// will use this interface to tell the "AutoComplete Lists" where to expand
|
|
// the results.
|
|
//
|
|
// For Example, if the user enters "C:\Program Files\Micros", AutoComplete
|
|
// first completely enumerate the "AutoComplete Lists" via IEnumString. Then it
|
|
// will call the "AutoComplete Lists" with IACList::Expand(L"C:\Program Files").
|
|
// It will then enumerate the IEnumString interface again to get results in
|
|
// that directory.
|
|
//-------------------------------------------------------------------------
|
|
|
|
{$EXTERNALSYM IACList}
|
|
IACList = interface(IUnknown)
|
|
['{77A130B0-94FD-11D0-A544-00C04FD7d062}']
|
|
function Expand(pszExpand: POleStr): HResult; stdcall;
|
|
end;
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// IACList2 interface
|
|
//
|
|
// [Description]
|
|
// This interface exists to allow the caller to set filter criteria
|
|
// for an AutoComplete List. AutoComplete Lists generates the list of
|
|
// possible AutoComplete completions. CLSID_ACListISF is one AutoComplete
|
|
// List COM object that implements this interface.
|
|
//-------------------------------------------------------------------------
|
|
|
|
type
|
|
{$EXTERNALSYM _tagAUTOCOMPLETELISTOPTIONS}
|
|
_tagAUTOCOMPLETELISTOPTIONS = DWORD;
|
|
{$EXTERNALSYM AUTOCOMPLETELISTOPTIONS}
|
|
AUTOCOMPLETELISTOPTIONS = _tagAUTOCOMPLETELISTOPTIONS;
|
|
TAutoCompleteListOptions = _tagAUTOCOMPLETELISTOPTIONS;
|
|
|
|
const
|
|
{$EXTERNALSYM ACLO_NONE}
|
|
ACLO_NONE = 0; // don't enumerate anything
|
|
{$EXTERNALSYM ACLO_CURRENTDIR}
|
|
ACLO_CURRENTDIR = 1; // enumerate current directory
|
|
{$EXTERNALSYM ACLO_MYCOMPUTER}
|
|
ACLO_MYCOMPUTER = 2; // enumerate MyComputer
|
|
{$EXTERNALSYM ACLO_DESKTOP}
|
|
ACLO_DESKTOP = 4; // enumerate Desktop Folder
|
|
{$EXTERNALSYM ACLO_FAVORITES}
|
|
ACLO_FAVORITES = 8; // enumerate Favorites Folder
|
|
{$EXTERNALSYM ACLO_FILESYSONLY}
|
|
ACLO_FILESYSONLY = 16; // enumerate only the file system
|
|
{$EXTERNALSYM ACLO_FILESYSDIRS}
|
|
ACLO_FILESYSDIRS = 32; // enumerate only the file system dirs, UNC shares, and UNC servers.
|
|
|
|
type
|
|
{$EXTERNALSYM IACList2}
|
|
IACList2 = interface(IACList)
|
|
['{470141a0-5186-11d2-bbb6-0060977b464c}']
|
|
function SetOptions(dwFlag: DWORD): HResult; stdcall;
|
|
function GetOptions(out pdwFlag: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
(*-------------------------------------------------------------------------*\
|
|
INTERFACE: IProgressDialog
|
|
|
|
DESCRIPTION:
|
|
CLSID_ProgressDialog/IProgressDialog exist to allow a caller to create
|
|
a progress dialog, set it's title, animation, text lines, progress, and
|
|
it will do all the work of updating on a background thread, being modless,
|
|
handling the user cancelling the operation, and estimating the time remaining
|
|
until the operation completes.
|
|
|
|
USAGE:
|
|
This is how the dialog is used during operations that require progress
|
|
and the ability to cancel:
|
|
{
|
|
DWORD dwComplete, dwTotal;
|
|
IProgressDialog * ppd;
|
|
CoCreateInstance(CLSID_ProgressDialog, NULL, CLSCTX_INPROC_SERVER, IID_IProgressDialog, (void ** )&ppd);
|
|
ppd->SetTitle(L"My Slow Operation"); // Set the title of the dialog.
|
|
ppd->SetAnimation(hInstApp, IDA_OPERATION_ANIMATION); // Set the animation to play.
|
|
ppd->StartProgressDialog(hwndParent, punk, PROGDLG_AUTOTIME, NULL); // Display and enable automatic estimated time remaining.
|
|
ppd->SetCancelMsg(L"Please wait while the current operation is cleaned up", NULL); // Will only be displayed if Cancel button is pressed.
|
|
|
|
dwComplete = 0;
|
|
dwTotal = CalcTotalUnitsToDo();
|
|
|
|
// Reset because CalcTotalUnitsToDo() took a long time and the estimated time
|
|
// is based on the time between ::StartProgressDialog() and the first
|
|
// ::SetProgress() call.
|
|
ppd->Timer(PDTIMER_RESET, NULL);
|
|
|
|
for (nIndex = 0; nIndex < nTotal; nIndex++)
|
|
{
|
|
if (TRUE == ppd->HasUserCancelled())
|
|
break;
|
|
|
|
ppd->SetLine(2, L"I'm processing item n", FALSE, NULL);
|
|
dwComplete += DoSlowOperation();
|
|
|
|
ppd->SetProgress(dwCompleted, dwTotal);
|
|
}
|
|
|
|
ppd->StopProgressDialog();
|
|
ppd->Release();
|
|
}
|
|
\*-------------------------------------------------------------------------*)
|
|
|
|
const
|
|
// Flags for IProgressDialog::StartProgressDialog() (dwFlags)
|
|
{$EXTERNALSYM PROGDLG_NORMAL}
|
|
PROGDLG_NORMAL = $00000000; // default normal progress dlg behavior
|
|
{$EXTERNALSYM PROGDLG_MODAL}
|
|
PROGDLG_MODAL = $00000001; // the dialog is modal to its hwndParent (default is modeless)
|
|
{$EXTERNALSYM PROGDLG_AUTOTIME}
|
|
PROGDLG_AUTOTIME = $00000002; // automatically updates the "Line3" text with the "time remaining" (you cant call SetLine3 if you passs this!)
|
|
{$EXTERNALSYM PROGDLG_NOTIME}
|
|
PROGDLG_NOTIME = $00000004; // we dont show the "time remaining" if this is set. We need this if dwTotal < dwCompleted for sparse files
|
|
{$EXTERNALSYM PROGDLG_NOMINIMIZE}
|
|
PROGDLG_NOMINIMIZE = $00000008; // Do not have a minimize button in the caption bar.
|
|
{$EXTERNALSYM PROGDLG_NOPROGRESSBAR}
|
|
PROGDLG_NOPROGRESSBAR = $00000010; // Don't display the progress bar
|
|
|
|
// Time Actions (dwTimerAction)
|
|
{$EXTERNALSYM PDTIMER_RESET}
|
|
PDTIMER_RESET = $00000001; // Reset the timer so the progress will be calculated from now until the first ::SetProgress() is called so
|
|
// those this time will correspond to the values passed to ::SetProgress(). Only do this before ::SetProgress() is called.
|
|
|
|
type
|
|
{$EXTERNALSYM IProgressDialog}
|
|
IProgressDialog = interface(IUnknown)
|
|
['{EBBC7C04-315E-11D2-B62F-006097DF5BD4}']
|
|
function StartProgressDialog(hwndParent: HWND;
|
|
punkEnableModless: IUnknown; dwFlags: DWORD;
|
|
pvResevered: Pointer): HResult; stdcall;
|
|
function StopProgressDialog: HResult; stdcall;
|
|
function SetTitle(pwzTitle: PWideChar): HResult; stdcall;
|
|
function SetAnimation(hInstAnimation: THandle;
|
|
idAnimation: UINT): HResult; stdcall;
|
|
function HasUserCancelled: BOOL; stdcall;
|
|
function SetProgress(dwCompleted: DWORD; dwTotal: DWORD): HResult; stdcall;
|
|
function SetProgress64(ullCompleted, ullTotal: Int64): HResult; stdcall;
|
|
function SetLine(dwLineNum: DWORD; pwzString: PWideChar;
|
|
fCompactPath: BOOL; pvResevered: Pointer): HResult; stdcall;
|
|
function SetCancelMsg(pwzCancelMsg: PWideChar;
|
|
pvResevered:Pointer): HResult; stdcall;
|
|
function Timer(dwTimerAction: DWORD;
|
|
pvResevered: Pointer): HResult; stdcall;
|
|
end;
|
|
|
|
//==========================================================================
|
|
// IInputObjectSite/IInputObject interfaces
|
|
//
|
|
// These interfaces allow us (or ISVs) to install/update external Internet
|
|
// Toolbar for IE and the shell. The frame will simply get the CLSID from
|
|
// registry (to be defined) and CoCreateInstance it.
|
|
//
|
|
//==========================================================================
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// IInputObjectSite interface
|
|
//
|
|
// A site implements this interface so the object can communicate
|
|
// focus change to it.
|
|
//
|
|
// [Member functions]
|
|
//
|
|
// IInputObjectSite::OnFocusChangeIS(punkObj, fSetFocus)
|
|
// Object (punkObj) is getting or losing the focus.
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
|
|
{$EXTERNALSYM IInputObjectSite}
|
|
IInputObjectSite = interface(IUnknown)
|
|
['{F1DB8392-7331-11D0-8C99-00A0C92DBFE8}']
|
|
function OnFocusChangeIS(punkObj: IUnknown; fSetFocus: BOOL): HResult; stdcall;
|
|
end;
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// IInputObject interface
|
|
//
|
|
// An object implements this interface so the site can communicate
|
|
// activation and accelerator events to it.
|
|
//
|
|
// [Member functions]
|
|
//
|
|
// IInputObject::UIActivateIO(fActivate, lpMsg)
|
|
// Activates or deactivates the object. lpMsg may be NULL. Returns
|
|
// S_OK if the activation succeeded.
|
|
//
|
|
// IInputObject::HasFocusIO()
|
|
// Returns S_OK if the object has the focus, S_FALSE if not.
|
|
//
|
|
// IInputObject::TranslateAcceleratorIO(lpMsg)
|
|
// Allow the object to process the message. Returns S_OK if the
|
|
// message was processed (eaten).
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
|
|
{$EXTERNALSYM IInputObject}
|
|
IInputObject = interface(IUnknown)
|
|
['{68284FAA-6A48-11D0-8C78-00C04FD918B4}']
|
|
function UIActivateIO(fActivate: BOOL; var lpMsg: TMsg): HResult; stdcall;
|
|
function HasFocusIO: HResult; stdcall;
|
|
function TranslateAcceleratorIO(var lpMsg: TMsg): HResult; stdcall;
|
|
end;
|
|
|
|
//==========================================================================
|
|
// IDockingWindowSite/IDockingWindow/IDockingWindowFrame interfaces
|
|
// IInputObjectSite/IInputObject interfaces
|
|
//
|
|
// These interfaces allow us (or ISVs) to install/update external Internet
|
|
// Toolbar for IE and the shell. The frame will simply get the CLSID from
|
|
// registry (to be defined) and CoCreateInstance it.
|
|
//
|
|
//==========================================================================
|
|
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// IDockingWindowSite interface
|
|
//
|
|
// A site implements this interface so the object can negotiate for
|
|
// and inquire about real estate on the site.
|
|
//
|
|
// [Member functions]
|
|
//
|
|
// IDockingWindowSite::GetBorderDW(punkObj, prcBorder)
|
|
// Site returns the bounding rectangle of the given source object
|
|
// (punkObj).
|
|
//
|
|
// IDockingWindowSite::RequestBorderSpaceDW(punkObj, pbw)
|
|
// Object requests that the site makes room for it, as specified in
|
|
// *pbw.
|
|
//
|
|
// IDockingWindowSite::SetBorderSpaceDW(punkObj, pbw)
|
|
// Object requests that the site set the border spacing to the size
|
|
// specified in *pbw.
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
|
|
{$EXTERNALSYM IDockingWindowSite}
|
|
IDockingWindowSite = interface(IOleWindow)
|
|
['{2A342FC2-7B26-11D0-8CA9-00A0C92DBFE8}']
|
|
function GetBorderDW(punkObj: IUnknown; var prcBorder: TRect): HResult; stdcall;
|
|
function RequestBorderSpaceDW(punkObj: IUnknown; out pbw: TBorderWidths): HResult; stdcall;
|
|
function SetBorderSpaceDW(punkObj: IUnknown; var pbw: TBorderWidths): HResult; stdcall;
|
|
end;
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// IDockingWindowFrame interface
|
|
//
|
|
// [Member functions]
|
|
//
|
|
// IDockingWindowFrame::AddToolbar(punkSrc, pwszItem, dwReserved)
|
|
//
|
|
// IDockingWindowFrame::RemoveToolbar(punkSrc, dwRemoveFlags)
|
|
//
|
|
// IDockingWindowFrame::FindToolbar(pwszItem, riid, ppv)
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
|
|
// flags for RemoveToolbar
|
|
const
|
|
{$EXTERNALSYM DWFRF_NORMAL}
|
|
DWFRF_NORMAL = $0000;
|
|
{$EXTERNALSYM DWFRF_DELETECONFIGDATA}
|
|
DWFRF_DELETECONFIGDATA = $0001;
|
|
|
|
// flags for AddToolbar
|
|
DWFAF_HIDDEN = $0001; // add hidden
|
|
|
|
type
|
|
{$EXTERNALSYM IDockingWindowFrame}
|
|
IDockingWindowFrame = interface(IOleWindow)
|
|
['{47D2657A-7B27-11D0-8CA9-00A0C92DBFE8}']
|
|
function AddToolbar(punkSrc: IUnknown; pwszItem: PWideChar; dwAddFlags: DWORD): HResult; stdcall;
|
|
function RemoveToolbar(punkSrc: IUnknown; dwRemoveFlags: DWORD): HResult; stdcall;
|
|
function FindToolbar(pwszItem: PWideChar; const riid: TIID; out ppv): HResult; stdcall;
|
|
end;
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// IRunnableTask interface
|
|
//
|
|
// This is a free threaded interface used for putting items on a background
|
|
// scheduler for execution within the view. It allows a scheduler to start and
|
|
// stop tasks on as many worker threads as it deems necessary.
|
|
//
|
|
// Run(), Kill() and Suspend() may be called from different threads.
|
|
//
|
|
// [Member functions]
|
|
//
|
|
// IRunnableTask::Run(void)
|
|
// Initiate the task to run. This should return E_PENDING if the task
|
|
// has been suspended.
|
|
//
|
|
// IRunnableTask::Kill(void)
|
|
//
|
|
// IRunnableTask::Suspend(void)
|
|
//
|
|
// IRunnableTask::Resume(void)
|
|
//
|
|
// IRunnableTask::IsRunning(void)
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
|
|
const
|
|
// Convenient state values
|
|
{$EXTERNALSYM IRTIR_TASK_NOT_RUNNING}
|
|
IRTIR_TASK_NOT_RUNNING = 0;
|
|
{$EXTERNALSYM IRTIR_TASK_RUNNING}
|
|
IRTIR_TASK_RUNNING = 1;
|
|
{$EXTERNALSYM IRTIR_TASK_SUSPENDED}
|
|
IRTIR_TASK_SUSPENDED = 2;
|
|
{$EXTERNALSYM IRTIR_TASK_PENDING}
|
|
IRTIR_TASK_PENDING = 3;
|
|
{$EXTERNALSYM IRTIR_TASK_FINISHED}
|
|
IRTIR_TASK_FINISHED = 4;
|
|
|
|
type
|
|
{$EXTERNALSYM IRunnableTask}
|
|
IRunnableTask = interface(IUnknown )
|
|
['{85788D00-6807-11D0-B810-00C04FD706EC}']
|
|
function Run: HResult; stdcall;
|
|
function Kill(fWait: BOOL): HResult; stdcall;
|
|
function Suspend: HResult; stdcall;
|
|
function Resume: HResult; stdcall;
|
|
function IsRunning: ULONG; stdcall;
|
|
end;
|
|
|
|
type
|
|
{$EXTERNALSYM TASKOWNERID}
|
|
TASKOWNERID = TGUID;
|
|
TTaskOwnerID = TGUID;
|
|
PTaskOwnerID = PGUID;
|
|
|
|
// ---IShellTaskScheduler
|
|
// An interface for interacting with and controlling a task scheduler. This
|
|
// interface does not need to be free-threaded unless the items in the queue
|
|
// interact with the scheduler as well as the main execution thread on which the
|
|
// task scheduler was created.
|
|
|
|
// IShellTaskScheduler::AddTask()
|
|
// Adds Tasks to the scheduler's background queue. The TASKOWNERID allow particular types
|
|
// of tasks to be grouped so that they can be counted or removed. The lParam allows the task
|
|
// to be associated with a particular item (for example an item in a listview).
|
|
// IShellTaskScheduler::RemoveTasks()
|
|
// Removes tasks from the scheduler's queue. These can be sepcified in terms of their TASKOWNERID
|
|
// or their LPARAM, or both, or neither (TOID_NULL && ITSAT_DEFAULT_LPARAM results in all tasks being
|
|
// removed). If a task that matches is currently running and ITaskScheduler::Status() has been
|
|
// passeed ITSSFLAG_KILL_ON_DESTROY then the scheduler will attempt to kill the current task. The
|
|
// fWaitIfRunning parameter is then passed to IRunnableTask::Kill().
|
|
// IShellTaskScheduler::CountTasks()
|
|
// Counts the tasks in the queue depending upon the TASKOWNERID and the LPARAM passed. (TOID_NULL and
|
|
// ITSAT_DEFAULT_LPARAM will count all tasks in the queue)
|
|
// IShellTaskScheduler::Status()
|
|
// This sets the ReleaseStatus for the current task and the background thread timeout. When
|
|
// ITaskScheduler::RemoveTasks() is called and there is a task currently running that matches
|
|
// ITSSFLAG_COMPLETE_ON_DESTROY will cause TRUE to be passed to the task's IRunnableTask::Kill().
|
|
// The dwThreadTimeout parameter if not set to the default will cause the background thread to
|
|
// die if no new tasks have been added to the queue in the timeout period. The Thread will be
|
|
// recreated when the next new task is added.
|
|
|
|
const
|
|
////////////////////////
|
|
// Status() flags,
|
|
// wait for the current task to complete before deleting the scheduler
|
|
{$EXTERNALSYM ITSSFLAG_COMPLETE_ON_DESTROY}
|
|
ITSSFLAG_COMPLETE_ON_DESTROY = $0000;
|
|
|
|
// kill the current task (if there is one) when the task scheduler is deleted
|
|
{$EXTERNALSYM ITSSFLAG_KILL_ON_DESTROY}
|
|
ITSSFLAG_KILL_ON_DESTROY = $0001;
|
|
|
|
{$EXTERNALSYM ITSSFLAG_SUPPORTS_TERMINATE}
|
|
ITSSFLAG_SUPPORTS_TERMINATE = $0002;
|
|
|
|
{$EXTERNALSYM ITSSFLAG_FLAGS_MASK}
|
|
ITSSFLAG_FLAGS_MASK = $0003;
|
|
|
|
// set the timeout for killing the thread when the object is terminated.
|
|
// this timeout can be used to stop the object from blocking the system
|
|
// indefinitely.
|
|
{$EXTERNALSYM ITSSFLAG_THREAD_TERMINATE_TIMEOUT}
|
|
ITSSFLAG_THREAD_TERMINATE_TIMEOUT = $0010;
|
|
|
|
// set the timeout for threads that are idle in the thread pool
|
|
{$EXTERNALSYM ITSSFLAG_THREAD_POOL_TIMEOUT}
|
|
ITSSFLAG_THREAD_POOL_TIMEOUT = $0020;
|
|
|
|
// The default timeout passed to release Status to determine how long the thread
|
|
// can be asleep before the thread is expired
|
|
{$EXTERNALSYM ITSS_THREAD_DESTROY_DEFAULT_TIMEOUT}
|
|
ITSS_THREAD_DESTROY_DEFAULT_TIMEOUT = 60*1000;
|
|
|
|
// default, we won't kill it...
|
|
{$EXTERNALSYM ITSS_THREAD_TERMINATE_TIMEOUT}
|
|
ITSS_THREAD_TERMINATE_TIMEOUT = INFINITE;
|
|
|
|
// there is no change to the thread timeout
|
|
{$EXTERNALSYM ITSS_THREAD_TIMEOUT_NO_CHANGE}
|
|
ITSS_THREAD_TIMEOUT_NO_CHANGE = INFINITE - 1;
|
|
|
|
// the LPARAM allows task to be associated with items thus all tasks owned by a
|
|
// particular item can be accessed by passing a non default value for this parameter
|
|
{$EXTERNALSYM ITSAT_DEFAULT_LPARAM}
|
|
ITSAT_DEFAULT_LPARAM = $FFFFFFFF;
|
|
|
|
// Task priorities
|
|
// ---------------
|
|
// This depends on the cooperation of tasks currently under execution. New tasks will
|
|
// be inserted in the queue in priority order. If a task of a low priority is currently
|
|
// under execution when a higher priority task is added, the scheduler will attempt
|
|
// to suspend the task currently under execution. It will be resumed when the other tasks
|
|
// have been completed.
|
|
|
|
{$EXTERNALSYM TOID_NULL}
|
|
TOID_NULL: TGUID = '{00000000-0000-0000-0000-000000000000}'; // CLSID_NULL
|
|
|
|
type
|
|
{$EXTERNALSYM IShellTaskScheduler}
|
|
IShellTaskScheduler = interface(IUnknown )
|
|
['{6CCB7BE0-6807-11D0-B810-00C04FD706EC}']
|
|
function AddTask(pTask: IRunnableTask; const rtoid: TTaskOwnerID;
|
|
lParam: DWORD; dwPriority: DWORD): HResult; stdcall;
|
|
function RemoveTasks(const rtoid: TTaskOwnerID; lParam: DWORD;
|
|
fWaitIfRunning: BOOL): HResult; stdcall;
|
|
function CountTasks(const rtoid: TTaskOwnerID): UINT; stdcall;
|
|
function Status(dwReleaseStatus: DWORD; dwThreadTimeout: DWORD ): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM ITSSFLAG_TASK_PLACEINFRONT}
|
|
ITSSFLAG_TASK_PLACEINFRONT = $00000001;
|
|
{$EXTERNALSYM ITSSFLAG_TASK_PLACEINBACK}
|
|
ITSSFLAG_TASK_PLACEINBACK = $00000002;
|
|
|
|
type
|
|
{$EXTERNALSYM IShellTaskScheduler2}
|
|
IShellTaskScheduler2 = interface(IShellTaskScheduler)
|
|
// ['{}'] IID is unknown?
|
|
function AddTask2(pTask: IRunnableTask; const rtoid: TTaskOwnerID;
|
|
lParam: DWORD; dwPriority: DWORD; grfFlags: DWORD): HResult; stdcall;
|
|
function MoveTask(rtoid: PTaskOwnerID; lParam: DWORD; dwPriority: DWORD;
|
|
grfFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
(* ***************** IThumbnailCapture
|
|
* CaptureThumbnail : takes an IHTMLDocument2 and returns a thumbnail of specified
|
|
* size as an hbitmap
|
|
*)
|
|
|
|
{$EXTERNALSYM IThumbnailCapture}
|
|
IThumbnailCapture = interface(IUnknown )
|
|
['{4EA39266-7211-409F-B622-F63DBD16C533}']
|
|
// *** IThumbnailCapture methods ***
|
|
function CaptureThumbnail(const pMaxSize: TSize; pHTMLDoc2: IUnknown;
|
|
out phbmThumbnail: HBITMAP ): HResult; stdcall;
|
|
end;
|
|
|
|
PEnumShellImageStoreData = ^TEnumShellImageStoreData;
|
|
{$EXTERNALSYM _EnumImageStoreDATAtag}
|
|
_EnumImageStoreDATAtag = record
|
|
szPath: array[0..MAX_PATH - 1] of WideChar;
|
|
ftTimeStamp: TFileTime;
|
|
end;
|
|
{$EXTERNALSYM ENUMSHELLIMAGESTOREDATA}
|
|
ENUMSHELLIMAGESTOREDATA = _EnumImageStoreDATAtag;
|
|
TEnumShellImageStoreData = _EnumImageStoreDATAtag;
|
|
|
|
{$EXTERNALSYM IEnumShellImageStore}
|
|
IEnumShellImageStore = interface(IUnknown)
|
|
['{6DFD582B-92E3-11D1-98A3-00C04FB687DA}']
|
|
function Reset: HResult; stdcall;
|
|
function Next(celt: ULONG; var prgElt: PEnumShellImageStoreData; out pceltFetched: ULONG ): HResult; stdcall;
|
|
function Skip(celt: ULONG): HResult; stdcall;
|
|
function Clone(out ppEnum: IEnumShellImageStore ): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
// flags used to determine the capabilities of the storage for the images
|
|
{$EXTERNALSYM SHIMSTCAPFLAG_LOCKABLE}
|
|
SHIMSTCAPFLAG_LOCKABLE = $0001; // does the store require/support locking
|
|
{$EXTERNALSYM SHIMSTCAPFLAG_PURGEABLE}
|
|
SHIMSTCAPFLAG_PURGEABLE = $0002; // does the store require dead items purging externally ?
|
|
|
|
type
|
|
// this interface is used to manipulate the Image cache. It can potentially be used
|
|
// in a free threaded manner in conjunction with the Lock parameter to Open and close
|
|
{$EXTERNALSYM IShellImageStore}
|
|
IShellImageStore = interface(IUnknown )
|
|
['{48C8118C-B924-11D1-98D5-00C04FB687DA}']
|
|
|
|
// if the lock parameter is used, then all other calls into
|
|
// open and/or create will block until the lock is released.
|
|
function Open(dwMode: DWORD; out pdwLock: DWORD): HResult; stdcall;
|
|
function Create_(dwMode: DWORD; out pdwLock: DWORD): HResult; stdcall;
|
|
|
|
// if the lock is passed to either of these two methods, it releases the lock
|
|
// once the operation is complete.
|
|
function ReleaseLock(var pdwLock: DWORD): HResult; stdcall;
|
|
function Close(var pdwLock: DWORD ): HResult; stdcall;
|
|
function Commit(var pdwLock: DWORD): HResult; stdcall;
|
|
function IsLocked: HResult; stdcall;
|
|
function GetMode(out pdwMode: DWORD): HResult; stdcall;
|
|
function GetCapabilities(out pdwCapMask: DWORD): HResult; stdcall;
|
|
function AddEntry(pszName: PWideChar; const pftTimeStamp: TFileTime;
|
|
dwMode: DWORD; hImage: HBITMAP ): HResult; stdcall;
|
|
function GetEntry(pszName: PWideChar; dwMode: DWORD;
|
|
out phImage: HBITMAP): HResult; stdcall;
|
|
function DeleteEntry(pszName: PWideChar): HResult; stdcall;
|
|
function IsEntryInStore(pszName: PWideChar;
|
|
var pftTimeStamp: TFileTime): HResult; stdcall;
|
|
function Enum(out ppEnum: IEnumShellImageStore): HResult; stdcall;
|
|
end;
|
|
|
|
//// IShellFolderBand
|
|
|
|
const
|
|
// Field mask
|
|
{$EXTERNALSYM ISFB_MASK_STATE}
|
|
ISFB_MASK_STATE = $00000001; // TRUE if dwStateMask and dwState is valid
|
|
{$EXTERNALSYM ISFB_MASK_BKCOLOR}
|
|
ISFB_MASK_BKCOLOR = $00000002; // TRUE if crBkgnd field is valid
|
|
{$EXTERNALSYM ISFB_MASK_VIEWMODE}
|
|
ISFB_MASK_VIEWMODE = $00000004; // TRUE if wViewMode field is valid
|
|
{$EXTERNALSYM ISFB_MASK_SHELLFOLDER}
|
|
ISFB_MASK_SHELLFOLDER = $00000008;
|
|
{$EXTERNALSYM ISFB_MASK_IDLIST}
|
|
ISFB_MASK_IDLIST = $00000010;
|
|
{$EXTERNALSYM ISFB_MASK_COLORS}
|
|
ISFB_MASK_COLORS = $00000020; // TRUE if crXXXX fields are valid (except bkgnd)
|
|
|
|
{$EXTERNALSYM ISFB_STATE_DEFAULT}
|
|
ISFB_STATE_DEFAULT = $00000000;
|
|
{$EXTERNALSYM ISFB_STATE_DEBOSSED}
|
|
ISFB_STATE_DEBOSSED = $00000001;
|
|
{$EXTERNALSYM ISFB_STATE_ALLOWRENAME}
|
|
ISFB_STATE_ALLOWRENAME = $00000002;
|
|
{$EXTERNALSYM ISFB_STATE_NOSHOWTEXT}
|
|
ISFB_STATE_NOSHOWTEXT = $00000004; // TRUE if _fNoShowText
|
|
{$EXTERNALSYM ISFB_STATE_CHANNELBAR}
|
|
ISFB_STATE_CHANNELBAR = $00000010; // TRUE if we want NavigateTarget support
|
|
{$EXTERNALSYM ISFB_STATE_QLINKSMODE}
|
|
ISFB_STATE_QLINKSMODE = $00000020; // TRUE if we want to turn off drag & drop onto content items
|
|
{$EXTERNALSYM ISFB_STATE_FULLOPEN}
|
|
ISFB_STATE_FULLOPEN = $00000040; // TRUE if band should maximize when opened
|
|
{$EXTERNALSYM ISFB_STATE_NONAMESORT}
|
|
ISFB_STATE_NONAMESORT = $00000080; // TRUE if band should _not_ sort icons by name
|
|
{$EXTERNALSYM ISFB_STATE_BTNMINSIZE}
|
|
ISFB_STATE_BTNMINSIZE = $00000100; // TRUE if band should report min thickness of button
|
|
|
|
{$EXTERNALSYM ISFBVIEWMODE_SMALLICONS}
|
|
ISFBVIEWMODE_SMALLICONS = $0001;
|
|
{$EXTERNALSYM ISFBVIEWMODE_LARGEICONS}
|
|
ISFBVIEWMODE_LARGEICONS = $0002;
|
|
{$EXTERNALSYM ISFBVIEWMODE_LOGOS}
|
|
ISFBVIEWMODE_LOGOS = $0003;
|
|
|
|
type
|
|
PBandInfoSFB = ^TBandInfoSFB;
|
|
{$EXTERNALSYM BANDINFOSFB}
|
|
BANDINFOSFB = record
|
|
dwMask: DWORD; // [in] ISFB_MASK mask of valid fields from crBkgnd on
|
|
dwStateMask: DWORD; // [in] ISFB_STATE mask of dwState bits being set/queried
|
|
dwState: DWORD; // [in/out] ISFB_STATE bits
|
|
crBkgnd: TColorRef; // [in/out]
|
|
crBtnLt: TColorRef; // [in/out]
|
|
crBtnDk: TColorRef; // [in/out]
|
|
wViewMode: Word; // [in/out]
|
|
wAlign: Word; // not used (yet)
|
|
psf: IShellFolder; // [out]
|
|
pidl: PItemIDList; // [out]
|
|
end;
|
|
TBandInfoSFB = BANDINFOSFB;
|
|
|
|
type
|
|
{$EXTERNALSYM IShellFolderBand}
|
|
IShellFolderBand = interface(IUnknown)
|
|
['{7FE80CC8-C247-11D0-B93A-00A0C90312E1}']
|
|
function InitializeSFB(psf: IShellFolder; pidl: PItemIDList): HResult; stdcall;
|
|
function SetBandInfoSFB(const pbi: TBandInfoSFB): HResult; stdcall;
|
|
function GetBandInfoSFB(out pbi: TBandInfoSFB): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
// Command Target IDs
|
|
{$EXTERNALSYM SFBID_PIDLCHANGED}
|
|
SFBID_PIDLCHANGED = 0;
|
|
|
|
//// IDeskBarClient
|
|
type
|
|
{$EXTERNALSYM IDeskBarClient}
|
|
IDeskBarClient = interface(IOleWindow)
|
|
// ['{}'] IID_IDeskBarClient unknown.
|
|
function SetDeskBarSite(punkSite: IUnknown): HResult; stdcall;
|
|
function SetModeDBC(dwMode: DWORD): HResult; stdcall;
|
|
function UIActivateDBC(dwState: DWORD): HResult; stdcall;
|
|
function GetSize(dwWhich: DWORD; out prc: TRect): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM DBC_GS_IDEAL}
|
|
DBC_GS_IDEAL = 0; // get the ideal size
|
|
{$EXTERNALSYM DBC_GS_SIZEDOWN}
|
|
DBC_GS_SIZEDOWN = 1; // clip the height of a rect to a multiple of the rebar's integral size
|
|
|
|
{$EXTERNALSYM DBC_HIDE}
|
|
DBC_HIDE = 0; // Band is hidden (being destroyed)
|
|
{$EXTERNALSYM DBC_SHOW}
|
|
DBC_SHOW = 1; // Band is visible
|
|
{$EXTERNALSYM DBC_SHOWOBSCURE}
|
|
DBC_SHOWOBSCURE = 2; // Band is completely obscured
|
|
|
|
{$EXTERNALSYM DBCID_EMPTY}
|
|
DBCID_EMPTY = 0; // bandsite is empty
|
|
{$EXTERNALSYM DBCID_ONDRAG}
|
|
DBCID_ONDRAG = 1; // (down)DragMoveEnter/Leave vaIn:I4:eDrag
|
|
{$EXTERNALSYM DBCID_CLSIDOFBAR}
|
|
DBCID_CLSIDOFBAR = 2; // clsid of bar inside
|
|
{$EXTERNALSYM DBCID_RESIZE}
|
|
DBCID_RESIZE = 3; // resize from keyboard
|
|
{$EXTERNALSYM DBCID_GETBAR}
|
|
DBCID_GETBAR = 4; // returns vaOut:VT_UNKNOWN of hosting dockbar (IDeskBar)
|
|
|
|
//
|
|
// We need to make sure that WININET.H is included before this interface is
|
|
// used because the COMPONENT structure uses INTERNET_MAX_URL_LENGTH
|
|
//
|
|
|
|
//
|
|
// Flags and structures used by IActiveDesktop
|
|
//
|
|
type
|
|
PWallPaperOpt = ^TWallPaperOpt;
|
|
{$EXTERNALSYM _tagWALLPAPEROPT}
|
|
_tagWALLPAPEROPT = record
|
|
dwSize: DWORD; // size of this Structure.
|
|
dwStyle: DWORD; // WPSTYLE_* mentioned above
|
|
end;
|
|
{$EXTERNALSYM WALLPAPEROPT}
|
|
WALLPAPEROPT = _tagWALLPAPEROPT;
|
|
TWallPaperOpt = _tagWALLPAPEROPT;
|
|
|
|
PComponentsOpt = ^TComponentsOpt;
|
|
{$EXTERNALSYM _tagCOMPONENTSOPT}
|
|
_tagCOMPONENTSOPT = record
|
|
dwSize: DWORD; // Size of this structure
|
|
fEnableComponents: BOOL; // Enable components?
|
|
fActiveDesktop: BOOL; // Active desktop enabled ?
|
|
end;
|
|
{$EXTERNALSYM COMPONENTSOPT}
|
|
COMPONENTSOPT = _tagCOMPONENTSOPT;
|
|
TComponentsOpt = _tagCOMPONENTSOPT;
|
|
|
|
PCompPos = ^TCompPos;
|
|
{$EXTERNALSYM _tagCOMPPOS}
|
|
_tagCOMPPOS = record
|
|
dwSize: DWORD; // Size of this structure
|
|
iLeft: Integer; // Left of top-left corner in screen co-ordinates.
|
|
iTop: Integer; // Top of top-left corner in screen co-ordinates.
|
|
dwWidth: DWORD; // Width in pixels.
|
|
dwHeight: DWORD; // Height in pixels.
|
|
izIndex: Integer; // Indicates the Z-order of the component.
|
|
fCanResize: BOOL; // Is the component resizeable?
|
|
fCanResizeX: BOOL; // Resizeable in X-direction?
|
|
fCanResizeY: BOOL; // Resizeable in Y-direction?
|
|
iPreferredLeftPercent: Integer; // Left of top-left corner as percent of screen width
|
|
iPreferredTopPercent: Integer; // Top of top-left corner as percent of screen height
|
|
end;
|
|
{$EXTERNALSYM COMPPOS}
|
|
COMPPOS = _tagCOMPPOS;
|
|
TCompPos = _tagCOMPPOS;
|
|
|
|
PCompStateInfo = ^TCompStateInfo;
|
|
{$EXTERNALSYM _tagCOMPSTATEINFO}
|
|
_tagCOMPSTATEINFO = record
|
|
dwSize: DWORD; // Size of this structure.
|
|
iLeft: Integer; // Left of the top-left corner in screen co-ordinates.
|
|
iTop: Integer; // Top of top-left corner in screen co-ordinates.
|
|
dwWidth: DWORD; // Width in pixels.
|
|
dwHeight: DWORD; // Height in pixels.
|
|
dwItemState: DWORD; // State of the component (full-screen mode or split-screen or normal state.
|
|
end;
|
|
{$EXTERNALSYM COMPSTATEINFO}
|
|
COMPSTATEINFO = _tagCOMPSTATEINFO;
|
|
TCompStateInfo = _tagCOMPSTATEINFO;
|
|
|
|
const
|
|
{$EXTERNALSYM COMPONENT_TOP}
|
|
COMPONENT_TOP = $3FFFFFFF; // izOrder value meaning component is at the top
|
|
|
|
// iCompType values
|
|
{$EXTERNALSYM COMP_TYPE_HTMLDOC}
|
|
COMP_TYPE_HTMLDOC = 0;
|
|
{$EXTERNALSYM COMP_TYPE_PICTURE}
|
|
COMP_TYPE_PICTURE = 1;
|
|
{$EXTERNALSYM COMP_TYPE_WEBSITE}
|
|
COMP_TYPE_WEBSITE = 2;
|
|
{$EXTERNALSYM COMP_TYPE_CONTROL}
|
|
COMP_TYPE_CONTROL = 3;
|
|
{$EXTERNALSYM COMP_TYPE_CFHTML}
|
|
COMP_TYPE_CFHTML = 4;
|
|
{$EXTERNALSYM COMP_TYPE_MAX}
|
|
COMP_TYPE_MAX = 4;
|
|
|
|
type
|
|
// The following is the COMPONENT structure used in IE4.01, IE4.0 and Memphis. It is kept here for compatibility
|
|
// reasons.
|
|
PIE4Component = ^TIE4Component;
|
|
{$EXTERNALSYM _tagIE4COMPONENT}
|
|
_tagIE4COMPONENT = record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwID: DWORD; // Reserved: Set it always to zero.
|
|
iComponentType: Integer; // One of COMP_TYPE_*
|
|
fChecked: BOOL; // Is this component enabled?
|
|
fDirty: BOOL; // Had the component been modified and not yet saved to disk?
|
|
fNoScroll: BOOL; // Is the component scrollable?
|
|
cpPos: TCompPos; // Width, height etc.,
|
|
wszFriendlyName: array[0..MAX_PATH - 1] of WideChar; // Friendly name of component.
|
|
wszSource: array[0..INTERNET_MAX_URL_LENGTH - 1] of WideChar; // URL of the component.
|
|
wszSubscribedURL: array[0..INTERNET_MAX_URL_LENGTH - 1] of WideChar; // Subscrined URL
|
|
end;
|
|
{$EXTERNALSYM IE4COMPONENT}
|
|
IE4COMPONENT = _tagIE4COMPONENT;
|
|
TIE4Component = _tagIE4COMPONENT;
|
|
|
|
//
|
|
// The following is the new NT5 component structure. Note that the initial portion of this component exactly
|
|
// matches the IE4COMPONENT structure. All new fields are added at the bottom and the dwSize field is used to
|
|
// distinguish between IE4COMPONENT and the new COMPONENT structures.
|
|
//
|
|
PComponent = ^COMPONENT;
|
|
{$EXTERNALSYM _tagCOMPONENT}
|
|
_tagCOMPONENT = record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwID: DWORD; // Reserved: Set it always to zero.
|
|
iComponentType: Integer; // One of COMP_TYPE_*
|
|
fChecked: BOOL; // Is this component enabled?
|
|
fDirty: BOOL; // Had the component been modified and not yet saved to disk?
|
|
fNoScroll: BOOL; // Is the component scrollable?
|
|
cpPos: COMPPOS; // Width, height etc.,
|
|
wszFriendlyName: array[0..MAX_PATH - 1] of WideChar; // Friendly name of component.
|
|
wszSource: array[0..INTERNET_MAX_URL_LENGTH - 1] of WideChar; // URL of the component.
|
|
wszSubscribedURL: array[0..INTERNET_MAX_URL_LENGTH - 1] of WideChar; // Subscrined URL
|
|
|
|
//New fields are added below. Everything above here must exactly match the IE4COMPONENT Structure.
|
|
dwCurItemState: DWORD; // Current state of the Component.
|
|
csiOriginal: TCompStateInfo; // Original state of the component when it was first added.
|
|
csiRestored: TCompStateInfo; // Restored state of the component.
|
|
end;
|
|
{$EXTERNALSYM COMPONENT}
|
|
COMPONENT = _tagCOMPONENT;
|
|
// TComponent declaration omitted, for obvious reasons.
|
|
|
|
const
|
|
// Defines for dwCurItemState
|
|
{$EXTERNALSYM IS_NORMAL}
|
|
IS_NORMAL = $00000001;
|
|
{$EXTERNALSYM IS_FULLSCREEN}
|
|
IS_FULLSCREEN = $00000002;
|
|
{$EXTERNALSYM IS_SPLIT}
|
|
IS_SPLIT = $00000004;
|
|
{$EXTERNALSYM IS_VALIDSIZESTATEBITS}
|
|
IS_VALIDSIZESTATEBITS = IS_NORMAL or IS_SPLIT or IS_FULLSCREEN; // The set of IS_* state bits which define the "size" of the component - these bits are mutually exclusive.
|
|
{$EXTERNALSYM IS_VALIDSTATEBITS}
|
|
IS_VALIDSTATEBITS = IS_NORMAL or IS_SPLIT or IS_FULLSCREEN or $80000000 or $40000000; // All of the currently defined IS_* bits.
|
|
|
|
////////////////////////////////////////////
|
|
// Flags for IActiveDesktop::ApplyChanges()
|
|
{$EXTERNALSYM AD_APPLY_SAVE}
|
|
AD_APPLY_SAVE = $00000001;
|
|
{$EXTERNALSYM AD_APPLY_HTMLGEN}
|
|
AD_APPLY_HTMLGEN = $00000002;
|
|
{$EXTERNALSYM AD_APPLY_REFRESH}
|
|
AD_APPLY_REFRESH = $00000004;
|
|
{$EXTERNALSYM AD_APPLY_ALL}
|
|
AD_APPLY_ALL = AD_APPLY_SAVE or AD_APPLY_HTMLGEN or AD_APPLY_REFRESH;
|
|
{$EXTERNALSYM AD_APPLY_FORCE}
|
|
AD_APPLY_FORCE = $00000008;
|
|
{$EXTERNALSYM AD_APPLY_BUFFERED_REFRESH}
|
|
AD_APPLY_BUFFERED_REFRESH = $00000010;
|
|
{$EXTERNALSYM AD_APPLY_DYNAMICREFRESH}
|
|
AD_APPLY_DYNAMICREFRESH = $00000020;
|
|
|
|
////////////////////////////////////////////
|
|
// Flags for IActiveDesktop::GetWallpaperOptions()
|
|
// IActiveDesktop::SetWallpaperOptions()
|
|
{$EXTERNALSYM WPSTYLE_CENTER}
|
|
WPSTYLE_CENTER = 0;
|
|
{$EXTERNALSYM WPSTYLE_TILE}
|
|
WPSTYLE_TILE = 1;
|
|
{$EXTERNALSYM WPSTYLE_STRETCH}
|
|
WPSTYLE_STRETCH = 2;
|
|
{$EXTERNALSYM WPSTYLE_MAX}
|
|
WPSTYLE_MAX = 3;
|
|
|
|
////////////////////////////////////////////
|
|
// Flags for IActiveDesktop::ModifyComponent()
|
|
|
|
{$EXTERNALSYM COMP_ELEM_TYPE}
|
|
COMP_ELEM_TYPE = $00000001;
|
|
{$EXTERNALSYM COMP_ELEM_CHECKED}
|
|
COMP_ELEM_CHECKED = $00000002;
|
|
{$EXTERNALSYM COMP_ELEM_DIRTY}
|
|
COMP_ELEM_DIRTY = $00000004;
|
|
{$EXTERNALSYM COMP_ELEM_NOSCROLL}
|
|
COMP_ELEM_NOSCROLL = $00000008;
|
|
{$EXTERNALSYM COMP_ELEM_POS_LEFT}
|
|
COMP_ELEM_POS_LEFT = $00000010;
|
|
{$EXTERNALSYM COMP_ELEM_POS_TOP}
|
|
COMP_ELEM_POS_TOP = $00000020;
|
|
{$EXTERNALSYM COMP_ELEM_SIZE_WIDTH}
|
|
COMP_ELEM_SIZE_WIDTH = $00000040;
|
|
{$EXTERNALSYM COMP_ELEM_SIZE_HEIGHT}
|
|
COMP_ELEM_SIZE_HEIGHT = $00000080;
|
|
{$EXTERNALSYM COMP_ELEM_POS_ZINDEX}
|
|
COMP_ELEM_POS_ZINDEX = $00000100;
|
|
{$EXTERNALSYM COMP_ELEM_SOURCE}
|
|
COMP_ELEM_SOURCE = $00000200;
|
|
{$EXTERNALSYM COMP_ELEM_FRIENDLYNAME}
|
|
COMP_ELEM_FRIENDLYNAME = $00000400;
|
|
{$EXTERNALSYM COMP_ELEM_SUBSCRIBEDURL}
|
|
COMP_ELEM_SUBSCRIBEDURL = $00000800;
|
|
{$EXTERNALSYM COMP_ELEM_ORIGINAL_CSI}
|
|
COMP_ELEM_ORIGINAL_CSI = $00001000;
|
|
{$EXTERNALSYM COMP_ELEM_RESTORED_CSI}
|
|
COMP_ELEM_RESTORED_CSI = $00002000;
|
|
{$EXTERNALSYM COMP_ELEM_CURITEMSTATE}
|
|
COMP_ELEM_CURITEMSTATE = $00004000;
|
|
|
|
{$EXTERNALSYM COMP_ELEM_ALL}
|
|
COMP_ELEM_ALL = COMP_ELEM_TYPE or COMP_ELEM_CHECKED or
|
|
COMP_ELEM_DIRTY or COMP_ELEM_NOSCROLL or
|
|
COMP_ELEM_POS_LEFT or COMP_ELEM_SIZE_WIDTH or
|
|
COMP_ELEM_SIZE_HEIGHT or COMP_ELEM_POS_ZINDEX or
|
|
COMP_ELEM_SOURCE or COMP_ELEM_FRIENDLYNAME or
|
|
COMP_ELEM_POS_TOP or COMP_ELEM_SUBSCRIBEDURL or
|
|
COMP_ELEM_ORIGINAL_CSI or COMP_ELEM_RESTORED_CSI or
|
|
COMP_ELEM_CURITEMSTATE;
|
|
|
|
////////////////////////////////////////////
|
|
// Flags for IActiveDesktop::AddDesktopItemWithUI()
|
|
{$EXTERNALSYM DTI_ADDUI_DEFAULT}
|
|
DTI_ADDUI_DEFAULT = $00000000;
|
|
{$EXTERNALSYM DTI_ADDUI_DISPSUBWIZARD}
|
|
DTI_ADDUI_DISPSUBWIZARD = $00000001;
|
|
{$EXTERNALSYM DTI_ADDUI_POSITIONITEM}
|
|
DTI_ADDUI_POSITIONITEM = $00000002;
|
|
|
|
type
|
|
{$EXTERNALSYM tagDTI_ADTIWUI}
|
|
tagDTI_ADTIWUI = DWORD;
|
|
{$EXTERNALSYM DTI_ADTIWUI}
|
|
DTI_ADTIWUI = tagDTI_ADTIWUI;
|
|
|
|
const
|
|
////////////////////////////////////////////
|
|
// Flags for IActiveDesktop::AddUrl()
|
|
{$EXTERNALSYM ADDURL_SILENT}
|
|
ADDURL_SILENT = $0001;
|
|
|
|
////////////////////////////////////////////
|
|
// Default positions for ADI
|
|
{$EXTERNALSYM COMPONENT_DEFAULT_LEFT}
|
|
COMPONENT_DEFAULT_LEFT = $FFFF;
|
|
{$EXTERNALSYM COMPONENT_DEFAULT_TOP}
|
|
COMPONENT_DEFAULT_TOP = $FFFF;
|
|
|
|
//
|
|
// Interface for manipulating the Active Desktop.
|
|
//
|
|
type
|
|
{$EXTERNALSYM IActiveDesktop}
|
|
IActiveDesktop = interface(IUnknown)
|
|
['{F490EB00-1240-11D1-9888-006097DEACF9}']
|
|
function ApplyChanges(dwFlags: DWORD): HResult; stdcall;
|
|
function GetWallpaper(pwszWallpaper: PWideChar; cchWallpaper: UINT;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function SetWallpaper(pwszWallpaper: PWideChar;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function GetWallpaperOptions(out pwpo: TWallPaperOpt;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function SetWallpaperOptions(const pwpo: TWallPaperOpt;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function GetPattern(pwszPattern: PWideChar; cchPattern: UINT;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function SetPattern(pwszPattern: PWideChar;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function GetDesktopItemOptions(out pco: TComponentsOpt;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function SetDesktopItemOptions(const pco: TComponentsOpt;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function AddDesktopItem(var pcomp: COMPONENT;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function AddDesktopItemWithUI(hwnd: HWND; var pcomp: COMPONENT;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function ModifyDesktopItem(var pcomp: COMPONENT;
|
|
dwFlags: DWORD): HResult; stdcall;
|
|
function RemoveDesktopItem(var pcomp: COMPONENT;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function GetDesktopItemCount(out lpiCount: Integer;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function GetDesktopItem(nComponent: Integer; var pcomp: COMPONENT;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function GetDesktopItemByID(dwID: ULONG; var pcomp: COMPONENT;
|
|
dwReserved: DWORD): HResult; stdcall;
|
|
function GenerateDesktopItemHtml(pwszFileName: PWideChar;
|
|
var pcomp: COMPONENT; dwReserved: DWORD): HResult; stdcall;
|
|
function AddUrl(hwnd: HWND; pszSource: PWideChar; var pcomp: COMPONENT;
|
|
dwFlags: DWORD): HResult; stdcall;
|
|
function GetDesktopItemBySource(pwszSource: PWideChar;
|
|
var pcomp: COMPONENT; dwReserved: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
// Flags for SetSafeMode
|
|
{$EXTERNALSYM SSM_CLEAR}
|
|
SSM_CLEAR = $0000;
|
|
{$EXTERNALSYM SSM_SET}
|
|
SSM_SET = $0001;
|
|
{$EXTERNALSYM SSM_REFRESH}
|
|
SSM_REFRESH = $0002;
|
|
{$EXTERNALSYM SSM_UPDATE}
|
|
SSM_UPDATE = $0004;
|
|
|
|
// Flags for Set/GetScheme
|
|
{$EXTERNALSYM SCHEME_DISPLAY}
|
|
SCHEME_DISPLAY = $0001;
|
|
{$EXTERNALSYM SCHEME_EDIT}
|
|
SCHEME_EDIT = $0002;
|
|
{$EXTERNALSYM SCHEME_LOCAL}
|
|
SCHEME_LOCAL = $0004;
|
|
{$EXTERNALSYM SCHEME_GLOBAL}
|
|
SCHEME_GLOBAL = $0008;
|
|
{$EXTERNALSYM SCHEME_REFRESH}
|
|
SCHEME_REFRESH = $0010;
|
|
{$EXTERNALSYM SCHEME_UPDATE}
|
|
SCHEME_UPDATE = $0020;
|
|
{$EXTERNALSYM SCHEME_DONOTUSE}
|
|
SCHEME_DONOTUSE = $0040; // used to be SCHEME_ENUMERATE; no longer supported
|
|
{$EXTERNALSYM SCHEME_CREATE}
|
|
SCHEME_CREATE = $0080;
|
|
|
|
type
|
|
{$EXTERNALSYM IActiveDesktopP}
|
|
IActiveDesktopP = interface(IUnknown )
|
|
['{52502EE0-EC80-11D0-89AB-00C04FC2972D}']
|
|
function SetSafeMode(dwFlags: DWORD): HResult; stdcall;
|
|
function EnsureUpdateHTML: HResult; stdcall;
|
|
function SetScheme(pwszSchemeName: PWideChar;
|
|
dwFlags: DWORD): HResult; stdcall;
|
|
function GetScheme(pwszSchemeName: PWideChar; out lpdwcchBuffer: DWORD;
|
|
dwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
//Flags for GetObjectFlags
|
|
{$EXTERNALSYM GADOF_DIRTY}
|
|
GADOF_DIRTY = $00000001;
|
|
|
|
type
|
|
{$EXTERNALSYM IADesktopP2}
|
|
IADesktopP2 = interface(IUnknown )
|
|
['{B22754E2-4574-11D1-9888-006097DEACF9}']
|
|
function ReReadWallpaper: HResult; stdcall;
|
|
function GetADObjectFlags(out lpdwFlags: DWORD; dwMask: DWORD): HResult; stdcall;
|
|
function UpdateAllDesktopSubscriptions: HResult; stdcall;
|
|
function MakeDynamicChanges(pOleObj: IOleObject): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM MAX_COLUMN_NAME_LEN}
|
|
MAX_COLUMN_NAME_LEN = 80;
|
|
{$EXTERNALSYM MAX_COLUMN_DESC_LEN}
|
|
MAX_COLUMN_DESC_LEN = 128;
|
|
|
|
type
|
|
PSHColumnInfo = ^TSHColumnInfo;
|
|
{$EXTERNALSYM SHCOLUMNINFO}
|
|
SHCOLUMNINFO = packed record
|
|
scid: TSHColumnID; // OUT the unique identifier of this column
|
|
vt: TVARTYPE; // OUT the native type of the data returned
|
|
fmt: DWORD; // OUT this listview format (LVCFMT_LEFT, usually)
|
|
cChars: UINT; // OUT the default width of the column, in characters
|
|
csFlags: DWORD; // OUT SHCOLSTATE flags
|
|
wszTitle: array[0..MAX_COLUMN_NAME_LEN - 1] of WideChar; // OUT the title of the column
|
|
wszDescription: array[0..MAX_COLUMN_DESC_LEN - 1] of WideChar; // OUT full description of this column
|
|
end;
|
|
TSHColumnInfo = SHCOLUMNINFO;
|
|
|
|
PSHColumnInit = ^TSHColumnInit;
|
|
{$EXTERNALSYM SHCOLUMNINIT}
|
|
SHCOLUMNINIT = record
|
|
dwFlags: ULONG; // initialization flags
|
|
dwReserved: ULONG; // reserved for future use.
|
|
wszFolder: array[0..MAX_PATH - 1] of WideChar; // fully qualified folder path (or empty if multiple folders)
|
|
end;
|
|
TSHColumnInit = SHCOLUMNINIT;
|
|
|
|
const
|
|
{$EXTERNALSYM SHCDF_UPDATEITEM}
|
|
SHCDF_UPDATEITEM = $00000001; // this flag is a hint that the file has changed since the last call to GetItemData
|
|
|
|
type
|
|
PSHColumnData = ^TSHColumnData;
|
|
{$EXTERNALSYM SHCOLUMNDATA}
|
|
SHCOLUMNDATA = record
|
|
dwFlags: ULONG; // combination of SHCDF_ flags.
|
|
dwFileAttributes: DWORD; // file attributes.
|
|
dwReserved: ULONG; // reserved for future use.
|
|
pwszExt: PWideChar; // address of file name extension
|
|
wszFile: array[0..MAX_PATH - 1] of WideChar; // Absolute path of file.
|
|
end;
|
|
TSHColumnData = SHCOLUMNDATA;
|
|
|
|
type
|
|
// Note: these objects must be threadsafe! GetItemData _will_ be called
|
|
// simultaneously from multiple threads.
|
|
{$EXTERNALSYM IColumnProvider}
|
|
IColumnProvider = interface(IUnknown)
|
|
['{E8025004-1C42-11D2-BE2C-00A0C9A83DA1}']
|
|
function Initialize(const psci: TSHColumnInit): HResult; stdcall;
|
|
function GetColumnInfo(dwIndex: DWORD;
|
|
out psci: TSHColumnInfo): HResult; stdcall;
|
|
function GetItemData(const pscid: TSHColumnID; const pscd: TSHColumnData;
|
|
out pvarData: OleVariant): HResult; stdcall;
|
|
end;
|
|
|
|
///////////////////////////////////////////////////////
|
|
//
|
|
// Drag and Drop helper
|
|
//
|
|
// Purpose: To expose the Shell drag images
|
|
//
|
|
// This interface is implemented in the shell by CLSID_DragDropHelper.
|
|
//
|
|
// To use:
|
|
// If you are the source of a drag (i.e. in response to LV_DRAGBEGIN or
|
|
// equivelent begin drag message) call
|
|
// IDragSourceHelper::InitializeFromWindow
|
|
// (<hwnd of window supporting DI_GETDRAGIMAGE>,
|
|
// <pointer to TPoint indicating offset to the mouse from
|
|
// the upper left corner of the image>,
|
|
// <pointer to data object>)
|
|
//
|
|
// NOTE: The Data object must support IDataObject::SetData with multiple
|
|
// data types and GetData must implement data type cloning
|
|
// (Including HGLOBAL), not just aliasing.
|
|
//
|
|
// If you wish to have an image while over your application add the
|
|
// IDragImages::Dr* calls to your IDropTarget implementation. For Example:
|
|
//
|
|
// STDMETHODIMP CUserDropTarget::DragEnter(IDataObject* pDataObject,
|
|
// DWORD grfKeyState,
|
|
// TPointL pt, DWORD* pdwEffect)
|
|
// {
|
|
// // Process your DragEnter
|
|
// // Call IDragImages::DragEnter last.
|
|
// _pDropTargetHelper->DragEnter(_hwndDragOver, pDataObject,
|
|
// (TPoint*)&pt, *pdwEffect);
|
|
// return hres;
|
|
// }
|
|
//
|
|
//
|
|
// If you wish to be able to source a drag image from a custom control,
|
|
// implement a handler for the RegisterWindowMessage(DI_GETDRAGIMAGE).
|
|
// The LPARAM is a pointer to an SHDRAGIMAGE structure.
|
|
//
|
|
// sizeDragImage - Calculate the length and width required to render
|
|
// the images.
|
|
// ptOffset - Calculate the offset from the upper left corner to
|
|
// the mouse cursor within the image
|
|
// hbmpDragImage - CreateBitmap(sizeDragImage.cx, sizeDragImage.cy,
|
|
// GetDeviceCaps(hdcScreen, PLANES),
|
|
// GetDeviceCaps(hdcScreen, BITSPIXEL),
|
|
// NULL);
|
|
//
|
|
// Drag Images will only be displayed on Windows NT 5.0 or later.
|
|
//
|
|
//
|
|
// Note about IDropTargetHelper::Show - This method is provided for
|
|
// showing/hiding the Drag image in low color depth video modes. When
|
|
// painting to a window that is currently being dragged over (i.e. For
|
|
// indicating a selection) you need to hide the drag image by calling this
|
|
// method passing FALSE. After the window is done painting, Show the image
|
|
// again by passing TRUE.
|
|
|
|
PSHDragImage = ^TSHDragImage;
|
|
{$EXTERNALSYM SHDRAGIMAGE}
|
|
SHDRAGIMAGE = record
|
|
sizeDragImage: TSize; // OUT - The length and width of the
|
|
// rendered image
|
|
ptOffset: TPoint; // OUT - The offset from the mouse cursor to
|
|
// the upper left corner of the image
|
|
hbmpDragImage: HBITMAP; // OUT - The bitmap containing the rendered
|
|
// drag images
|
|
crColorKey: TColorRef; // OUT - The ColorRef that has been blitted
|
|
// to the background of the images
|
|
end;
|
|
TSHDragImage = SHDRAGIMAGE;
|
|
|
|
const
|
|
// This is sent to a window to get the rendered images to a bitmap
|
|
// Call RegisterWindowMessage to get the ID
|
|
{$EXTERNALSYM DI_GETDRAGIMAGE}
|
|
DI_GETDRAGIMAGE = 'ShellGetDragImage';
|
|
|
|
type
|
|
{$EXTERNALSYM IDropTargetHelper}
|
|
IDropTargetHelper = interface(IUnknown )
|
|
['{4657278b-411b-11d2-839a-00c04fd918d0}']
|
|
function DragEnter(hwndTarget: HWND; pDataObject: IDataObject;
|
|
var ppt: TPoint; dwEffect: DWORD): HResult; stdcall;
|
|
function DragLeave: HResult; stdcall;
|
|
function DragOver(var ppt: TPoint; dwEffect: DWORD): HResult; stdcall;
|
|
function Drop(pDataObject: IDataObject; var ppt: TPoint;
|
|
dwEffect: DWORD): HResult; stdcall;
|
|
function Show(fShow: BOOL): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM IDragSourceHelper}
|
|
IDragSourceHelper = interface(IUnknown )
|
|
['{de5bf786-477a-11d2-839d-00c04fd918d0}']
|
|
function InitializeFromBitmap(var pshdi: TSHDragImage;
|
|
pDataObject: IDataObject): HResult; stdcall;
|
|
function InitializeFromWindow(hwnd: HWND; var ppt: TPoint;
|
|
pDataObject: IDataObject): HResult; stdcall;
|
|
end;
|
|
|
|
//==========================================================================
|
|
// Clipboard format which may be supported by IDataObject from system
|
|
// defined shell folders (such as directories, network, ...).
|
|
//==========================================================================
|
|
const
|
|
{$EXTERNALSYM CFSTR_SHELLIDLIST}
|
|
CFSTR_SHELLIDLIST = 'Shell IDList Array'; // CF_IDLIST
|
|
{$EXTERNALSYM CFSTR_SHELLIDLISTOFFSET}
|
|
CFSTR_SHELLIDLISTOFFSET = 'Shell Object Offsets'; // CF_OBJECTPOSITIONS
|
|
{$EXTERNALSYM CFSTR_NETRESOURCES}
|
|
CFSTR_NETRESOURCES = 'Net Resource'; // CF_NETRESOURCE
|
|
{$EXTERNALSYM CFSTR_FILEDESCRIPTORA}
|
|
CFSTR_FILEDESCRIPTORA = 'FileGroupDescriptor'; // CF_FILEGROUPDESCRIPTORA
|
|
{$EXTERNALSYM CFSTR_FILEDESCRIPTORW}
|
|
CFSTR_FILEDESCRIPTORW = 'FileGroupDescriptorW'; // CF_FILEGROUPDESCRIPTORW
|
|
{$EXTERNALSYM CFSTR_FILECONTENTS}
|
|
CFSTR_FILECONTENTS = 'FileContents'; // CF_FILECONTENTS
|
|
{$EXTERNALSYM CFSTR_FILENAMEA}
|
|
CFSTR_FILENAMEA = 'FileName'; // CF_FILENAMEA
|
|
{$EXTERNALSYM CFSTR_FILENAMEW}
|
|
CFSTR_FILENAMEW = 'FileNameW'; // CF_FILENAMEW
|
|
{$EXTERNALSYM CFSTR_PRINTERGROUP}
|
|
CFSTR_PRINTERGROUP = 'PrinterFriendlyName'; // CF_PRINTERS
|
|
{$EXTERNALSYM CFSTR_FILENAMEMAPA}
|
|
CFSTR_FILENAMEMAPA = 'FileNameMap'; // CF_FILENAMEMAPA
|
|
{$EXTERNALSYM CFSTR_FILENAMEMAPW}
|
|
CFSTR_FILENAMEMAPW = 'FileNameMapW'; // CF_FILENAMEMAPW
|
|
{$EXTERNALSYM CFSTR_SHELLURL}
|
|
CFSTR_SHELLURL = 'UniformResourceLocator';
|
|
{$EXTERNALSYM CFSTR_INETURLA}
|
|
CFSTR_INETURLA = CFSTR_SHELLURL;
|
|
{$EXTERNALSYM CFSTR_INETURLW}
|
|
CFSTR_INETURLW = 'UniformResourceLocatorW';
|
|
{$EXTERNALSYM CFSTR_PREFERREDDROPEFFECT}
|
|
CFSTR_PREFERREDDROPEFFECT = 'Preferred DropEffect';
|
|
{$EXTERNALSYM CFSTR_PERFORMEDDROPEFFECT}
|
|
CFSTR_PERFORMEDDROPEFFECT = 'Performed DropEffect';
|
|
{$EXTERNALSYM CFSTR_PASTESUCCEEDED}
|
|
CFSTR_PASTESUCCEEDED = 'Paste Succeeded';
|
|
{$EXTERNALSYM CFSTR_INDRAGLOOP}
|
|
CFSTR_INDRAGLOOP = 'InShellDragLoop';
|
|
{$EXTERNALSYM CFSTR_DRAGCONTEXT}
|
|
CFSTR_DRAGCONTEXT = 'DragContext';
|
|
{$EXTERNALSYM CFSTR_MOUNTEDVOLUME}
|
|
CFSTR_MOUNTEDVOLUME = 'MountedVolume';
|
|
{$EXTERNALSYM CFSTR_PERSISTEDDATAOBJECT}
|
|
CFSTR_PERSISTEDDATAOBJECT = 'PersistedDataObject';
|
|
{$EXTERNALSYM CFSTR_TARGETCLSID}
|
|
CFSTR_TARGETCLSID = 'TargetCLSID'; // HGLOBAL with a CLSID of the drop target
|
|
{$EXTERNALSYM CFSTR_LOGICALPERFORMEDDROPEFFECT}
|
|
CFSTR_LOGICALPERFORMEDDROPEFFECT = 'Logical Performed DropEffect';
|
|
{$EXTERNALSYM CFSTR_AUTOPLAY_SHELLIDLISTS}
|
|
CFSTR_AUTOPLAY_SHELLIDLISTS = 'Autoplay Enumerated IDList Array'; // (HGLOBAL with LPIDA)
|
|
{$EXTERNALSYM CFSTR_UNTRUSTEDDRAGDROP}
|
|
CFSTR_UNTRUSTEDDRAGDROP = 'UntrustedDragDrop'; // DWORD
|
|
|
|
{$EXTERNALSYM CFSTR_FILEDESCRIPTOR}
|
|
CFSTR_FILEDESCRIPTOR = CFSTR_FILEDESCRIPTORA;
|
|
{$EXTERNALSYM CFSTR_FILENAME}
|
|
CFSTR_FILENAME = CFSTR_FILENAMEA;
|
|
{$EXTERNALSYM CFSTR_FILENAMEMAP}
|
|
CFSTR_FILENAMEMAP = CFSTR_FILENAMEMAPA;
|
|
{$EXTERNALSYM CFSTR_INETURL}
|
|
CFSTR_INETURL = CFSTR_INETURLA;
|
|
|
|
{$EXTERNALSYM DVASPECT_SHORTNAME}
|
|
DVASPECT_SHORTNAME = 2; // use for CF_HDROP to get short name version of file paths
|
|
{$EXTERNALSYM DVASPECT_COPY}
|
|
DVASPECT_COPY = 3; // use to indicate format is a "Copy" of the data (FILECONTENTS, FILEDESCRIPTOR, etc)
|
|
{$EXTERNALSYM DVASPECT_LINK}
|
|
DVASPECT_LINK = 4; // use to indicate format is a "Shortcut" to the data (FILECONTENTS, FILEDESCRIPTOR, etc)
|
|
|
|
type
|
|
//
|
|
// format of CF_NETRESOURCE
|
|
//
|
|
PNResArray = ^TNResArray;
|
|
{$EXTERNALSYM _NRESARRAY}
|
|
_NRESARRAY = record // anr
|
|
cItems: UINT;
|
|
nr: array[0..0] of TNetResource;
|
|
end;
|
|
{$EXTERNALSYM NRESARRAY}
|
|
NRESARRAY = _NRESARRAY;
|
|
TNResArray = _NRESARRAY;
|
|
|
|
//
|
|
// format of CF_IDLIST
|
|
//
|
|
PCIDA = ^TCIDA;
|
|
{$EXTERNALSYM _IDA}
|
|
_IDA = record
|
|
cidl: UINT; // number of relative IDList
|
|
aoffset: array[0..0] of UINT; // [0]: folder IDList, [1]-[cidl]: item IDList
|
|
end;
|
|
{$EXTERNALSYM CIDA}
|
|
CIDA = _IDA;
|
|
TCIDA = _IDA;
|
|
|
|
//
|
|
// FILEDESCRIPTOR.dwFlags field indicate which fields are to be used
|
|
//
|
|
{$EXTERNALSYM FD_FLAGS}
|
|
FD_FLAGS = DWORD;
|
|
TFDFlags = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM FD_CLSID}
|
|
FD_CLSID = $0001;
|
|
{$EXTERNALSYM FD_SIZEPOINT}
|
|
FD_SIZEPOINT = $0002;
|
|
{$EXTERNALSYM FD_ATTRIBUTES}
|
|
FD_ATTRIBUTES = $0004;
|
|
{$EXTERNALSYM FD_CREATETIME}
|
|
FD_CREATETIME = $0008;
|
|
{$EXTERNALSYM FD_ACCESSTIME}
|
|
FD_ACCESSTIME = $0010;
|
|
{$EXTERNALSYM FD_WRITESTIME}
|
|
FD_WRITESTIME = $0020;
|
|
{$EXTERNALSYM FD_FILESIZE}
|
|
FD_FILESIZE = $0040;
|
|
{$EXTERNALSYM FD_PROGRESSUI}
|
|
FD_PROGRESSUI = $4000; // Show Progress UI w/Drag and Drop
|
|
{$EXTERNALSYM FD_LINKUI}
|
|
FD_LINKUI = $8000; // 'link' UI is prefered
|
|
|
|
type
|
|
PFileDescriptorA = ^TFileDescriptorA;
|
|
{$EXTERNALSYM _FILEDESCRIPTORA}
|
|
_FILEDESCRIPTORA = record // fod
|
|
dwFlags: DWORD;
|
|
clsid: TCLSID;
|
|
sizel: TSize;
|
|
pointl: TPointL;
|
|
dwFileAttributes: DWORD;
|
|
ftCreationTime: TFileTime;
|
|
ftLastAccessTime: TFileTime;
|
|
ftLastWriteTime: TFileTime;
|
|
nFileSizeHigh: DWORD;
|
|
nFileSizeLow: DWORD;
|
|
cFileName: array[0..MAX_PATH - 1] of AnsiChar;
|
|
end;
|
|
{$EXTERNALSYM FILEDESCRIPTORA}
|
|
FILEDESCRIPTORA = _FILEDESCRIPTORA;
|
|
TFileDescriptorA = _FILEDESCRIPTORA;
|
|
|
|
PFileDescriptorW = ^TFileDescriptorW;
|
|
{$EXTERNALSYM _FILEDESCRIPTORW}
|
|
_FILEDESCRIPTORW = record // fod
|
|
dwFlags: DWORD;
|
|
clsid: TCLSID;
|
|
sizel: TSize;
|
|
pointl: TPointL;
|
|
dwFileAttributes: DWORD;
|
|
ftCreationTime: TFileTime;
|
|
ftLastAccessTime: TFileTime;
|
|
ftLastWriteTime: TFileTime;
|
|
nFileSizeHigh: DWORD;
|
|
nFileSizeLow: DWORD;
|
|
cFileName: array[0..MAX_PATH - 1] of WideChar;
|
|
end;
|
|
{$EXTERNALSYM FILEDESCRIPTORW}
|
|
FILEDESCRIPTORW = _FILEDESCRIPTORW;
|
|
TFileDescriptorW = _FILEDESCRIPTORW;
|
|
|
|
PFileDescriptor = PFileDescriptorA;
|
|
{$EXTERNALSYM FILEDESCRIPTOR}
|
|
FILEDESCRIPTOR = FILEDESCRIPTORA;
|
|
TFileDescriptor = TFileDescriptorA;
|
|
|
|
//
|
|
// format of CF_FILEGROUPDESCRIPTOR
|
|
//
|
|
PFileGroupDescriptorA = ^TFileGroupDescriptorA;
|
|
{$EXTERNALSYM _FILEGROUPDESCRIPTORA}
|
|
_FILEGROUPDESCRIPTORA = record // fgd
|
|
cItems: UINT;
|
|
fgd: array[0..0] of TFileDescriptorA;
|
|
end;
|
|
{$EXTERNALSYM FILEGROUPDESCRIPTORA}
|
|
FILEGROUPDESCRIPTORA = _FILEGROUPDESCRIPTORA;
|
|
TFileGroupDescriptorA = _FILEGROUPDESCRIPTORA;
|
|
|
|
PFileGroupDescriptorW = ^TFileGroupDescriptorW;
|
|
{$EXTERNALSYM _FILEGROUPDESCRIPTORW}
|
|
_FILEGROUPDESCRIPTORW = record // fgd
|
|
cItems: UINT;
|
|
fgd: array[0..0] of TFileDescriptorW;
|
|
end;
|
|
{$EXTERNALSYM FILEGROUPDESCRIPTORA}
|
|
FILEGROUPDESCRIPTORW = _FILEGROUPDESCRIPTORW;
|
|
TFileGroupDescriptorW = _FILEGROUPDESCRIPTORW;
|
|
|
|
PFileGroupDescriptor = PFileGroupDescriptorA;
|
|
{$EXTERNALSYM FILEGROUPDESCRIPTOR}
|
|
FILEGROUPDESCRIPTOR = FILEGROUPDESCRIPTORA;
|
|
TFileGroupDescriptor = TFileGroupDescriptorA;
|
|
|
|
//
|
|
// format of CF_HDROP and CF_PRINTERS, in the HDROP case the data that follows
|
|
// is a double null terminated list of file names, for printers they are printer
|
|
// friendly names
|
|
//
|
|
PDropFiles = ^TDropFiles;
|
|
{$EXTERNALSYM _DROPFILES}
|
|
_DROPFILES = record
|
|
pFiles: DWORD; // offset of file list
|
|
pt: TPoint; // drop TPoint (client coords)
|
|
fNC: BOOL; // is it on NonClient area
|
|
// and pt is in screen coords
|
|
fWide: BOOL; // WIDE character switch
|
|
end;
|
|
{$EXTERNALSYM DROPFILES}
|
|
DROPFILES = _DROPFILES;
|
|
TDropFiles = _DROPFILES;
|
|
|
|
|
|
//====== File System Notification APIs ===============================
|
|
//
|
|
PSHChangeNotifyEntry = ^TSHChangeNotifyEntry;
|
|
{$EXTERNALSYM _SHChangeNotifyEntry}
|
|
_SHChangeNotifyEntry = record
|
|
pidl: PItemIDList;
|
|
fRecursive: BOOL;
|
|
end;
|
|
{$EXTERNALSYM SHChangeNotifyEntry}
|
|
SHChangeNotifyEntry = _SHChangeNotifyEntry;
|
|
TSHChangeNotifyEntry = _SHChangeNotifyEntry;
|
|
|
|
//
|
|
// File System Notification flags
|
|
//
|
|
const
|
|
{$EXTERNALSYM SHCNE_RENAMEITEM}
|
|
SHCNE_RENAMEITEM = $00000001;
|
|
{$EXTERNALSYM SHCNE_CREATE}
|
|
SHCNE_CREATE = $00000002;
|
|
{$EXTERNALSYM SHCNE_DELETE}
|
|
SHCNE_DELETE = $00000004;
|
|
{$EXTERNALSYM SHCNE_MKDIR}
|
|
SHCNE_MKDIR = $00000008;
|
|
{$EXTERNALSYM SHCNE_RMDIR}
|
|
SHCNE_RMDIR = $00000010;
|
|
{$EXTERNALSYM SHCNE_MEDIAINSERTED}
|
|
SHCNE_MEDIAINSERTED = $00000020;
|
|
{$EXTERNALSYM SHCNE_MEDIAREMOVED}
|
|
SHCNE_MEDIAREMOVED = $00000040;
|
|
{$EXTERNALSYM SHCNE_DRIVEREMOVED}
|
|
SHCNE_DRIVEREMOVED = $00000080;
|
|
{$EXTERNALSYM SHCNE_DRIVEADD}
|
|
SHCNE_DRIVEADD = $00000100;
|
|
{$EXTERNALSYM SHCNE_NETSHARE}
|
|
SHCNE_NETSHARE = $00000200;
|
|
{$EXTERNALSYM SHCNE_NETUNSHARE}
|
|
SHCNE_NETUNSHARE = $00000400;
|
|
{$EXTERNALSYM SHCNE_ATTRIBUTES}
|
|
SHCNE_ATTRIBUTES = $00000800;
|
|
{$EXTERNALSYM SHCNE_UPDATEDIR}
|
|
SHCNE_UPDATEDIR = $00001000;
|
|
{$EXTERNALSYM SHCNE_UPDATEITEM}
|
|
SHCNE_UPDATEITEM = $00002000;
|
|
{$EXTERNALSYM SHCNE_SERVERDISCONNECT}
|
|
SHCNE_SERVERDISCONNECT = $00004000;
|
|
{$EXTERNALSYM SHCNE_UPDATEIMAGE}
|
|
SHCNE_UPDATEIMAGE = $00008000;
|
|
{$EXTERNALSYM SHCNE_DRIVEADDGUI}
|
|
SHCNE_DRIVEADDGUI = $00010000;
|
|
{$EXTERNALSYM SHCNE_RENAMEFOLDER}
|
|
SHCNE_RENAMEFOLDER = $00020000;
|
|
{$EXTERNALSYM SHCNE_FREESPACE}
|
|
SHCNE_FREESPACE = $00040000;
|
|
|
|
// SHCNE_EXTENDED_EVENT: the extended event is identified in dwItem1,
|
|
// packed in PItemIDList format (same as SHCNF_DWORD packing).
|
|
// Additional information can be passed in the dwItem2 parameter
|
|
// of SHChangeNotify (called "pidl2" below), which if present, must also
|
|
// be in PItemIDList format.
|
|
//
|
|
// Unlike the standard events, the extended events are ORDINALs, so we
|
|
// don't run out of bits. Extended events follow the SHCNEE_* naming
|
|
// convention.
|
|
//
|
|
// The dwItem2 parameter varies according to the extended event.
|
|
|
|
{$EXTERNALSYM SHCNE_EXTENDED_EVENT}
|
|
SHCNE_EXTENDED_EVENT = $04000000;
|
|
|
|
{$EXTERNALSYM SHCNE_ASSOCCHANGED}
|
|
SHCNE_ASSOCCHANGED = $08000000;
|
|
|
|
{$EXTERNALSYM SHCNE_DISKEVENTS}
|
|
SHCNE_DISKEVENTS = $0002381F;
|
|
{$EXTERNALSYM SHCNE_GLOBALEVENTS}
|
|
SHCNE_GLOBALEVENTS = $0C0581E0; // Events that dont match pidls first
|
|
{$EXTERNALSYM SHCNE_ALLEVENTS}
|
|
SHCNE_ALLEVENTS = $7FFFFFFF;
|
|
{$EXTERNALSYM SHCNE_INTERRUPT}
|
|
SHCNE_INTERRUPT = $80000000; // The presence of this flag indicates
|
|
// that the event was generated by an
|
|
// interrupt. It is stripped out before
|
|
// the clients of SHCNNotify_ see it.
|
|
|
|
// SHCNE_EXTENDED_EVENT extended events. These events are ordinals.
|
|
// This is not a bitfield.
|
|
{$EXTERNALSYM SHCNEE_ORDERCHANGED}
|
|
SHCNEE_ORDERCHANGED = 2; // pidl2 is the changed folder
|
|
{$EXTERNALSYM SHCNEE_MSI_CHANGE}
|
|
SHCNEE_MSI_CHANGE = 4; // pidl2 is a SHChangeProductKeyAsIDList
|
|
{$EXTERNALSYM SHCNEE_MSI_UNINSTALL}
|
|
SHCNEE_MSI_UNINSTALL = 5; // pidl2 is a SHChangeProductKeyAsIDList
|
|
|
|
// Flags
|
|
// uFlags & SHCNF_TYPE is an ID which indicates what dwItem1 and dwItem2 mean
|
|
{$EXTERNALSYM SHCNF_IDLIST}
|
|
SHCNF_IDLIST = $0000; // PItemIDList
|
|
{$EXTERNALSYM SHCNF_PATHA}
|
|
SHCNF_PATHA = $0001; // path name
|
|
{$EXTERNALSYM SHCNF_PRINTERA}
|
|
SHCNF_PRINTERA = $0002; // printer friendly name
|
|
{$EXTERNALSYM SHCNF_DWORD}
|
|
SHCNF_DWORD = $0003; // DWORD
|
|
{$EXTERNALSYM SHCNF_PATHW}
|
|
SHCNF_PATHW = $0005; // path name
|
|
{$EXTERNALSYM SHCNF_PRINTERW}
|
|
SHCNF_PRINTERW = $0006; // printer friendly name
|
|
{$EXTERNALSYM SHCNF_TYPE}
|
|
SHCNF_TYPE = $00FF;
|
|
{$EXTERNALSYM SHCNF_FLUSH}
|
|
SHCNF_FLUSH = $1000;
|
|
{$EXTERNALSYM SHCNF_FLUSHNOWAIT}
|
|
SHCNF_FLUSHNOWAIT = $2000;
|
|
|
|
{$EXTERNALSYM SHCNF_PATH}
|
|
SHCNF_PATH = SHCNF_PATHA;
|
|
{$EXTERNALSYM SHCNF_PRINTER}
|
|
SHCNF_PRINTER = SHCNF_PRINTERA;
|
|
|
|
//
|
|
// APIs
|
|
//
|
|
{$EXTERNALSYM SHChangeNotify}
|
|
procedure SHChangeNotify(wEventId: Longint; uFlags: UINT; dwItem1, dwItem2: Pointer); stdcall;
|
|
|
|
//
|
|
// IShellChangeNotify
|
|
//
|
|
type
|
|
{$EXTERNALSYM IShellChangeNotify}
|
|
IShellChangeNotify = interface(IUnknown)
|
|
['{D82BE2B1-5764-11D0-A96E-00C04FD705A2}']
|
|
function OnChange(lEvent: Longint; pidl1, pidl2: PItemIDList): HResult; stdcall;
|
|
end;
|
|
|
|
//
|
|
// IQueryInfo
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// IQueryInfo interface
|
|
//
|
|
// [Methods]
|
|
// ::GetInfoTip()
|
|
//-------------------------------------------------------------------------
|
|
|
|
{$EXTERNALSYM IQueryInfo}
|
|
IQueryInfo = interface(IUnknown)
|
|
['{00021500-0000-0000-C000-000000000046}']
|
|
function GetInfoTip(dwFlags: DWORD; ppwszTip: PPWideChar): HResult; stdcall;
|
|
function GetInfoFlags(out pdwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM QITIPF_DEFAULT}
|
|
QITIPF_DEFAULT = $00000000;
|
|
{$EXTERNALSYM QITIPF_USENAME}
|
|
QITIPF_USENAME = $00000001;
|
|
{$EXTERNALSYM QITIPF_LINKNOTARGET}
|
|
QITIPF_LINKNOTARGET = $00000002;
|
|
{$EXTERNALSYM QITIPF_LINKUSETARGET}
|
|
QITIPF_LINKUSETARGET = $00000004;
|
|
{$EXTERNALSYM QITIPF_USESLOWTIP}
|
|
QITIPF_USESLOWTIP = $00000008; // Flag says it's OK to take a long time generating tip
|
|
|
|
{$EXTERNALSYM QIF_CACHED}
|
|
QIF_CACHED = $00000001;
|
|
{$EXTERNALSYM QIF_DONTEXPANDFOLDER}
|
|
QIF_DONTEXPANDFOLDER = $00000002;
|
|
|
|
|
|
//
|
|
// SHAddToRecentDocs
|
|
//
|
|
{$EXTERNALSYM SHARD_PIDL}
|
|
SHARD_PIDL = $00000001;
|
|
{$EXTERNALSYM SHARD_PATHA}
|
|
SHARD_PATHA = $00000002;
|
|
{$EXTERNALSYM SHARD_PATHW}
|
|
SHARD_PATHW = $00000003;
|
|
|
|
{$EXTERNALSYM SHARD_PATH}
|
|
SHARD_PATH = SHARD_PATHA;
|
|
|
|
{$EXTERNALSYM SHAddToRecentDocs}
|
|
procedure SHAddToRecentDocs(uFlags: UINT; pv: Pointer); stdcall;
|
|
|
|
type
|
|
PSHChangeDWORDAsIDList = ^TSHChangeDWORDAsIDList;
|
|
{$EXTERNALSYM _SHChangeDWORDAsIDList}
|
|
_SHChangeDWORDAsIDList = record
|
|
cb: Word;
|
|
dwItem1: DWORD;
|
|
dwItem2: DWORD;
|
|
cbZero: Word;
|
|
end;
|
|
{$EXTERNALSYM SHChangeDWORDAsIDList}
|
|
SHChangeDWORDAsIDList = _SHChangeDWORDAsIDList;
|
|
TSHChangeDWORDAsIDList = _SHChangeDWORDAsIDList;
|
|
|
|
PSHChangeUpdateImageIDList = ^TSHChangeUpdateImageIDList;
|
|
{$EXTERNALSYM _SHChangeUpdateImageIDList}
|
|
_SHChangeUpdateImageIDList = record
|
|
cb: Word;
|
|
iIconIndex: Integer;
|
|
iCurIndex: Integer;
|
|
uFlags: UINT;
|
|
dwProcessID: DWORD;
|
|
szName: array[0..MAX_PATH - 1] of WideChar;
|
|
cbZero: Word;
|
|
end;
|
|
{$EXTERNALSYM SHChangeUpdateImageIDList}
|
|
SHChangeUpdateImageIDList = _SHChangeUpdateImageIDList;
|
|
TSHChangeUpdateImageIDList = _SHChangeUpdateImageIDList;
|
|
|
|
{$EXTERNALSYM SHHandleUpdateImage}
|
|
function SHHandleUpdateImage(pidlExtra: PItemIDList): Integer; stdcall;
|
|
|
|
type
|
|
PSHChangeProductKeyAsIDList = ^TSHChangeProductKeyAsIDList;
|
|
{$EXTERNALSYM _SHChangeProductKeyAsIDList}
|
|
_SHChangeProductKeyAsIDList = record
|
|
cb: Word;
|
|
wszProductKey: array[0..38] of WideChar;
|
|
cbZero: Word;
|
|
end;
|
|
{$EXTERNALSYM SHChangeProductKeyAsIDList}
|
|
SHChangeProductKeyAsIDList = _SHChangeProductKeyAsIDList;
|
|
TSHChangeProductKeyAsIDList = _SHChangeProductKeyAsIDList;
|
|
|
|
{$EXTERNALSYM SHUpdateImageA}
|
|
procedure SHUpdateImageA(pszHashItem: PAnsiChar; iIndex: Integer;
|
|
uFlags: UINT; iImageIndex: Integer); stdcall;
|
|
{$EXTERNALSYM SHUpdateImageW}
|
|
procedure SHUpdateImageW(pszHashItem: PWideChar; iIndex: Integer;
|
|
uFlags: UINT; iImageIndex: Integer); stdcall;
|
|
{$EXTERNALSYM SHUpdateImage}
|
|
procedure SHUpdateImage(pszHashItem: PTSTR; iIndex: Integer; uFlags: UINT;
|
|
iImageIndex: Integer); stdcall;
|
|
|
|
{$EXTERNALSYM SHChangeNotifyRegister}
|
|
function SHChangeNotifyRegister(hwnd: HWND; fSources: Integer;
|
|
fEvents: Longint; wMsg: UINT; cEntries: Integer;
|
|
var pshcne: TSHChangeNotifyEntry): ULONG; stdcall;
|
|
{$EXTERNALSYM SHChangeNotifyDeregister}
|
|
function SHChangeNotifyDeregister(ulID: LongWord): BOOL; stdcall;
|
|
{$EXTERNALSYM SHChangeNotification_Lock}
|
|
function SHChangeNotification_Lock(hChangeNotification: THandle;
|
|
dwProcessId: DWORD; var pppidl: PPItemIDListArray;
|
|
var plEvent: Longint): THandle; stdcall;
|
|
{$EXTERNALSYM SHChangeNotification_Unlock}
|
|
function SHChangeNotification_Unlock(hLock: THandle): BOOL; stdcall;
|
|
// The pidls that are given to the view via the ChangeNotifyEvents are simple Pidls,
|
|
// SHGetRealIDL() will convert them to true PIDLs.
|
|
{$EXTERNALSYM SHGetRealIDL}
|
|
function SHGetRealIDL(psf: IShellFolder; pidlSimple: PItemIDList; out ppidlReal: PItemIDList): HResult; stdcall;
|
|
|
|
{$EXTERNALSYM SHGetInstanceExplorer}
|
|
function SHGetInstanceExplorer(out ppunk: IUnknown): HResult; stdcall;
|
|
|
|
const
|
|
//
|
|
// SHGetDataFromIDListA/W
|
|
//
|
|
// SHGetDataFromIDList nFormat values TCHAR
|
|
{$EXTERNALSYM SHGDFIL_FINDDATA}
|
|
SHGDFIL_FINDDATA = 1;
|
|
{$EXTERNALSYM SHGDFIL_NETRESOURCE}
|
|
SHGDFIL_NETRESOURCE = 2;
|
|
{$EXTERNALSYM SHGDFIL_DESCRIPTIONID}
|
|
SHGDFIL_DESCRIPTIONID = 3;
|
|
|
|
{$EXTERNALSYM SHDID_ROOT_REGITEM}
|
|
SHDID_ROOT_REGITEM = 1;
|
|
{$EXTERNALSYM SHDID_FS_FILE}
|
|
SHDID_FS_FILE = 2;
|
|
{$EXTERNALSYM SHDID_FS_DIRECTORY}
|
|
SHDID_FS_DIRECTORY = 3;
|
|
{$EXTERNALSYM SHDID_FS_OTHER}
|
|
SHDID_FS_OTHER = 4;
|
|
{$EXTERNALSYM SHDID_COMPUTER_DRIVE35}
|
|
SHDID_COMPUTER_DRIVE35 = 5;
|
|
{$EXTERNALSYM SHDID_COMPUTER_DRIVE525}
|
|
SHDID_COMPUTER_DRIVE525 = 6;
|
|
{$EXTERNALSYM SHDID_COMPUTER_REMOVABLE}
|
|
SHDID_COMPUTER_REMOVABLE = 7;
|
|
{$EXTERNALSYM SHDID_COMPUTER_FIXED}
|
|
SHDID_COMPUTER_FIXED = 8;
|
|
{$EXTERNALSYM SHDID_COMPUTER_NETDRIVE}
|
|
SHDID_COMPUTER_NETDRIVE = 9;
|
|
{$EXTERNALSYM SHDID_COMPUTER_CDROM}
|
|
SHDID_COMPUTER_CDROM = 10;
|
|
{$EXTERNALSYM SHDID_COMPUTER_RAMDISK}
|
|
SHDID_COMPUTER_RAMDISK = 11;
|
|
{$EXTERNALSYM SHDID_COMPUTER_OTHER}
|
|
SHDID_COMPUTER_OTHER = 12;
|
|
{$EXTERNALSYM SHDID_NET_DOMAIN}
|
|
SHDID_NET_DOMAIN = 13;
|
|
{$EXTERNALSYM SHDID_NET_SERVER}
|
|
SHDID_NET_SERVER = 14;
|
|
{$EXTERNALSYM SHDID_NET_SHARE}
|
|
SHDID_NET_SHARE = 15;
|
|
{$EXTERNALSYM SHDID_NET_RESTOFNET}
|
|
SHDID_NET_RESTOFNET = 16;
|
|
{$EXTERNALSYM SHDID_NET_OTHER}
|
|
SHDID_NET_OTHER = 17;
|
|
{$EXTERNALSYM SHDID_COMPUTER_IMAGING}
|
|
SHDID_COMPUTER_IMAGING = 18;
|
|
{$EXTERNALSYM SHDID_COMPUTER_AUDIO}
|
|
SHDID_COMPUTER_AUDIO = 19;
|
|
{$EXTERNALSYM SHDID_COMPUTER_SHAREDDOCS}
|
|
SHDID_COMPUTER_SHAREDDOCS = 20;
|
|
|
|
type
|
|
PSHDescriptionID = ^TSHDescriptionID;
|
|
{$EXTERNALSYM _SHDESCRIPTIONID}
|
|
_SHDESCRIPTIONID = record
|
|
dwDescriptionId: DWORD;
|
|
clsid: TCLSID;
|
|
end;
|
|
{$EXTERNALSYM SHDESCRIPTIONID}
|
|
SHDESCRIPTIONID = _SHDESCRIPTIONID;
|
|
TSHDescriptionID = _SHDESCRIPTIONID;
|
|
|
|
// these delegate to IShellFolder2::GetItemData()
|
|
|
|
{$EXTERNALSYM SHGetDataFromIDListA}
|
|
function SHGetDataFromIDListA(psf: IShellFolder; pidl: PItemIDList;
|
|
nFormat: Integer; pv: Pointer; cb: Integer): HResult; stdcall;
|
|
{$EXTERNALSYM SHGetDataFromIDListW}
|
|
function SHGetDataFromIDListW(psf: IShellFolder; pidl: PItemIDList;
|
|
nFormat: Integer; pv: Pointer; cb: Integer): HResult; stdcall;
|
|
{$EXTERNALSYM SHGetDataFromIDList}
|
|
function SHGetDataFromIDList(psf: IShellFolder; pidl: PItemIDList;
|
|
nFormat: Integer; pv: Pointer; cb: Integer): HResult; stdcall;
|
|
|
|
//===========================================================================
|
|
|
|
const
|
|
// PathResolve flags
|
|
{$EXTERNALSYM PRF_VERIFYEXISTS}
|
|
PRF_VERIFYEXISTS = $0001;
|
|
{$EXTERNALSYM PRF_TRYPROGRAMEXTENSIONS}
|
|
PRF_TRYPROGRAMEXTENSIONS = $0002 or PRF_VERIFYEXISTS;
|
|
{$EXTERNALSYM PRF_FIRSTDIRDEF}
|
|
PRF_FIRSTDIRDEF = $0004;
|
|
{$EXTERNALSYM PRF_DONTFINDLNK}
|
|
PRF_DONTFINDLNK = $0008; // if PRF_TRYPROGRAMEXTENSIONS is specified
|
|
|
|
{$EXTERNALSYM RestartDialog}
|
|
function RestartDialog(hwnd: HWND; lpPrompt: PWideChar;
|
|
dwReturn: DWORD): Integer; stdcall;
|
|
{$EXTERNALSYM RestartDialogEx}
|
|
function RestartDialogEx(hwnd: HWND; lpPrompt: PWideChar;
|
|
dwReturn, dwReasonCode: DWORD): Integer; stdcall;
|
|
|
|
{$EXTERNALSYM SHCoCreateInstance}
|
|
function SHCoCreateInstance(pszCLSID: PWideChar; const pclsid: TCLSID; pUnkOuter: IUnknown; const iid: TIID; out ppv): HResult; stdcall;
|
|
|
|
// For CallCPLEntry16
|
|
//
|
|
type
|
|
{$EXTERNALSYM FARPROC16}
|
|
FARPROC16 = THandle;
|
|
TFarProc16 = FARPROC16;
|
|
|
|
TFormatEtcArray = array[0..65535] of TFormatEtc;
|
|
PFormatEtcArray = ^TFormatEtcArray;
|
|
|
|
{$EXTERNALSYM CallCPLEntry16}
|
|
function CallCPLEntry16(hinst: THandle; lpfnEntry: TFarProc16; hwndCPL: HWND;
|
|
msg: UINT; lParam1, lParam2: LPARAM): LRESULT stdcall;
|
|
|
|
{$EXTERNALSYM SHCreateStdEnumFmtEtc}
|
|
function SHCreateStdEnumFmtEtc(cfmt: UINT; afmt: PFormatEtcArray;
|
|
out ppenumFormatEtc: IEnumFORMATETC): HResult; stdcall;
|
|
{$EXTERNALSYM SHDoDragDrop}
|
|
function SHDoDragDrop(hwnd: HWND; pdata: IDataObject; pdsrc: IDropSource;
|
|
dwEffect: DWORD; out pdwEffect: DWORD): HResult; stdcall;
|
|
|
|
const
|
|
// stuff for doing auto scrolling
|
|
{$EXTERNALSYM NUM_POINTS}
|
|
NUM_POINTS = 3;
|
|
|
|
type
|
|
PAutoScrollData = ^TAutoScrollData;
|
|
{$EXTERNALSYM AUTO_SCROLL_DATA}
|
|
AUTO_SCROLL_DATA = record // asd
|
|
iNextSample: Integer;
|
|
dwLastScroll: DWORD;
|
|
bFull: BOOL;
|
|
pts: array[0..NUM_POINTS - 1] of TPoint;
|
|
dwTimes: array[0..NUM_POINTS - 1] of DWORD;
|
|
end;
|
|
TAutoScrollData = AUTO_SCROLL_DATA;
|
|
|
|
{$EXTERNALSYM DAD_SetDragImage}
|
|
function DAD_SetDragImage(him: HIMAGELIST;
|
|
var pptOffset: TPoint): BOOL; stdcall;
|
|
{$EXTERNALSYM DAD_DragEnterEx}
|
|
function DAD_DragEnterEx(hwndTarget: HWND; ptStart: TPoint): BOOL; stdcall;
|
|
{$EXTERNALSYM DAD_DragEnterEx2}
|
|
function DAD_DragEnterEx2(hwndTarget: HWND; ptStart: TPoint;
|
|
pdtObject: IDataObject): BOOL; stdcall;
|
|
{$EXTERNALSYM DAD_ShowDragImage}
|
|
function DAD_ShowDragImage(fShow: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM DAD_DragMove}
|
|
function DAD_DragMove(pt: TPoint): BOOL; stdcall;
|
|
{$EXTERNALSYM DAD_DragLeave}
|
|
function DAD_DragLeave: BOOL; stdcall;
|
|
{$EXTERNALSYM DAD_AutoScroll}
|
|
function DAD_AutoScroll(hwnd: HWND; var pad: TAutoScrollData;
|
|
const pptNow: TPoint): BOOL; stdcall;
|
|
|
|
type
|
|
TCabinetStateFlag = (fFullPathTitle, fSaveLocalView, fNotShell,
|
|
fSimpleDefault, fDontShowDescBar, fNewWindowMode, fShowCompColor,
|
|
fDontPrettyNames, fAdminsCreateCommonGroups);
|
|
|
|
TCabinetStateFlags = set of TCabinetStateFlag;
|
|
|
|
type
|
|
{$EXTERNALSYM CABINETSTATE}
|
|
CABINETSTATE = record
|
|
cLength: Word;
|
|
nVersion: Word;
|
|
Flags: Word;
|
|
{
|
|
BOOL fFullPathTitle : 1;
|
|
BOOL fSaveLocalView : 1;
|
|
BOOL fNotShell : 1;
|
|
BOOL fSimpleDefault : 1;
|
|
BOOL fDontShowDescBar : 1;
|
|
BOOL fNewWindowMode : 1;
|
|
BOOL fShowCompColor : 1; // NT: Show compressed volumes in a different colour
|
|
BOOL fDontPrettyNames : 1; // NT: Do 8.3 name conversion, or not!
|
|
BOOL fAdminsCreateCommonGroups : 1; // NT: Administrators create comon groups
|
|
UINT fUnusedFlags : 7;
|
|
}
|
|
fMenuEnumFilter: UINT;
|
|
end;
|
|
|
|
PCabinetState = ^TCabinetState;
|
|
TCabinetState = record
|
|
cLength: Word;
|
|
nVersion: Word;
|
|
Flags: TCabinetStateFlags;
|
|
fMenuEnumFilter: UINT;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM CABINETSTATE_VERSION}
|
|
CABINETSTATE_VERSION = 2;
|
|
|
|
// APIs for reading and writing the cabinet state.
|
|
{$EXTERNALSYM ReadCabinetState}
|
|
function ReadCabinetState(var lpState: TCabinetState;
|
|
iSize: Integer): BOOL; stdcall;
|
|
{$EXTERNALSYM WriteCabinetState}
|
|
function WriteCabinetState(var lpState: TCabinetState): BOOL; stdcall;
|
|
{$EXTERNALSYM PathMakeUniqueName}
|
|
function PathMakeUniqueName(pszUniqueName: PWideChar; cchMax: UINT;
|
|
pszTemplate, pszLongPlate, pszDir: PWideChar): BOOL; stdcall;
|
|
{$EXTERNALSYM PathQualify}
|
|
procedure PathQualify(psz: PWideChar); stdcall;
|
|
{$EXTERNALSYM PathIsExe}
|
|
function PathIsExe(pszPath: PWideChar): BOOL; stdcall;
|
|
{$EXTERNALSYM PathIsSlowA}
|
|
function PathIsSlowA(pszFile: PAnsiChar; dwAttr: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM PathIsSlowW}
|
|
function PathIsSlowW(pszFile: PWideChar; dwAttr: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM PathIsSlow}
|
|
function PathIsSlow(pszFile: PTSTR; dwAttr: DWORD): BOOL; stdcall;
|
|
|
|
const
|
|
//
|
|
// Return codes from PathCleanupSpec. Negative return values are
|
|
// unrecoverable errors
|
|
//
|
|
{$EXTERNALSYM PCS_FATAL}
|
|
PCS_FATAL = $80000000;
|
|
{$EXTERNALSYM PCS_REPLACEDCHAR}
|
|
PCS_REPLACEDCHAR = $00000001;
|
|
{$EXTERNALSYM PCS_REMOVEDCHAR}
|
|
PCS_REMOVEDCHAR = $00000002;
|
|
{$EXTERNALSYM PCS_TRUNCATED}
|
|
PCS_TRUNCATED = $00000004;
|
|
{$EXTERNALSYM PCS_PATHTOOLONG}
|
|
PCS_PATHTOOLONG = $00000008; // Always combined with FATAL
|
|
|
|
type
|
|
TPWideCharArray = array[0..65535] of PWideChar;
|
|
PPWideCharArray = ^TPWideCharArray;
|
|
|
|
{$EXTERNALSYM PathCleanupSpec}
|
|
function PathCleanupSpec(pszDir, pszSpec: PWideChar): Integer; stdcall;
|
|
{$EXTERNALSYM PathResolve}
|
|
function PathResolve(pszPath: PWideChar; dirs: PPWideCharArray;
|
|
fFlags: UINT): Integer; stdcall;
|
|
{$EXTERNALSYM GetFileNameFromBrowse}
|
|
function GetFileNameFromBrowse(hwnd: HWND; pszFilePath: PWideChar;
|
|
cbFilePath: UINT;
|
|
pszWorkingDir, pszDefExt, pszFilters, pszTitle: PWideChar): BOOL; stdcall;
|
|
{$EXTERNALSYM DriveType}
|
|
function DriveType(iDrive: Integer): Integer; stdcall;
|
|
{$EXTERNALSYM RealDriveType}
|
|
function RealDriveType(iDrive: Integer; fOKToHitNet: BOOL): Integer; stdcall;
|
|
{$EXTERNALSYM IsNetDrive}
|
|
function IsNetDrive(iDrive: Integer): Integer; stdcall;
|
|
|
|
const
|
|
// Flags for Shell_MergeMenus
|
|
{$EXTERNALSYM MM_ADDSEPARATOR}
|
|
MM_ADDSEPARATOR = $00000001;
|
|
{$EXTERNALSYM MM_SUBMENUSHAVEIDS}
|
|
MM_SUBMENUSHAVEIDS = $00000002;
|
|
{$EXTERNALSYM MM_DONTREMOVESEPS}
|
|
MM_DONTREMOVESEPS = $00000004;
|
|
|
|
{$EXTERNALSYM Shell_MergeMenus}
|
|
function Shell_MergeMenus(hmDst, hmSrc: HMENU;
|
|
uInsert, uIDAdjust, uIDAdjustMax: UINT; uFlags: ULONG): ULONG; stdcall;
|
|
|
|
(*
|
|
* The SHObjectProperties API provides an easy way to invoke
|
|
* the Properties context menu command on shell objects.
|
|
*
|
|
* PARAMETERS
|
|
*
|
|
* hwnd The window handle of the window which will own the dialog
|
|
* dwType A SHOP_ value as defined below
|
|
* lpObject Name of the object, see SHOP_ values below
|
|
* lpPage The name of the property sheet page to open to or NULL.
|
|
*
|
|
* RETURN
|
|
*
|
|
* TRUE if the Properties command was invoked
|
|
*)
|
|
{$EXTERNALSYM SHObjectProperties}
|
|
function SHObjectProperties(hwnd: HWND; dwType: DWORD;
|
|
lpObject, lpPage: PWideChar): BOOL; stdcall;
|
|
|
|
const
|
|
{$EXTERNALSYM SHOP_PRINTERNAME}
|
|
SHOP_PRINTERNAME = $00000001; // lpObject points to a printer friendly name
|
|
{$EXTERNALSYM SHOP_FILEPATH}
|
|
SHOP_FILEPATH = $00000002; // lpObject points to a fully qualified path+file name
|
|
{$EXTERNALSYM SHOP_VOLUMEGUID}
|
|
SHOP_VOLUMEGUID = $00000004; // lpObject points to a Volume GUID
|
|
|
|
(*
|
|
* The SHFormatDrive API provides access to the Shell
|
|
* format dialog. This allows apps which want to format disks
|
|
* to bring up the same dialog that the Shell does to do it.
|
|
*
|
|
* This dialog is not sub-classable. You cannot put custom
|
|
* controls in it. If you want this ability, you will have
|
|
* to write your own front end for the DMaint_FormatDrive
|
|
* engine.
|
|
*
|
|
* NOTE that the user can format as many diskettes in the specified
|
|
* drive, or as many times, as he/she wishes to. There is no way to
|
|
* force any specififc number of disks to format. If you want this
|
|
* ability, you will have to write your own front end for the
|
|
* DMaint_FormatDrive engine.
|
|
*
|
|
* NOTE also that the format will not start till the user pushes the
|
|
* start button in the dialog. There is no way to do auto start. If
|
|
* you want this ability, you will have to write your own front end
|
|
* for the DMaint_FormatDrive engine.
|
|
*
|
|
* PARAMETERS
|
|
*
|
|
* hwnd = The window handle of the window which will own the dialog
|
|
* NOTE that unlike SHCheckDrive, hwnd == NULL does not cause
|
|
* this dialog to come up as a "top level application" window.
|
|
* This parameter should always be non-null, this dialog is
|
|
* only designed to be the child of another window, not a
|
|
* stand-alone application.
|
|
* drive = The 0 based (A: == 0) drive number of the drive to format
|
|
* fmtID = The ID of the physical format to format the disk with
|
|
* NOTE: The special value SHFMT_ID_DEFAULT means "use the
|
|
* default format specified by the DMaint_FormatDrive
|
|
* engine". If you want to FORCE a particular format
|
|
* ID "up front" you will have to call
|
|
* DMaint_GetFormatOptions yourself before calling
|
|
* this to obtain the valid list of phys format IDs
|
|
* (contents of the PhysFmtIDList array in the
|
|
* FMTINFOSTRUCT).
|
|
* options = There is currently only two option bits defined
|
|
*
|
|
* SHFMT_OPT_FULL
|
|
* SHFMT_OPT_SYSONLY
|
|
*
|
|
* The normal defualt in the Shell format dialog is
|
|
* "Quick Format", setting this option bit indicates that
|
|
* the caller wants to start with FULL format selected
|
|
* (this is useful for folks detecting "unformatted" disks
|
|
* and wanting to bring up the format dialog).
|
|
*
|
|
* The SHFMT_OPT_SYSONLY initializes the dialog to
|
|
* default to just sys the disk.
|
|
*
|
|
* All other bits are reserved for future expansion and
|
|
* must be 0.
|
|
*
|
|
* Please note that this is a bit field and not a value
|
|
* and treat it accordingly.
|
|
*
|
|
* RETURN
|
|
* The return is either one of the SHFMT_* values, or if the
|
|
* returned DWORD value is not == to one of these values, then
|
|
* the return is the physical format ID of the last succesful
|
|
* format. The LOWORD of this value can be passed on subsequent
|
|
* calls as the fmtID parameter to "format the same type you did
|
|
* last time".
|
|
*
|
|
*)
|
|
{$EXTERNALSYM SHFormatDrive}
|
|
function SHFormatDrive(hwnd: HWND; drive, fmtID, options: UINT): DWORD; stdcall;
|
|
|
|
const
|
|
//
|
|
// Special value of fmtID which means "use the default format"
|
|
//
|
|
{$EXTERNALSYM SHFMT_ID_DEFAULT}
|
|
SHFMT_ID_DEFAULT = $FFFF;
|
|
|
|
//
|
|
// Option bits for options parameter
|
|
//
|
|
{$EXTERNALSYM SHFMT_OPT_FULL}
|
|
SHFMT_OPT_FULL = $0001;
|
|
{$EXTERNALSYM SHFMT_OPT_SYSONLY}
|
|
SHFMT_OPT_SYSONLY = $0002;
|
|
|
|
//
|
|
// Special return values. PLEASE NOTE that these are DWORD values.
|
|
//
|
|
{$EXTERNALSYM SHFMT_ERROR}
|
|
SHFMT_ERROR = $FFFFFFFF; // Error on last format, drive may be formatable
|
|
{$EXTERNALSYM SHFMT_CANCEL}
|
|
SHFMT_CANCEL = $FFFFFFFE; // Last format was canceled
|
|
{$EXTERNALSYM SHFMT_NOFORMAT}
|
|
SHFMT_NOFORMAT = $FFFFFFFD; // Drive is not formatable
|
|
|
|
type
|
|
{$EXTERNALSYM HPSXA}
|
|
HPSXA = THandle;
|
|
|
|
{$EXTERNALSYM SHCreatePropSheetExtArray}
|
|
function SHCreatePropSheetExtArray(hKey: HKEY; pszSubKey: PWideChar;
|
|
max_iface: UINT): HPSXA; stdcall;
|
|
{$EXTERNALSYM SHDestroyPropSheetExtArray}
|
|
procedure SHDestroyPropSheetExtArray(hpsxa: HPSXA); stdcall;
|
|
{$EXTERNALSYM SHAddFromPropSheetExtArray}
|
|
function SHAddFromPropSheetExtArray(hpsxa: HPSXA;
|
|
lpfnAddPage: TFnAddPropSheetPage; lParam: LPARAM): UINT; stdcall;
|
|
{$EXTERNALSYM SHReplaceFromPropSheetExtArray}
|
|
function SHReplaceFromPropSheetExtArray(hpsxa: HPSXA; uPageID: UINT;
|
|
lpfnReplaceWith: TFnAddPropSheetPage; lParam: LPARAM): UINT; stdcall;
|
|
{$EXTERNALSYM ILClone}
|
|
function ILClone(pidl: PItemIDList): PItemIDList; stdcall;
|
|
{$EXTERNALSYM ILGetNext}
|
|
function ILGetNext(pidl: PItemIDList): PItemIDList; stdcall;
|
|
{$EXTERNALSYM ILGetSize}
|
|
function ILGetSize(pidl: PItemIDList): UINT; stdcall;
|
|
{$EXTERNALSYM ILFindLastID}
|
|
function ILFindLastID(pidl: PItemIDList): PItemIDList; stdcall;
|
|
{$EXTERNALSYM ILRemoveLastID}
|
|
function ILRemoveLastID(pidl: PItemIDList): BOOL; stdcall;
|
|
{$EXTERNALSYM ILAppendID}
|
|
function ILAppendID(pidl: PItemIDList; pmkid: PSHItemID;
|
|
fAppend: BOOL): PItemIDList; stdcall;
|
|
{$EXTERNALSYM ILFree}
|
|
procedure ILFree(pidl: PItemIDList); stdcall;
|
|
{$EXTERNALSYM ILCloneFirst}
|
|
function ILCloneFirst(pidl: PItemIDList): PItemIDList; stdcall;
|
|
{$EXTERNALSYM ILIsEqual}
|
|
function ILIsEqual(pidl1, pidl2: PItemIDList): BOOL; stdcall;
|
|
{$EXTERNALSYM ILIsParent}
|
|
function ILIsParent(pidl1, pidl2: PItemIDList; fImmediate: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM ILFindChild}
|
|
function ILFindChild(pidlParent, pidlChild: PItemIDList): PItemIDList; stdcall;
|
|
{$EXTERNALSYM ILCombine}
|
|
function ILCombine(pidl1, pidl2: PItemIDList): PItemIDList; stdcall;
|
|
|
|
|
|
{$EXTERNALSYM ILLoadFromStream}
|
|
function ILLoadFromStream(pstm: IStream;
|
|
out pidl: PItemIDList): HResult stdcall;
|
|
|
|
{$EXTERNALSYM ILSaveToStream}
|
|
function ILSaveToStream(pstm: IStream; pidl: PItemIDList): HResult; stdcall;
|
|
|
|
{$EXTERNALSYM ILCreateFromPathA}
|
|
function ILCreateFromPathA(pszPath: PAnsiChar): PItemIDList; stdcall;
|
|
{$EXTERNALSYM ILCreateFromPathW}
|
|
function ILCreateFromPathW(pszPath: PWideChar): PItemIDList; stdcall;
|
|
{$EXTERNALSYM ILCreateFromPath}
|
|
function ILCreateFromPath(pszPath: PTSTR): PItemIDList; stdcall;
|
|
{$EXTERNALSYM SHILCreateFromPath}
|
|
function SHILCreateFromPath(szPath: PWideChar; out ppidl: PItemIDList;
|
|
var rgfInOut: DWORD): HResult; stdcall;
|
|
|
|
type
|
|
{$EXTERNALSYM IDefViewFrame}
|
|
IDefViewFrame = interface(IUnknown)
|
|
['{710EB7A0-45ED-11D0-924A-0020AFC7AC4D}']
|
|
function GetWindowLV(out phwnd: HWND): HResult; stdcall;
|
|
function ReleaseWindowLV: HResult; stdcall;
|
|
function GetShellFolder(out ppsf: IShellFolder): HResult; stdcall;
|
|
end;
|
|
|
|
//===========================================================================
|
|
// Shell restrictions. (Parameter for SHRestricted)
|
|
type
|
|
{$EXTERNALSYM RESTRICTIONS}
|
|
RESTRICTIONS = DWORD;
|
|
TRestrictions = DWORD;
|
|
|
|
const
|
|
{$EXTERNALSYM REST_NONE}
|
|
REST_NONE = $00000000;
|
|
{$EXTERNALSYM REST_NORUN}
|
|
REST_NORUN = $00000001;
|
|
{$EXTERNALSYM REST_NOCLOSE}
|
|
REST_NOCLOSE = $00000002;
|
|
{$EXTERNALSYM REST_NOSAVESET}
|
|
REST_NOSAVESET = $00000004;
|
|
{$EXTERNALSYM REST_NOFILEMENU}
|
|
REST_NOFILEMENU = $00000008;
|
|
{$EXTERNALSYM REST_NOSETFOLDERS}
|
|
REST_NOSETFOLDERS = $00000010;
|
|
{$EXTERNALSYM REST_NOSETTASKBAR}
|
|
REST_NOSETTASKBAR = $00000020;
|
|
{$EXTERNALSYM REST_NODESKTOP}
|
|
REST_NODESKTOP = $00000040;
|
|
{$EXTERNALSYM REST_NOFIND}
|
|
REST_NOFIND = $00000080;
|
|
{$EXTERNALSYM REST_NODRIVES}
|
|
REST_NODRIVES = $00000100;
|
|
{$EXTERNALSYM REST_NODRIVEAUTORUN}
|
|
REST_NODRIVEAUTORUN = $00000200;
|
|
{$EXTERNALSYM REST_NODRIVETYPEAUTORUN}
|
|
REST_NODRIVETYPEAUTORUN = $00000400;
|
|
{$EXTERNALSYM REST_NONETHOOD}
|
|
REST_NONETHOOD = $00000800;
|
|
{$EXTERNALSYM REST_STARTBANNER}
|
|
REST_STARTBANNER = $00001000;
|
|
{$EXTERNALSYM REST_RESTRICTRUN}
|
|
REST_RESTRICTRUN = $00002000;
|
|
{$EXTERNALSYM REST_NOPRINTERTABS}
|
|
REST_NOPRINTERTABS = $00004000;
|
|
{$EXTERNALSYM REST_NOPRINTERDELETE}
|
|
REST_NOPRINTERDELETE = $00008000;
|
|
{$EXTERNALSYM REST_NOPRINTERADD}
|
|
REST_NOPRINTERADD = $00010000;
|
|
{$EXTERNALSYM REST_NOSTARTMENUSUBFOLDERS}
|
|
REST_NOSTARTMENUSUBFOLDERS = $00020000;
|
|
{$EXTERNALSYM REST_MYDOCSONNET}
|
|
REST_MYDOCSONNET = $00040000;
|
|
{$EXTERNALSYM REST_NOEXITTODOS}
|
|
REST_NOEXITTODOS = $00080000;
|
|
{$EXTERNALSYM REST_ENFORCESHELLEXTSECURITY}
|
|
REST_ENFORCESHELLEXTSECURITY = $00100000;
|
|
{$EXTERNALSYM REST_LINKRESOLVEIGNORELINKINFO}
|
|
REST_LINKRESOLVEIGNORELINKINFO = $00200000;
|
|
{$EXTERNALSYM REST_NOCOMMONGROUPS}
|
|
REST_NOCOMMONGROUPS = $00400000;
|
|
{$EXTERNALSYM REST_SEPARATEDESKTOPPROCESS}
|
|
REST_SEPARATEDESKTOPPROCESS = $00800000;
|
|
{$EXTERNALSYM REST_NOWEB}
|
|
REST_NOWEB = $01000000;
|
|
{$EXTERNALSYM REST_NOTRAYCONTEXTMENU}
|
|
REST_NOTRAYCONTEXTMENU = $02000000;
|
|
{$EXTERNALSYM REST_NOVIEWCONTEXTMENU}
|
|
REST_NOVIEWCONTEXTMENU = $04000000;
|
|
{$EXTERNALSYM REST_NONETCONNECTDISCONNECT}
|
|
REST_NONETCONNECTDISCONNECT = $08000000;
|
|
{$EXTERNALSYM REST_STARTMENULOGOFF}
|
|
REST_STARTMENULOGOFF = $10000000;
|
|
{$EXTERNALSYM REST_NOSETTINGSASSIST}
|
|
REST_NOSETTINGSASSIST = $20000000;
|
|
{$EXTERNALSYM REST_NOINTERNETICON}
|
|
REST_NOINTERNETICON = $40000001;
|
|
{$EXTERNALSYM REST_NORECENTDOCSHISTORY}
|
|
REST_NORECENTDOCSHISTORY = $40000002;
|
|
{$EXTERNALSYM REST_NORECENTDOCSMENU}
|
|
REST_NORECENTDOCSMENU = $40000003;
|
|
{$EXTERNALSYM REST_NOACTIVEDESKTOP}
|
|
REST_NOACTIVEDESKTOP = $40000004;
|
|
{$EXTERNALSYM REST_NOACTIVEDESKTOPCHANGES}
|
|
REST_NOACTIVEDESKTOPCHANGES = $40000005;
|
|
{$EXTERNALSYM REST_NOFAVORITESMENU}
|
|
REST_NOFAVORITESMENU = $40000006;
|
|
{$EXTERNALSYM REST_CLEARRECENTDOCSONEXIT}
|
|
REST_CLEARRECENTDOCSONEXIT = $40000007;
|
|
{$EXTERNALSYM REST_CLASSICSHELL}
|
|
REST_CLASSICSHELL = $40000008;
|
|
{$EXTERNALSYM REST_NOCUSTOMIZEWEBVIEW}
|
|
REST_NOCUSTOMIZEWEBVIEW = $40000009;
|
|
{$EXTERNALSYM REST_NOHTMLWALLPAPER}
|
|
REST_NOHTMLWALLPAPER = $40000010;
|
|
{$EXTERNALSYM REST_NOCHANGINGWALLPAPER}
|
|
REST_NOCHANGINGWALLPAPER = $40000011;
|
|
{$EXTERNALSYM REST_NODESKCOMP}
|
|
REST_NODESKCOMP = $40000012;
|
|
{$EXTERNALSYM REST_NOADDDESKCOMP}
|
|
REST_NOADDDESKCOMP = $40000013;
|
|
{$EXTERNALSYM REST_NODELDESKCOMP}
|
|
REST_NODELDESKCOMP = $40000014;
|
|
{$EXTERNALSYM REST_NOCLOSEDESKCOMP}
|
|
REST_NOCLOSEDESKCOMP = $40000015;
|
|
{$EXTERNALSYM REST_NOCLOSE_DRAGDROPBAND}
|
|
REST_NOCLOSE_DRAGDROPBAND = $40000016; // Disable Close and Drag & Drop on ALL Bands
|
|
{$EXTERNALSYM REST_NOMOVINGBAND}
|
|
REST_NOMOVINGBAND = $40000017; // Disable Moving ALL Bands
|
|
{$EXTERNALSYM REST_NOEDITDESKCOMP}
|
|
REST_NOEDITDESKCOMP = $40000018;
|
|
{$EXTERNALSYM REST_NORESOLVESEARCH}
|
|
REST_NORESOLVESEARCH = $40000019;
|
|
{$EXTERNALSYM REST_NORESOLVETRACK}
|
|
REST_NORESOLVETRACK = $4000001A;
|
|
{$EXTERNALSYM REST_FORCECOPYACLWITHFILE}
|
|
REST_FORCECOPYACLWITHFILE = $4000001B;
|
|
{$EXTERNALSYM REST_NOLOGO3CHANNELNOTIFY}
|
|
REST_NOLOGO3CHANNELNOTIFY = $4000001C;
|
|
{$EXTERNALSYM REST_NOFORGETSOFTWAREUPDATE}
|
|
REST_NOFORGETSOFTWAREUPDATE = $4000001D;
|
|
{$EXTERNALSYM REST_NOSETACTIVEDESKTOP}
|
|
REST_NOSETACTIVEDESKTOP = $4000001E; // No Active desktop on Settings Menu
|
|
{$EXTERNALSYM REST_NOUPDATEWINDOWS}
|
|
REST_NOUPDATEWINDOWS = $4000001F; // No Windows Update on Settings Menu
|
|
{$EXTERNALSYM REST_NOCHANGESTARMENU}
|
|
REST_NOCHANGESTARMENU = $40000020; // No Context menu or Drag and Drop on Start menu
|
|
{$EXTERNALSYM REST_NOFOLDEROPTIONS}
|
|
REST_NOFOLDEROPTIONS = $40000021; // No Folder Options on Settings Menu
|
|
{$EXTERNALSYM REST_HASFINDCOMPUTERS}
|
|
REST_HASFINDCOMPUTERS = $40000022; // Show Start/Search/Computers
|
|
{$EXTERNALSYM REST_INTELLIMENUS}
|
|
REST_INTELLIMENUS = $40000023;
|
|
{$EXTERNALSYM REST_RUNDLGMEMCHECKBOX}
|
|
REST_RUNDLGMEMCHECKBOX = $40000024;
|
|
{$EXTERNALSYM REST_ARP_ShowPostSetup}
|
|
REST_ARP_ShowPostSetup = $40000025; // ARP: Show Post-Setup page
|
|
{$EXTERNALSYM REST_NOCSC}
|
|
REST_NOCSC = $40000026; // Disable the ClientSide caching on SM
|
|
{$EXTERNALSYM REST_NOCONTROLPANEL}
|
|
REST_NOCONTROLPANEL = $40000027; // Remove the Control Panel only from SM|Settings
|
|
{$EXTERNALSYM REST_ENUMWORKGROUP}
|
|
REST_ENUMWORKGROUP = $40000028; // Enumerate workgroup in root of nethood
|
|
{$EXTERNALSYM REST_ARP_NOARP}
|
|
REST_ARP_NOARP = $40000029; // ARP: Don't Allow ARP to come up at all
|
|
{$EXTERNALSYM REST_ARP_NOREMOVEPAGE}
|
|
REST_ARP_NOREMOVEPAGE = $4000002A; // ARP: Don't allow Remove page
|
|
{$EXTERNALSYM REST_ARP_NOADDPAGE}
|
|
REST_ARP_NOADDPAGE = $4000002B; // ARP: Don't allow Add page
|
|
{$EXTERNALSYM REST_ARP_NOWINSETUPPAGE}
|
|
REST_ARP_NOWINSETUPPAGE = $4000002C; // ARP: Don't allow opt components page
|
|
{$EXTERNALSYM REST_GREYMSIADS}
|
|
REST_GREYMSIADS = $4000002D; // SM: Allow the greying of Darwin Ads in SM
|
|
{$EXTERNALSYM REST_NOCHANGEMAPPEDDRIVELABEL}
|
|
REST_NOCHANGEMAPPEDDRIVELABEL = $4000002E; // Don't enable the UI which allows users to rename mapped drive labels
|
|
{$EXTERNALSYM REST_NOCHANGEMAPPEDDRIVECOMMENT}
|
|
REST_NOCHANGEMAPPEDDRIVECOMMENT = $4000002F; // Don't enable the UI which allows users to change mapped drive comments
|
|
{$EXTERNALSYM REST_MaxRecentDocs}
|
|
REST_MaxRecentDocs = $40000030;
|
|
{$EXTERNALSYM REST_NONETWORKCONNECTIONS}
|
|
REST_NONETWORKCONNECTIONS = $40000031; // No Start Menu | Settings |Network Connections
|
|
{$EXTERNALSYM REST_FORCESTARTMENULOGOFF}
|
|
REST_FORCESTARTMENULOGOFF = $40000032; // Force logoff on the Start Menu
|
|
{$EXTERNALSYM REST_NOWEBVIEW}
|
|
REST_NOWEBVIEW = $40000033; // Disable Web View
|
|
{$EXTERNALSYM REST_NOCUSTOMIZETHISFOLDER}
|
|
REST_NOCUSTOMIZETHISFOLDER = $40000034; // Disable Customize This Folder
|
|
{$EXTERNALSYM REST_NOENCRYPTION}
|
|
REST_NOENCRYPTION = $40000035; // Don't allow file encryption
|
|
// Do NOT use me $40000036 ;
|
|
{$EXTERNALSYM REST_DONTSHOWSUPERHIDDEN}
|
|
REST_DONTSHOWSUPERHIDDEN = $40000037; // don't show super hidden files
|
|
{$EXTERNALSYM REST_NOSHELLSEARCHBUTTON}
|
|
REST_NOSHELLSEARCHBUTTON = $40000038;
|
|
{$EXTERNALSYM REST_NOHARDWARETAB}
|
|
REST_NOHARDWARETAB = $40000039; // No Hardware tab on Drives or in control panel
|
|
{$EXTERNALSYM REST_NORUNASINSTALLPROMPT}
|
|
REST_NORUNASINSTALLPROMPT = $4000003A; // Don't bring up "Run As" prompt for install programs
|
|
{$EXTERNALSYM REST_PROMPTRUNASINSTALLNETPATH}
|
|
REST_PROMPTRUNASINSTALLNETPATH = $4000003B; // Force the "Run As" prompt for install programs on unc/network shares
|
|
{$EXTERNALSYM REST_NOMANAGEMYCOMPUTERVERB}
|
|
REST_NOMANAGEMYCOMPUTERVERB = $4000003C; // No Manage verb on My Computer
|
|
{$EXTERNALSYM REST_NORECENTDOCSNETHOOD}
|
|
REST_NORECENTDOCSNETHOOD = $4000003D; // dont add the recent docs shares to nethood
|
|
{$EXTERNALSYM REST_DISALLOWRUN}
|
|
REST_DISALLOWRUN = $4000003E; // don't allow certain apps to be run
|
|
{$EXTERNALSYM REST_NOWELCOMESCREEN}
|
|
REST_NOWELCOMESCREEN = $4000003F; // don't allow the welcome screen to be displayed.
|
|
{$EXTERNALSYM REST_RESTRICTCPL}
|
|
REST_RESTRICTCPL = $40000040; // only allow certain cpls to be run
|
|
{$EXTERNALSYM REST_DISALLOWCPL}
|
|
REST_DISALLOWCPL = $40000041; // don't allow certain cpls to be run
|
|
{$EXTERNALSYM REST_NOSMBALLOONTIP}
|
|
REST_NOSMBALLOONTIP = $40000042; // No Start Menu Balloon Tip
|
|
{$EXTERNALSYM REST_NOSMHELP}
|
|
REST_NOSMHELP = $40000043; // No Help on the Start Menu
|
|
{$EXTERNALSYM REST_NOWINKEYS}
|
|
REST_NOWINKEYS = $40000044; // No Windows-X Hot keys
|
|
{$EXTERNALSYM REST_NOENCRYPTONMOVE}
|
|
REST_NOENCRYPTONMOVE = $40000045; // Don't automatically try to encrypt files that are moved to encryped directories
|
|
{$EXTERNALSYM REST_NOLOCALMACHINERUN}
|
|
REST_NOLOCALMACHINERUN = $40000046; // ignore HKLM\sw\ms\win\cv\Run and all of it's sub keys
|
|
{$EXTERNALSYM REST_NOCURRENTUSERRUN}
|
|
REST_NOCURRENTUSERRUN = $40000047; // ignore HKCU\sw\ms\win\cv\Run and all of it's sub keys
|
|
{$EXTERNALSYM REST_NOLOCALMACHINERUNONCE}
|
|
REST_NOLOCALMACHINERUNONCE = $40000048; // ignore HKLM\sw\ms\win\cv\RunOnce and all of it's sub keys
|
|
{$EXTERNALSYM REST_NOCURRENTUSERRUNONCE}
|
|
REST_NOCURRENTUSERRUNONCE = $40000049; // ignore HKCU\sw\ms\win\cv\RunOnce and all of it's sub keys
|
|
{$EXTERNALSYM REST_FORCEACTIVEDESKTOPON}
|
|
REST_FORCEACTIVEDESKTOPON = $4000004A; // Force ActiveDesktop to be turned ON all the time.
|
|
{$EXTERNALSYM REST_NOCOMPUTERSNEARME}
|
|
REST_NOCOMPUTERSNEARME = $4000004B; // removes the "Computers near me" link
|
|
{$EXTERNALSYM REST_NOVIEWONDRIVE}
|
|
REST_NOVIEWONDRIVE = $4000004C; // disallows CreateViewObject() on specified drives (CFSFolder only)
|
|
{$EXTERNALSYM REST_NONETCRAWL}
|
|
REST_NONETCRAWL = $4000004D; // disables the crawling of the WNet namespace.
|
|
{$EXTERNALSYM REST_NOSHAREDDOCUMENTS}
|
|
REST_NOSHAREDDOCUMENTS = $4000004E; // don't auto share the Shared Documents/create link
|
|
{$EXTERNALSYM REST_NOSMMYDOCS}
|
|
REST_NOSMMYDOCS = $4000004F; // Don't show the My Documents item on the Start Menu.
|
|
{$EXTERNALSYM REST_NOSMMYPICS}
|
|
REST_NOSMMYPICS = $40000050; // Don't show the My Pictures item on the Start Menu
|
|
{$EXTERNALSYM REST_ALLOWBITBUCKDRIVES}
|
|
REST_ALLOWBITBUCKDRIVES = $40000051; // Bit mask indicating which which drives have bit bucket support
|
|
{$EXTERNALSYM REST_NONLEGACYSHELLMODE}
|
|
REST_NONLEGACYSHELLMODE = $40000052; // new consumer shell modes
|
|
{$EXTERNALSYM REST_NOCONTROLPANELBARRICADE}
|
|
REST_NOCONTROLPANELBARRICADE = $40000053; // The webview barricade in Control Panel
|
|
{$EXTERNALSYM REST_NOSTARTPAGE}
|
|
REST_NOSTARTPAGE = $40000054; // Whistler Start Page on desktop.
|
|
{$EXTERNALSYM REST_NOAUTOTRAYNOTIFY}
|
|
REST_NOAUTOTRAYNOTIFY = $40000055; // Whistler auto-tray notify feature
|
|
{$EXTERNALSYM REST_NOTASKGROUPING}
|
|
REST_NOTASKGROUPING = $40000056; // Whistler taskbar button grouping feature
|
|
{$EXTERNALSYM REST_NOCDBURNING}
|
|
REST_NOCDBURNING = $40000057; // whistler cd burning feature
|
|
{$EXTERNALSYM REST_MYCOMPNOPROP}
|
|
REST_MYCOMPNOPROP = $40000058; // disables Properties on My Computer's context menu
|
|
{$EXTERNALSYM REST_MYDOCSNOPROP}
|
|
REST_MYDOCSNOPROP = $40000059; // disables Properties on My Documents' context menu
|
|
{$EXTERNALSYM REST_NOSTARTPANEL}
|
|
REST_NOSTARTPANEL = $4000005A; // Windows start panel (New start menu) for Whistler.
|
|
{$EXTERNALSYM REST_NODISPLAYAPPEARANCEPAGE}
|
|
REST_NODISPLAYAPPEARANCEPAGE = $4000005B; // disable Themes and Appearance tabs in the Display Control Panel.
|
|
{$EXTERNALSYM REST_NOTHEMESTAB}
|
|
REST_NOTHEMESTAB = $4000005C; // disable the Themes tab in the Display Control Panel.
|
|
{$EXTERNALSYM REST_NOVISUALSTYLECHOICE}
|
|
REST_NOVISUALSTYLECHOICE = $4000005D; // disable the visual style drop down in the Appearance tab of the Display Control Panel.
|
|
{$EXTERNALSYM REST_NOSIZECHOICE}
|
|
REST_NOSIZECHOICE = $4000005E; // disable the size drop down in the Appearance tab of the Display Control Panel.
|
|
{$EXTERNALSYM REST_NOCOLORCHOICE}
|
|
REST_NOCOLORCHOICE = $4000005F; // disable the color drop down in the Appearance tab of the Display Control Panel.
|
|
{$EXTERNALSYM REST_SETVISUALSTYLE}
|
|
REST_SETVISUALSTYLE = $40000060; // Load the specified file as the visual style.
|
|
{$EXTERNALSYM REST_STARTRUNNOHOMEPATH}
|
|
REST_STARTRUNNOHOMEPATH = $40000061; // dont use the %HOMEPATH% env var for the Start-Run dialog
|
|
{$EXTERNALSYM REST_NOUSERNAMEINSTARTPANEL}
|
|
REST_NOUSERNAMEINSTARTPANEL = $40000062; // don't show the username is the startpanel.
|
|
{$EXTERNALSYM REST_NOMYCOMPUTERICON}
|
|
REST_NOMYCOMPUTERICON = $40000063; // don't show my computer anywhere ; hide its contents
|
|
{$EXTERNALSYM REST_NOSMNETWORKPLACES}
|
|
REST_NOSMNETWORKPLACES = $40000064; // don't show network places in startpanel.
|
|
{$EXTERNALSYM REST_NOSMPINNEDLIST}
|
|
REST_NOSMPINNEDLIST = $40000065; // don't show the pinned list in startpanel.
|
|
{$EXTERNALSYM REST_NOSMMYMUSIC}
|
|
REST_NOSMMYMUSIC = $40000066; // don't show MyMusic folder in startpanel
|
|
{$EXTERNALSYM REST_NOSMEJECTPC}
|
|
REST_NOSMEJECTPC = $40000067; // don't show "Undoc PC" command in startmenu
|
|
{$EXTERNALSYM REST_NOSMMOREPROGRAMS}
|
|
REST_NOSMMOREPROGRAMS = $40000068; // don't show "More Programs" button in StartPanel.
|
|
{$EXTERNALSYM REST_NOSMMFUPROGRAMS}
|
|
REST_NOSMMFUPROGRAMS = $40000069; // don't show the MFU programs list in StartPanel.
|
|
{$EXTERNALSYM REST_NOTRAYITEMSDISPLAY}
|
|
REST_NOTRAYITEMSDISPLAY = $4000006A; // disables the display of the system tray
|
|
{$EXTERNALSYM REST_NOTOOLBARSONTASKBAR}
|
|
REST_NOTOOLBARSONTASKBAR = $4000006B; // disables toolbar display on the taskbar
|
|
{$EXTERNALSYM REST_NOSMCONFIGUREPROGRAMS}
|
|
REST_NOSMCONFIGUREPROGRAMS = $4000006F; // No Configure Programs on Settings Menu
|
|
{$EXTERNALSYM REST_HIDECLOCK}
|
|
REST_HIDECLOCK = $40000070; // don't show the clock
|
|
{$EXTERNALSYM REST_NOLOWDISKSPACECHECKS}
|
|
REST_NOLOWDISKSPACECHECKS = $40000071; // disable the low disk space checking
|
|
{$EXTERNALSYM REST_NOENTIRENETWORK}
|
|
REST_NOENTIRENETWORK = $40000072; // removes the "Entire Network" link (i.e. from "My Network Places")
|
|
{$EXTERNALSYM REST_NODESKTOPCLEANUP}
|
|
REST_NODESKTOPCLEANUP = $40000073; // disable the desktop cleanup wizard
|
|
{$EXTERNALSYM REST_BITBUCKNUKEONDELETE}
|
|
REST_BITBUCKNUKEONDELETE = $40000074; // disables recycling of files
|
|
{$EXTERNALSYM REST_BITBUCKCONFIRMDELETE}
|
|
REST_BITBUCKCONFIRMDELETE = $40000075; // always show the delete confirmation dialog when deleting files
|
|
{$EXTERNALSYM REST_BITBUCKNOPROP}
|
|
REST_BITBUCKNOPROP = $40000076; // disables Properties on Recycle Bin's context menu
|
|
{$EXTERNALSYM REST_NODISPBACKGROUND}
|
|
REST_NODISPBACKGROUND = $40000077; // disables the Desktop tab in the Display CPL
|
|
{$EXTERNALSYM REST_NODISPSCREENSAVEPG}
|
|
REST_NODISPSCREENSAVEPG = $40000078; // disables the Screen Saver tab in the Display CPL
|
|
{$EXTERNALSYM REST_NODISPSETTINGSPG}
|
|
REST_NODISPSETTINGSPG = $40000079; // disables the Settings tab in the Display CPL
|
|
{$EXTERNALSYM REST_NODISPSCREENSAVEPREVIEW}
|
|
REST_NODISPSCREENSAVEPREVIEW = $4000007A; // disables the screen saver on the Screen Saver tab in the Display CPL
|
|
{$EXTERNALSYM REST_NODISPLAYCPL}
|
|
REST_NODISPLAYCPL = $4000007B; // disables the Display CPL
|
|
{$EXTERNALSYM REST_HIDERUNASVERB}
|
|
REST_HIDERUNASVERB = $4000007C; // hides the "Run As..." context menu item
|
|
{$EXTERNALSYM REST_NOTHUMBNAILCACHE}
|
|
REST_NOTHUMBNAILCACHE = $4000007D; // disables use of the thumbnail cache
|
|
{$EXTERNALSYM REST_NOSTRCMPLOGICAL}
|
|
REST_NOSTRCMPLOGICAL = $4000007E; // dont use StrCmpLogical() instead use default CompareString()
|
|
{$EXTERNALSYM REST_NOPUBLISHWIZARD}
|
|
REST_NOPUBLISHWIZARD = $4000007F; // disables publishing wizard (WPW)
|
|
{$EXTERNALSYM REST_NOONLINEPRINTSWIZARD}
|
|
REST_NOONLINEPRINTSWIZARD = $40000080; // disables online prints wizard (OPW)
|
|
{$EXTERNALSYM REST_NOWEBSERVICES}
|
|
REST_NOWEBSERVICES = $40000081; // disables the web specified services for both OPW and WPW
|
|
{$EXTERNALSYM REST_ALLOWUNHASHEDWEBVIEW}
|
|
REST_ALLOWUNHASHEDWEBVIEW = $40000082; // allow the user to be promted to accept web view templates that don't already have an md5 hash in the registry
|
|
{$EXTERNALSYM REST_ALLOWLEGACYWEBVIEW}
|
|
REST_ALLOWLEGACYWEBVIEW = $40000083; // allow legacy webview template to be shown.
|
|
{$EXTERNALSYM REST_REVERTWEBVIEWSECURITY}
|
|
REST_REVERTWEBVIEWSECURITY = $40000084; // disable added webview security measures (revert to w2kfunctionality).
|
|
{$EXTERNALSYM REST_INHERITCONSOLEHANDLES}
|
|
REST_INHERITCONSOLEHANDLES = $40000086; // ShellExec() will check for the current process and target process being console processes to inherit handles
|
|
{$EXTERNALSYM REST_SORTMAXITEMCOUNT}
|
|
REST_SORTMAXITEMCOUNT = $40000087; // Do not sort views with more items than this key. Useful for viewing big amount of files in one folder.
|
|
{$EXTERNALSYM REST_NOREMOTERECURSIVEEVENTS}
|
|
REST_NOREMOTERECURSIVEEVENTS = $40000089; // Dont register network change events recursively to avoid network traffic
|
|
{$EXTERNALSYM REST_NOREMOTECHANGENOTIFY}
|
|
REST_NOREMOTECHANGENOTIFY = $40000091; // Do not register for remote change notifies
|
|
{$EXTERNALSYM REST_NOSIMPLENETIDLIST}
|
|
REST_NOSIMPLENETIDLIST = $40000092; // No simple network IDLists
|
|
{$EXTERNALSYM REST_NOENUMENTIRENETWORK}
|
|
REST_NOENUMENTIRENETWORK = $40000093; // Don't enumerate entire network if we happen to get to it (in conjunction with REST_NOENTIRENETWORK)
|
|
{$EXTERNALSYM REST_NODETAILSTHUMBNAILONNETWORK}
|
|
REST_NODETAILSTHUMBNAILONNETWORK = $40000094; // Disable Thumbnail for Network files in DUI Details pane
|
|
{$EXTERNALSYM REST_NOINTERNETOPENWITH}
|
|
REST_NOINTERNETOPENWITH = $40000095; // dont allow looking on the internet for file associations
|
|
{$EXTERNALSYM REST_ALLOWLEGACYLMZBEHAVIOR}
|
|
REST_ALLOWLEGACYLMZBEHAVIOR = $4000009A; // allowable LMZ behavior for ActiveX objects changed in XPSP2 ; this policy gets the pre-XPSP2 behavior
|
|
{$EXTERNALSYM REST_DONTRETRYBADNETNAME}
|
|
REST_DONTRETRYBADNETNAME = $4000009B; // In Network Places: if provider returns ERROR_BAD_NET_NAME ; give up
|
|
{$EXTERNALSYM REST_ALLOWFILECLSIDJUNCTIONS}
|
|
REST_ALLOWFILECLSIDJUNCTIONS = $4000009C; // re-enable legacy support for file. { guid } junctions in FileSystem Folder
|
|
{$EXTERNALSYM REST_NOUPNPINSTALL}
|
|
REST_NOUPNPINSTALL = $4000009D; // disable "install UPnP" task in My Net Places
|
|
{$EXTERNALSYM REST_NODISCONNECT}
|
|
REST_NODISCONNECT = $41000001; // No Disconnect option in Start menu
|
|
{$EXTERNALSYM REST_NOSECURITY}
|
|
REST_NOSECURITY = $41000002; // No Security option in start menu
|
|
{$EXTERNALSYM REST_NOFILEASSOCIATE}
|
|
REST_NOFILEASSOCIATE = $41000003; // Do not allow user to change file association
|
|
{$EXTERNALSYM REST_ALLOWCOMMENTTOGGLE}
|
|
REST_ALLOWCOMMENTTOGGLE = $41000004; // Allow the user to toggle the positions of the Comment and the Computer Name
|
|
{$EXTERNALSYM REST_USEDESKTOPINICACHE}
|
|
REST_USEDESKTOPINICACHE = $41000005; // Cache desktop.ini entries from network folders
|
|
|
|
{$EXTERNALSYM OpenRegStream}
|
|
function OpenRegStream(hkey: HKEY; pszSubkey, pszValue: PWideChar;
|
|
grfMode: DWORD): IStream; stdcall;
|
|
{$EXTERNALSYM SHFindFiles}
|
|
function SHFindFiles(pidlFolder, pidlSaveFile: PItemIDList): BOOL; stdcall;
|
|
{$EXTERNALSYM PathGetShortPath}
|
|
procedure PathGetShortPath(pszLongPath: PWideChar); stdcall;
|
|
{$EXTERNALSYM PathYetAnotherMakeUniqueName}
|
|
function PathYetAnotherMakeUniqueName(
|
|
pszUniqueName, pszPath, pszShort, pszFileSpec: PWideChar): BOOL; stdcall;
|
|
{$EXTERNALSYM Win32DeleteFile}
|
|
function Win32DeleteFile(pszPath: PWideChar): BOOL; stdcall;
|
|
|
|
const
|
|
//
|
|
// Path processingfunction
|
|
//
|
|
{$EXTERNALSYM PPCF_ADDQUOTES}
|
|
PPCF_ADDQUOTES = $00000001; // return a quoted name if required
|
|
{$EXTERNALSYM PPCF_ADDARGUMENTS}
|
|
PPCF_ADDARGUMENTS = $00000003; // appends arguments (and wraps in quotes if required)
|
|
{$EXTERNALSYM PPCF_NODIRECTORIES}
|
|
PPCF_NODIRECTORIES = $00000010; // don't match to directories
|
|
{$EXTERNALSYM PPCF_FORCEQUALIFY}
|
|
PPCF_FORCEQUALIFY = $00000040; // qualify even non-relative names
|
|
{$EXTERNALSYM PPCF_LONGESTPOSSIBLE}
|
|
PPCF_LONGESTPOSSIBLE = $00000080; // always find the longest possible name
|
|
|
|
{$EXTERNALSYM PathProcessCommand}
|
|
function PathProcessCommand(lpSrc, lpDest: PWideChar;
|
|
iMax: Integer; dwFlags: DWORD): Longint stdcall;
|
|
{$EXTERNALSYM SHRestricted}
|
|
function SHRestricted(rest: TRestrictions): DWORD; stdcall;
|
|
{$EXTERNALSYM SignalFileOpen}
|
|
function SignalFileOpen(pidl: PItemIDList): BOOL; stdcall;
|
|
{$EXTERNALSYM SHSimpleIDListFromPath}
|
|
function SHSimpleIDListFromPath(pszPath: PWideChar): PItemIDList; stdcall;
|
|
|
|
{$EXTERNALSYM SHLoadOLE}
|
|
function SHLoadOLE(lParam: LPARAM): HResult stdcall;
|
|
|
|
{$EXTERNALSYM SHStartNetConnectionDialogA}
|
|
function SHStartNetConnectionDialogA(hwnd: HWND; pszRemoteName: PAnsiChar;
|
|
dwType: DWORD): HResult; stdcall;
|
|
{$EXTERNALSYM SHStartNetConnectionDialogW}
|
|
function SHStartNetConnectionDialogW(hwnd: HWND; pszRemoteName: PWideChar;
|
|
dwType: DWORD): HResult; stdcall;
|
|
{$EXTERNALSYM SHStartNetConnectionDialog}
|
|
function SHStartNetConnectionDialog(hwnd: HWND; pszRemoteName: PTSTR;
|
|
dwType: DWORD): HResult; stdcall;
|
|
|
|
{$EXTERNALSYM SHDefExtractIconA}
|
|
function SHDefExtractIconA(pszIconFile: PAnsiChar; iIndex: Integer;
|
|
uFlags: UINT; out phiconLarge, phiconSmall: HICON;
|
|
nIconSize: UINT): HResult; stdcall;
|
|
{$EXTERNALSYM SHDefExtractIconW}
|
|
function SHDefExtractIconW(pszIconFile: PWideChar; iIndex: Integer;
|
|
uFlags: UINT; out phiconLarge, phiconSmall: HICON;
|
|
nIconSize: UINT): HResult; stdcall;
|
|
{$EXTERNALSYM SHDefExtractIcon}
|
|
function SHDefExtractIcon(pszIconFile: PTSTR; iIndex: Integer;
|
|
uFlags: UINT; out phiconLarge, phiconSmall: HICON;
|
|
nIconSize: UINT): HResult; stdcall;
|
|
{$EXTERNALSYM Shell_GetImageLists}
|
|
function Shell_GetImageLists(out phiml, phimlSmall: HIMAGELIST): BOOL; stdcall;
|
|
{$EXTERNALSYM Shell_GetCachedImageIndex}
|
|
function Shell_GetCachedImageIndex(pszIconPath: PWideChar;
|
|
iIconIndex: Integer; uIconFlags: UINT): Integer; stdcall;
|
|
|
|
type
|
|
//
|
|
// IDocViewSite
|
|
//
|
|
{$EXTERNALSYM IDocViewSite}
|
|
IDocViewSite = interface(IUnknown)
|
|
['{87D605E0-C511-11CF-89A9-00A0C9054129}']
|
|
function OnSetTitle(pvTitle: PVARIANTARG): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM VALIDATEUNC_NOUI}
|
|
VALIDATEUNC_NOUI = $0002; // don't bring up UI
|
|
{$EXTERNALSYM VALIDATEUNC_CONNECT}
|
|
VALIDATEUNC_CONNECT = $0001; // connect a drive letter
|
|
{$EXTERNALSYM VALIDATEUNC_PRINT}
|
|
VALIDATEUNC_PRINT = $0004; // validate as print share instead of disk share
|
|
{$EXTERNALSYM VALIDATEUNC_VALID}
|
|
VALIDATEUNC_VALID = $0007; // valid flags
|
|
|
|
{$EXTERNALSYM SHValidateUNC}
|
|
function SHValidateUNC(hwndOwner: HWND; pszFile: PWideChar; fConnect: UINT): BOOL; stdcall;
|
|
|
|
const
|
|
{$EXTERNALSYM OPENPROPS_NONE}
|
|
OPENPROPS_NONE = $0000;
|
|
{$EXTERNALSYM OPENPROPS_INHIBITPIF}
|
|
OPENPROPS_INHIBITPIF = $8000;
|
|
{$EXTERNALSYM GETPROPS_NONE}
|
|
GETPROPS_NONE = $0000;
|
|
{$EXTERNALSYM SETPROPS_NONE}
|
|
SETPROPS_NONE = $0000;
|
|
{$EXTERNALSYM CLOSEPROPS_NONE}
|
|
CLOSEPROPS_NONE = $0000;
|
|
{$EXTERNALSYM CLOSEPROPS_DISCARD}
|
|
CLOSEPROPS_DISCARD = $0001;
|
|
|
|
{$EXTERNALSYM PIFNAMESIZE}
|
|
PIFNAMESIZE = 30;
|
|
{$EXTERNALSYM PIFSTARTLOCSIZE}
|
|
PIFSTARTLOCSIZE= 63;
|
|
{$EXTERNALSYM PIFDEFPATHSIZE}
|
|
PIFDEFPATHSIZE = 64;
|
|
{$EXTERNALSYM PIFPARAMSSIZE}
|
|
PIFPARAMSSIZE = 64;
|
|
{$EXTERNALSYM PIFSHPROGSIZE}
|
|
PIFSHPROGSIZE = 64;
|
|
{$EXTERNALSYM PIFSHDATASIZE}
|
|
PIFSHDATASIZE = 64;
|
|
{$EXTERNALSYM PIFDEFFILESIZE}
|
|
PIFDEFFILESIZE = 80;
|
|
{$EXTERNALSYM PIFMAXFILEPATH}
|
|
PIFMAXFILEPATH = 260;
|
|
|
|
type
|
|
PPropPrg = ^TPropPrg;
|
|
{$EXTERNALSYM PROPPRG}
|
|
PROPPRG = record (* prg *)
|
|
flPrg: Word; // see PRG_ flags
|
|
flPrgInit: Word; // see PRGINIT_ flags
|
|
achTitle: array[0..PIFNAMESIZE - 1] of AnsiChar; // name[30]
|
|
achCmdLine: array[0..PIFSTARTLOCSIZE + PIFPARAMSSIZE] of AnsiChar; // startfile[63] + params[64]
|
|
achWorkDir: array[0..PIFDEFPATHSIZE - 1] of AnsiChar; // defpath[64]
|
|
wHotKey: Word; // PfHotKeyScan thru PfHotKeyVal
|
|
achIconFile: array[0..PIFDEFFILESIZE - 1] of AnsiChar; // name of file containing icon
|
|
wIconIndex: Word; // index of icon within file
|
|
dwEnhModeFlags: DWORD; // reserved enh-mode flags
|
|
dwRealModeFlags: DWORD; // real-mode flags (see RMOPT_*)
|
|
achOtherFile: array[0..PIFDEFFILESIZE - 1] of AnsiChar; // name of "other" file in directory
|
|
achPIFFile: array[0..PIFMAXFILEPATH - 1] of AnsiChar; // name of PIF file
|
|
end;
|
|
TPropPrg = PROPPRG;
|
|
|
|
{$EXTERNALSYM PifMgr_OpenProperties}
|
|
function PifMgr_OpenProperties(pszApp, pszPIF: PWideChar;
|
|
hInf, flOpt: UINT): THandle; stdcall;
|
|
{$EXTERNALSYM PifMgr_GetProperties}
|
|
function PifMgr_GetProperties(hProps: THandle; pszGroup: PAnsiChar;
|
|
lpProps: Pointer; cbProps: Integer; flOpt: UINT): Integer; stdcall;
|
|
{$EXTERNALSYM PifMgr_SetProperties}
|
|
function PifMgr_SetProperties(hProps: THandle; pszGroup: PAnsiChar;
|
|
lpProps: Pointer; cbProps: Integer; flOpt: UINT): Integer; stdcall;
|
|
{$EXTERNALSYM PifMgr_CloseProperties}
|
|
function PifMgr_CloseProperties(hProps: THandle;
|
|
flOpt: UINT): THandle; stdcall;
|
|
|
|
{$EXTERNALSYM SHSetInstanceExplorer}
|
|
procedure SHSetInstanceExplorer(punk: IUnknown); stdcall;
|
|
{$EXTERNALSYM IsUserAnAdmin}
|
|
function IsUserAnAdmin: BOOL; stdcall;
|
|
|
|
type
|
|
{$EXTERNALSYM IInitializeObject}
|
|
IInitializeObject = interface(IUnknown)
|
|
// ['{}'] IID_InitializeObject unknown
|
|
function Initialize: HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM BMICON_LARGE}
|
|
BMICON_LARGE = 0;
|
|
{$EXTERNALSYM BMICON_SMALL}
|
|
BMICON_SMALL = 1;
|
|
|
|
type
|
|
{$EXTERNALSYM IBanneredBar}
|
|
IBanneredBar = interface(IUnknown)
|
|
['{596A9A94-013E-11D1-8D34-00A0C90F2719}']
|
|
function SetIconSize(iIcon: DWORD): HResult; stdcall;
|
|
function GetIconSize(out piIcon: DWORD): HResult; stdcall;
|
|
function SetBitmap(hBitmap: HBITMAP): HResult; stdcall;
|
|
function GetBitmap(out phBitmap: HBITMAP): HResult; stdcall;
|
|
end;
|
|
|
|
{$EXTERNALSYM SHShellFolderView_Message}
|
|
function SHShellFolderView_Message(hwndMain: HWND; uMsg: UINT; lParam: LPARAM): LRESULT; stdcall;
|
|
|
|
type
|
|
//
|
|
// Callback interface for the IShellFolderView
|
|
//
|
|
{$EXTERNALSYM IShellFolderViewCB}
|
|
IShellFolderViewCB = interface(IUnknown)
|
|
['{2047E320-F2A9-11CE-AE65-08002B2E1262}']
|
|
function MessageSFVCB(uMsg: UINT; wParam: WPARAM; lParam: LPARAM): HResult; stdcall;
|
|
end;
|
|
|
|
const
|
|
{$EXTERNALSYM QCMINFO_PLACE_BEFORE}
|
|
QCMINFO_PLACE_BEFORE = 0;
|
|
{$EXTERNALSYM QCMINFO_PLACE_AFTER}
|
|
QCMINFO_PLACE_AFTER = 1;
|
|
|
|
type
|
|
PQCMInfoIDMapPlacement = ^TQCMInfoIDMapPlacement;
|
|
{$EXTERNALSYM _QCMINFO_IDMAP_PLACEMENT}
|
|
_QCMINFO_IDMAP_PLACEMENT = record
|
|
id: UINT;
|
|
fFlags: UINT;
|
|
end;
|
|
{$EXTERNALSYM QCMINFO_IDMAP_PLACEMENT}
|
|
QCMINFO_IDMAP_PLACEMENT = _QCMINFO_IDMAP_PLACEMENT;
|
|
TQCMInfoIDMapPlacement = _QCMINFO_IDMAP_PLACEMENT;
|
|
|
|
PQCMInfoIDmap = ^TQCMInfoIDMap;
|
|
{$EXTERNALSYM _QCMINFO_IDMAP}
|
|
_QCMINFO_IDMAP = record
|
|
nMaxIds: UINT;
|
|
pIdList: array[0..0] of QCMINFO_IDMAP_PLACEMENT;
|
|
end;
|
|
{$EXTERNALSYM QCMINFO_IDMAP}
|
|
QCMINFO_IDMAP = _QCMINFO_IDMAP;
|
|
TQCMInfoIDMap = _QCMINFO_IDMAP;
|
|
|
|
PQCMInfo = ^TQCMInfo;
|
|
{$EXTERNALSYM _QCMINFO}
|
|
_QCMINFO = record
|
|
hmenu: HMENU; // in
|
|
indexMenu: UINT; // in
|
|
idCmdFirst: UINT; // in/out
|
|
idCmdLast: UINT; // in
|
|
pIdMap: PQCMInfoIDMap; // in / unused
|
|
end;
|
|
{$EXTERNALSYM QCMINFO}
|
|
QCMINFO = _QCMINFO;
|
|
TQCMInfo = _QCMINFO;
|
|
|
|
const
|
|
// TBINFO flags
|
|
{$EXTERNALSYM TBIF_APPEND}
|
|
TBIF_APPEND = 0;
|
|
{$EXTERNALSYM TBIF_PREPEND}
|
|
TBIF_PREPEND = 1;
|
|
{$EXTERNALSYM TBIF_REPLACE}
|
|
TBIF_REPLACE = 2;
|
|
{$EXTERNALSYM TBIF_DEFAULT}
|
|
TBIF_DEFAULT = $00000000;
|
|
{$EXTERNALSYM TBIF_INTERNETBAR}
|
|
TBIF_INTERNETBAR = $00010000;
|
|
{$EXTERNALSYM TBIF_STANDARDTOOLBAR}
|
|
TBIF_STANDARDTOOLBAR = $00020000;
|
|
{$EXTERNALSYM TBIF_NOTOOLBAR}
|
|
TBIF_NOTOOLBAR = $00030000;
|
|
|
|
type
|
|
PTBInfo = ^TTBInfo;
|
|
{$EXTERNALSYM _TBINFO}
|
|
_TBINFO = record
|
|
cbuttons: UINT; // out
|
|
uFlags: UINT; // out (one of TBIF_ flags)
|
|
end;
|
|
{$EXTERNALSYM TBINFO}
|
|
TBINFO = _TBINFO;
|
|
TTBInfo = _TBINFO;
|
|
|
|
PDetailsInfo = ^TDetailsInfo;
|
|
{$EXTERNALSYM _DETAILSINFO}
|
|
_DETAILSINFO = record
|
|
pidl: PItemIDList;
|
|
fmt: Integer;
|
|
cxChar: Integer;
|
|
str: TStrRet;
|
|
iImage: Integer;
|
|
end;
|
|
{$EXTERNALSYM DETAILSINFO}
|
|
DETAILSINFO = _DETAILSINFO;
|
|
TDetailsInfo = _DETAILSINFO;
|
|
|
|
PSFVMPropPageData = ^TSFVMPropPageData;
|
|
{$EXTERNALSYM _SFVM_PROPPAGE_DATA}
|
|
_SFVM_PROPPAGE_DATA = record
|
|
dwReserved: DWORD;
|
|
pfn: TFnAddPropSheetPage;
|
|
lParam: LPARAM;
|
|
end;
|
|
{$EXTERNALSYM SFVM_PROPPAGE_DATA}
|
|
SFVM_PROPPAGE_DATA = _SFVM_PROPPAGE_DATA;
|
|
TSFVMPropPageData = _SFVM_PROPPAGE_DATA;
|
|
|
|
PSFVMHelpTopicData = ^TSFVMHelpTopicData;
|
|
{$EXTERNALSYM _SFVM_HELPTOPIC_DATA}
|
|
_SFVM_HELPTOPIC_DATA = record
|
|
wszHelpFile: array[0..MAX_PATH - 1] of WideChar;
|
|
wszHelpTopic: array[0..MAX_PATH - 1] of WideChar;
|
|
end;
|
|
{$EXTERNALSYM SFVM_HELPTOPIC_DATA}
|
|
SFVM_HELPTOPIC_DATA = _SFVM_HELPTOPIC_DATA;
|
|
TSFVMHelpTopicData = _SFVM_HELPTOPIC_DATA;
|
|
|
|
const
|
|
// uMsg wParam lParam
|
|
{$EXTERNALSYM SFVM_MERGEMENU}
|
|
SFVM_MERGEMENU = 1; // - LPQCMINFO
|
|
{$EXTERNALSYM SFVM_INVOKECOMMAND}
|
|
SFVM_INVOKECOMMAND = 2; // idCmd -
|
|
{$EXTERNALSYM SFVM_GETHELPTEXT}
|
|
SFVM_GETHELPTEXT = 3; // idCmd,cchMax pszText
|
|
{$EXTERNALSYM SFVM_GETTOOLTIPTEXT}
|
|
SFVM_GETTOOLTIPTEXT = 4; // idCmd,cchMax pszText
|
|
{$EXTERNALSYM SFVM_GETBUTTONINFO}
|
|
SFVM_GETBUTTONINFO = 5; // - LPTBINFO
|
|
{$EXTERNALSYM SFVM_GETBUTTONS}
|
|
SFVM_GETBUTTONS = 6; // idCmdFirst,cbtnMax LPTBBUTTON
|
|
{$EXTERNALSYM SFVM_INITMENUPOPUP}
|
|
SFVM_INITMENUPOPUP = 7; // idCmdFirst,nIndex hmenu
|
|
{$EXTERNALSYM SFVM_FSNOTIFY}
|
|
SFVM_FSNOTIFY = 14; // PItemIDList* lEvent
|
|
{$EXTERNALSYM SFVM_WINDOWCREATED}
|
|
SFVM_WINDOWCREATED = 15; // hwnd -
|
|
{$EXTERNALSYM SFVM_GETDETAILSOF}
|
|
SFVM_GETDETAILSOF = 23; // iColumn DETAILSINFO*
|
|
{$EXTERNALSYM SFVM_COLUMNCLICK}
|
|
SFVM_COLUMNCLICK = 24; // iColumn -
|
|
{$EXTERNALSYM SFVM_QUERYFSNOTIFY}
|
|
SFVM_QUERYFSNOTIFY = 25; // - SHChangeNotifyEntry *
|
|
{$EXTERNALSYM SFVM_DEFITEMCOUNT}
|
|
SFVM_DEFITEMCOUNT = 26; // - UINT*
|
|
{$EXTERNALSYM SFVM_DEFVIEWMODE}
|
|
SFVM_DEFVIEWMODE = 27; // - FOLDERVIEWMODE*
|
|
{$EXTERNALSYM SFVM_UNMERGEMENU}
|
|
SFVM_UNMERGEMENU = 28; // - hmenu
|
|
{$EXTERNALSYM SFVM_UPDATESTATUSBAR}
|
|
SFVM_UPDATESTATUSBAR = 31; // fInitialize -
|
|
{$EXTERNALSYM SFVM_BACKGROUNDENUM}
|
|
SFVM_BACKGROUNDENUM = 32; // - -
|
|
{$EXTERNALSYM SFVM_DIDDRAGDROP}
|
|
SFVM_DIDDRAGDROP = 36; // dwEffect IDataObject *
|
|
{$EXTERNALSYM SFVM_SETISFV}
|
|
SFVM_SETISFV = 39; // - IShellFolderView*
|
|
{$EXTERNALSYM SFVM_THISIDLIST}
|
|
SFVM_THISIDLIST = 41; // - LPITMIDLIST*
|
|
{$EXTERNALSYM SFVM_ADDPROPERTYPAGES}
|
|
SFVM_ADDPROPERTYPAGES = 47; // - SFVM_PROPPAGE_DATA *
|
|
{$EXTERNALSYM SFVM_BACKGROUNDENUMDONE}
|
|
SFVM_BACKGROUNDENUMDONE = 48; // - -
|
|
{$EXTERNALSYM SFVM_GETNOTIFY}
|
|
SFVM_GETNOTIFY = 49; // PItemIDList* Longint*
|
|
{$EXTERNALSYM SFVM_GETSORTDEFAULTS}
|
|
SFVM_GETSORTDEFAULTS = 53; // iDirection iParamSort
|
|
{$EXTERNALSYM SFVM_SIZE}
|
|
SFVM_SIZE = 57; // - -
|
|
{$EXTERNALSYM SFVM_GETZONE}
|
|
SFVM_GETZONE = 58; // - DWORD*
|
|
{$EXTERNALSYM SFVM_GETPANE}
|
|
SFVM_GETPANE = 59; // Pane ID DWORD*
|
|
{$EXTERNALSYM SFVM_GETHELPTOPIC}
|
|
SFVM_GETHELPTOPIC = 63; // - SFVM_HELPTOPIC_DATA *
|
|
{$EXTERNALSYM SFVM_GETANIMATION}
|
|
SFVM_GETANIMATION = 68; // HINSTANCE * WideChar *
|
|
|
|
type
|
|
// SHCreateShellFolderView struct
|
|
PSFVCreate = ^TSFVCreate;
|
|
{$EXTERNALSYM _SFV_CREATE}
|
|
_SFV_CREATE = record
|
|
cbSize: UINT;
|
|
pshf: IShellFolder;
|
|
psvOuter: IShellView;
|
|
psfvcb: IShellFolderViewCB; // No callback if NULL
|
|
end;
|
|
{$EXTERNALSYM SFV_CREATE}
|
|
SFV_CREATE = _SFV_CREATE;
|
|
TSFVCreate = _SFV_CREATE;
|
|
|
|
{$EXTERNALSYM SHCreateShellFolderView}
|
|
function SHCreateShellFolderView(const pcsfv: TSFVCreate;
|
|
out ppsv: IShellView): HResult; stdcall;
|
|
|
|
type
|
|
{$EXTERNALSYM LPFNDFMCALLBACK}
|
|
LPFNDFMCALLBACK = function(psf: IShellFolder; hwnd: HWND;
|
|
pdtobj: IDataObject; uMsg: UINT; wParam: WPARAM;
|
|
lParam: LPARAM): HResult stdcall;
|
|
TFnDFMCallback = LPFNDFMCALLBACK;
|
|
|
|
THKEYArray = array[0..65535] of HKEY;
|
|
PHKEYArray = ^THKEYArray;
|
|
|
|
{$EXTERNALSYM CDefFolderMenu_Create2}
|
|
function CDefFolderMenu_Create2(pidlFolder: PItemIDList; hwnd: HWND;
|
|
cidl: UINT; apidl: PPItemIDListArray; psf: IShellFolder;
|
|
lpfn: TFnDFMCallback; nKeys: UINT; var ahkeyClsKeys: HKEY;
|
|
var ppcm: IContextMenu): HResult; stdcall;
|
|
|
|
{$EXTERNALSYM SHOpenPropSheetA}
|
|
function SHOpenPropSheetA(pszCaption: PAnsiChar; ahkeys: PHKEYArray;
|
|
cikeys: UINT; const pclsidDefault: TCLSID; pdtobj: IDataObject;
|
|
psb: IShellBrowser; pStartPage: PAnsiChar): BOOL; stdcall;
|
|
{$EXTERNALSYM SHOpenPropSheetW}
|
|
function SHOpenPropSheetW(pszCaption: PWideChar; ahkeys: PHKEYArray;
|
|
cikeys: UINT; const pclsidDefault: TCLSID; pdtobj: IDataObject;
|
|
psb: IShellBrowser; pStartPage: PWideChar): BOOL; stdcall;
|
|
{$EXTERNALSYM SHOpenPropSheet}
|
|
function SHOpenPropSheet(pszCaption: PTSTR; ahkeys: PHKEYArray;
|
|
cikeys: UINT; const pclsidDefault: TCLSID; pdtobj: IDataObject;
|
|
psb: IShellBrowser; pStartPage: PTSTR): BOOL; stdcall;
|
|
|
|
const
|
|
// uMsg wParam lParam
|
|
{$EXTERNALSYM DFM_MERGECONTEXTMENU}
|
|
DFM_MERGECONTEXTMENU = 1; // uFlags LPQCMINFO
|
|
{$EXTERNALSYM DFM_INVOKECOMMAND}
|
|
DFM_INVOKECOMMAND = 2; // idCmd pszArgs
|
|
{$EXTERNALSYM DFM_GETDEFSTATICID}
|
|
DFM_GETDEFSTATICID = 14; // idCmd * 0
|
|
// Commands from DFM_INVOKECOMMAND when strings are passed in
|
|
{$EXTERNALSYM DFM_CMD_PROPERTIES}
|
|
DFM_CMD_PROPERTIES = UINT(-5);
|
|
|
|
type
|
|
{$EXTERNALSYM LPFNVIEWCALLBACK}
|
|
LPFNVIEWCALLBACK = function(psvOuter: IShellView; psf: IShellFolder;
|
|
hwndMain: HWND; uMsg: UINT; wParam: WPARAM;
|
|
lParam: LPARAM): HResult stdcall;
|
|
TFnViewCallback = LPFNVIEWCALLBACK;
|
|
|
|
// SHCreateShellFolderViewEx struct
|
|
PCSFV = ^TCSFV;
|
|
{$EXTERNALSYM _CSFV}
|
|
_CSFV = record
|
|
cbSize: UINT;
|
|
pshf: IShellFolder;
|
|
psvOuter: IShellView;
|
|
pidl: PItemIDList;
|
|
lEvents: Longint;
|
|
pfnCallback: TFnViewCallback; // No callback if NULL
|
|
fvm: TFolderViewMode;
|
|
end;
|
|
{$EXTERNALSYM CSFV}
|
|
CSFV = _CSFV;
|
|
TCSFV = _CSFV;
|
|
|
|
const
|
|
{$EXTERNALSYM SFVM_REARRANGE}
|
|
SFVM_REARRANGE = $00000001;
|
|
{$EXTERNALSYM SFVM_ADDOBJECT}
|
|
SFVM_ADDOBJECT = $00000003;
|
|
{$EXTERNALSYM SFVM_REMOVEOBJECT}
|
|
SFVM_REMOVEOBJECT = $00000006;
|
|
{$EXTERNALSYM SFVM_UPDATEOBJECT}
|
|
SFVM_UPDATEOBJECT = $00000007;
|
|
{$EXTERNALSYM SFVM_GETSELECTEDOBJECTS}
|
|
SFVM_GETSELECTEDOBJECTS = $00000009;
|
|
{$EXTERNALSYM SFVM_SETITEMPOS}
|
|
SFVM_SETITEMPOS = $0000000E;
|
|
{$EXTERNALSYM SFVM_SETCLIPBOARD}
|
|
SFVM_SETCLIPBOARD = $00000010;
|
|
{$EXTERNALSYM SFVM_SETPOINTS}
|
|
SFVM_SETPOINTS = $00000017;
|
|
|
|
// Tell the FolderView to rearrange. The lParam will be passed to
|
|
// IShellFolder::CompareIDs
|
|
{$EXTERNALSYM ShellFolderView_ReArrange}
|
|
function ShellFolderView_ReArrange(hwnd: HWND; lparam: LPARAM): BOOL; {inline;}
|
|
|
|
// Add an OBJECT into the view
|
|
{$EXTERNALSYM ShellFolderView_AddObject}
|
|
function ShellFolderView_AddObject(hwnd: HWND; pidl: PItemIDList): LPARAM;
|
|
{ inline;}
|
|
|
|
// Remove an OBJECT into the view
|
|
{$EXTERNALSYM ShellFolderView_RemoveObject}
|
|
function ShellFolderView_RemoveObject(hwnd: HWND; pidl: PItemIDList): LPARAM;
|
|
{inline;}
|
|
|
|
// updates an object by passing in pointer to two PIDLS, the first
|
|
// is the old pidl, the second one is the one with update information.
|
|
//
|
|
// _ppidl[1] must be a *copy* of a pidl, as control over the lifetime
|
|
// of the pidl belongs to the view after successful completion of
|
|
// this call. (Unsuccessful completion (a -1 return) implies failure
|
|
// and the caller must free the memory.) Win95 waits a while before
|
|
// freeing the pidl, IE4 frees the pidl immediately.
|
|
// IShellFolderView::UpdateObject does not suffer from this problem.
|
|
//
|
|
{$EXTERNALSYM ShellFolderView_UpdateObject}
|
|
function ShellFolderView_UpdateObject(hwnd: HWND;
|
|
ppidl: PPItemIDListArray): LPARAM;
|
|
|
|
// Returns an array of the selected IDS to the caller.
|
|
// lparam is a pointer to receive the idlists into
|
|
// return value is the count of items in the array.
|
|
{$EXTERNALSYM ShellFolderView_GetSelectedObjects}
|
|
function ShellFolderView_GetSelectedObjects(hwnd: HWND;
|
|
ppidl: PPItemIDListArray): LPARAM;
|
|
|
|
type
|
|
PSFVSetItemPos = ^TSFVSetItemPos;
|
|
{$EXTERNALSYM _SFV_SETITEMPOS}
|
|
_SFV_SETITEMPOS = record
|
|
pidl: PItemIDList;
|
|
pt: TPoint;
|
|
end;
|
|
{$EXTERNALSYM SFV_SETITEMPOS}
|
|
SFV_SETITEMPOS = _SFV_SETITEMPOS;
|
|
TSFVSetItemPos = _SFV_SETITEMPOS;
|
|
|
|
// Sets the position of an item in the viewer
|
|
// lparam is a pointer to a SVF_SETITEMPOS
|
|
// return value is unused
|
|
{$EXTERNALSYM ShellFolderView_SetItemPos}
|
|
procedure ShellFolderView_SetItemPos(hwnd: HWND; pidl: PItemIDList;
|
|
x, y: Integer); {inline;}
|
|
|
|
// Notifies a ShellView when one of its objects get put on the clipboard
|
|
// as a result of a menu command.
|
|
//
|
|
//
|
|
// lparam is the dwEffect (DROPEFFECT_MOVE, DROPEFFECT_COPY)
|
|
// return value is void.
|
|
{$EXTERNALSYM ShellFolderView_SetClipboard}
|
|
procedure ShellFolderView_SetClipboard(hwnd: HWND; dwEffect: DWORD); {inline;}
|
|
|
|
{$EXTERNALSYM ShellFolderView_SetPoints}
|
|
procedure ShellFolderView_SetPoints(hwnd: HWND; const pdtobj: IDataObject); {inline;}
|
|
|
|
{$EXTERNALSYM SHFind_InitMenuPopup}
|
|
function SHFind_InitMenuPopup(hmenu: HMENU; hwndOwner: HWND;
|
|
idCmdFirst, idCmdLast: UINT): IContextMenu; stdcall;
|
|
{$EXTERNALSYM SHCreateShellFolderViewEx}
|
|
function SHCreateShellFolderViewEx(var pcsfv: TCSFV; out ppsv: IShellView): HResult; stdcall;
|
|
|
|
//
|
|
// PROPIDs for Internet Shortcuts (FMTID_Intshcut) to be used with
|
|
// IPropertySetStorage/IPropertyStorage
|
|
//
|
|
// The known property ids and their OleVariant types are:
|
|
// PID_IS_URL [VT_LPWSTR] URL
|
|
// PID_IS_NAME [VT_LPWSTR] Name of the internet shortcut
|
|
// PID_IS_WORKINGDIR [VT_LPWSTR] Working directory for the shortcut
|
|
// PID_IS_HOTKEY [VT_UI2] Hotkey for the shortcut
|
|
// PID_IS_SHOWCMD [VT_I4] Show command for shortcut
|
|
// PID_IS_ICONINDEX [VT_I4] Index into file that has icon
|
|
// PID_IS_ICONFILE [VT_LPWSTR] File that has the icon
|
|
// PID_IS_WHATSNEW [VT_LPWSTR] What's New text
|
|
// PID_IS_AUTHOR [VT_LPWSTR] Author
|
|
// PID_IS_DESCRIPTION [VT_LPWSTR] Description text of site
|
|
// PID_IS_COMMENT [VT_LPWSTR] User annotated comment
|
|
//
|
|
const
|
|
{$EXTERNALSYM PID_IS_URL}
|
|
PID_IS_URL = 2;
|
|
{$EXTERNALSYM PID_IS_NAME}
|
|
PID_IS_NAME = 4;
|
|
{$EXTERNALSYM PID_IS_WORKINGDIR}
|
|
PID_IS_WORKINGDIR = 5;
|
|
{$EXTERNALSYM PID_IS_HOTKEY}
|
|
PID_IS_HOTKEY = 6;
|
|
{$EXTERNALSYM PID_IS_SHOWCMD}
|
|
PID_IS_SHOWCMD = 7;
|
|
{$EXTERNALSYM PID_IS_ICONINDEX}
|
|
PID_IS_ICONINDEX = 8;
|
|
{$EXTERNALSYM PID_IS_ICONFILE}
|
|
PID_IS_ICONFILE = 9;
|
|
{$EXTERNALSYM PID_IS_WHATSNEW}
|
|
PID_IS_WHATSNEW = 10;
|
|
{$EXTERNALSYM PID_IS_AUTHOR}
|
|
PID_IS_AUTHOR = 11;
|
|
{$EXTERNALSYM PID_IS_DESCRIPTION}
|
|
PID_IS_DESCRIPTION = 12;
|
|
{$EXTERNALSYM PID_IS_COMMENT}
|
|
PID_IS_COMMENT = 13;
|
|
|
|
//
|
|
// PROPIDs for Internet Sites (FMTID_InternetSite) to be used with
|
|
// IPropertySetStorage/IPropertyStorage
|
|
//
|
|
// The known property ids and their OleVariant types are:
|
|
// PID_INTSITE_WHATSNEW [VT_LPWSTR] What's New text
|
|
// PID_INTSITE_AUTHOR [VT_LPWSTR] Author
|
|
// PID_INTSITE_LASTVISIT [VT_FILETIME] Time site was last visited
|
|
// PID_INTSITE_LASTMOD [VT_FILETIME] Time site was last modified
|
|
// PID_INTSITE_VISITCOUNT [VT_UI4] Number of times user has visited
|
|
// PID_INTSITE_DESCRIPTION [VT_LPWSTR] Description text of site
|
|
// PID_INTSITE_COMMENT [VT_LPWSTR] User annotated comment
|
|
// PID_INTSITE_RECURSE [VT_UI4] Levels to recurse (0-3)
|
|
// PID_INTSITE_WATCH [VT_UI4] PIDISM_ flags
|
|
// PID_INTSITE_SUBSCRIPTION [VT_UI8] Subscription cookie
|
|
// PID_INTSITE_URL [VT_LPWSTR] URL
|
|
// PID_INTSITE_TITLE [VT_LPWSTR] Title
|
|
// PID_INTSITE_CODEPAGE [VT_UI4] Codepage of the document
|
|
// PID_INTSITE_TRACKING [VT_UI4] Tracking
|
|
// PID_INTSITE_ICONINDEX [VT_I4] Retrieve the index to the icon
|
|
// PID_INTSITE_ICONFILE [VT_LPWSTR] Retrieve the file containing the icon index.
|
|
//
|
|
{$EXTERNALSYM PID_INTSITE_WHATSNEW}
|
|
PID_INTSITE_WHATSNEW = 2;
|
|
{$EXTERNALSYM PID_INTSITE_AUTHOR}
|
|
PID_INTSITE_AUTHOR = 3;
|
|
{$EXTERNALSYM PID_INTSITE_LASTVISIT}
|
|
PID_INTSITE_LASTVISIT = 4;
|
|
{$EXTERNALSYM PID_INTSITE_LASTMOD}
|
|
PID_INTSITE_LASTMOD = 5;
|
|
{$EXTERNALSYM PID_INTSITE_VISITCOUNT}
|
|
PID_INTSITE_VISITCOUNT = 6;
|
|
{$EXTERNALSYM PID_INTSITE_DESCRIPTION}
|
|
PID_INTSITE_DESCRIPTION = 7;
|
|
{$EXTERNALSYM PID_INTSITE_COMMENT}
|
|
PID_INTSITE_COMMENT = 8;
|
|
{$EXTERNALSYM PID_INTSITE_FLAGS}
|
|
PID_INTSITE_FLAGS = 9;
|
|
{$EXTERNALSYM PID_INTSITE_CONTENTLEN}
|
|
PID_INTSITE_CONTENTLEN = 10;
|
|
{$EXTERNALSYM PID_INTSITE_CONTENTCODE}
|
|
PID_INTSITE_CONTENTCODE = 11;
|
|
{$EXTERNALSYM PID_INTSITE_RECURSE}
|
|
PID_INTSITE_RECURSE = 12;
|
|
{$EXTERNALSYM PID_INTSITE_WATCH}
|
|
PID_INTSITE_WATCH = 13;
|
|
{$EXTERNALSYM PID_INTSITE_SUBSCRIPTION}
|
|
PID_INTSITE_SUBSCRIPTION = 14;
|
|
{$EXTERNALSYM PID_INTSITE_URL}
|
|
PID_INTSITE_URL = 15;
|
|
{$EXTERNALSYM PID_INTSITE_TITLE}
|
|
PID_INTSITE_TITLE = 16;
|
|
{$EXTERNALSYM PID_INTSITE_CODEPAGE}
|
|
PID_INTSITE_CODEPAGE = 18;
|
|
{$EXTERNALSYM PID_INTSITE_TRACKING}
|
|
PID_INTSITE_TRACKING = 19;
|
|
{$EXTERNALSYM PID_INTSITE_ICONINDEX}
|
|
PID_INTSITE_ICONINDEX = 20;
|
|
{$EXTERNALSYM PID_INTSITE_ICONFILE}
|
|
PID_INTSITE_ICONFILE = 21;
|
|
|
|
// Flags for PID_IS_FLAGS
|
|
{$EXTERNALSYM PIDISF_RECENTLYCHANGED}
|
|
PIDISF_RECENTLYCHANGED = $00000001;
|
|
{$EXTERNALSYM PIDISF_CACHEDSTICKY}
|
|
PIDISF_CACHEDSTICKY = $00000002;
|
|
{$EXTERNALSYM PIDISF_CACHEIMAGES}
|
|
PIDISF_CACHEIMAGES = $00000010;
|
|
{$EXTERNALSYM PIDISF_FOLLOWALLLINKS}
|
|
PIDISF_FOLLOWALLLINKS = $00000020;
|
|
|
|
// Values for PID_INTSITE_WATCH
|
|
{$EXTERNALSYM PIDISM_GLOBAL}
|
|
PIDISM_GLOBAL = 0; // Monitor based on global setting
|
|
{$EXTERNALSYM PIDISM_WATCH}
|
|
PIDISM_WATCH = 1; // User says watch
|
|
{$EXTERNALSYM PIDISM_DONTWATCH}
|
|
PIDISM_DONTWATCH = 2; // User says don't watch
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
//
|
|
// The shell keeps track of some per-user state to handle display
|
|
// options that is of major interest to ISVs.
|
|
// The key one requested right now is "DoubleClickInWebView".
|
|
|
|
type
|
|
PShellStateA = ^TShellStateA;
|
|
{$EXTERNALSYM SHELLSTATEA}
|
|
SHELLSTATEA = record
|
|
Flags: DWORD;
|
|
{
|
|
BOOL fShowAllObjects : 1;
|
|
BOOL fShowExtensions : 1;
|
|
BOOL fNoConfirmRecycle : 1;
|
|
|
|
BOOL fShowSysFiles : 1;
|
|
BOOL fShowCompColor : 1;
|
|
BOOL fDoubleClickInWebView : 1;
|
|
BOOL fDesktopHTML : 1;
|
|
BOOL fWin95Classic : 1;
|
|
BOOL fDontPrettyPath : 1;
|
|
BOOL fShowAttribCol : 1; // No longer used, dead bit
|
|
BOOL fMapNetDrvBtn : 1;
|
|
BOOL fShowInfoTip : 1;
|
|
BOOL fHideIcons : 1;
|
|
BOOL fWebView : 1;
|
|
BOOL fFilter : 1;
|
|
BOOL fShowSuperHidden : 1;
|
|
BOOL fNoNetCrawling : 1;
|
|
}
|
|
dwWin95Unused: DWORD; // Win95 only - no longer supported pszHiddenFileExts
|
|
uWin95Unused: UINT; // Win95 only - no longer supported cbHiddenFileExts
|
|
|
|
// Note: Not a typo! This is a persisted structure so we cannot use LPARAM
|
|
lParamSort: Longint;
|
|
iSortDirection: Integer;
|
|
version: UINT;
|
|
|
|
// new for win2k. need notUsed var to calc the right size of ie4 struct
|
|
// FIELD_OFFSET does not work on bit fields
|
|
uNotUsed: UINT; // feel free to rename and use
|
|
Flags2: Word;
|
|
{
|
|
BOOL fSepProcess: 1;
|
|
|
|
// new for Whistler.
|
|
BOOL fStartPanelOn: 1; //Indicates if the Whistler StartPanel mode is ON or OFF.
|
|
|
|
BOOL fShowStartPage: 1; //Indicates if the Whistler StartPage on desktop is ON or OFF.
|
|
|
|
UINT fSpareFlags : 13;
|
|
}
|
|
end;
|
|
TShellStateA = SHELLSTATEA;
|
|
|
|
PShellStateW = ^TShellStateW;
|
|
{$EXTERNALSYM SHELLSTATEW}
|
|
SHELLSTATEW = record
|
|
Data: DWORD;
|
|
{
|
|
BOOL fShowAllObjects : 1;
|
|
BOOL fShowExtensions : 1;
|
|
BOOL fNoConfirmRecycle : 1;
|
|
BOOL fShowSysFiles : 1;
|
|
BOOL fShowCompColor : 1;
|
|
BOOL fDoubleClickInWebView : 1;
|
|
BOOL fDesktopHTML : 1;
|
|
BOOL fWin95Classic : 1;
|
|
BOOL fDontPrettyPath : 1;
|
|
BOOL fShowAttribCol : 1;
|
|
BOOL fMapNetDrvBtn : 1;
|
|
BOOL fShowInfoTip : 1;
|
|
BOOL fHideIcons : 1;
|
|
BOOL fWebView : 1;
|
|
BOOL fFilter : 1;
|
|
BOOL fShowSuperHidden : 1;
|
|
BOOL fNoNetCrawling : 1;
|
|
}
|
|
dwWin95Unused: DWORD; // Win95 only - no longer supported pszHiddenFileExts
|
|
uWin95Unused: UINT; // Win95 only - no longer supported cbHiddenFileExts
|
|
|
|
// Note: Not a typo! This is a persisted structure so we cannot use LPARAM
|
|
lParamSort: Longint;
|
|
iSortDirection: Integer;
|
|
version: UINT;
|
|
|
|
// new for win2k. need notUsed var to calc the right size of ie4 struct
|
|
// FIELD_OFFSET does not work on bit fields
|
|
uNotUsed: UINT; // feel free to rename and use
|
|
Flags2: Word;
|
|
{
|
|
BOOL fSepProcess: 1;
|
|
|
|
// new for Whistler.
|
|
BOOL fStartPanelOn: 1; //Indicates if the Whistler StartPage mode is ON or OFF.
|
|
|
|
BOOL fShowStartPage: 1; //Indicates if the Whistler StartPage on desktop is ON or OFF.
|
|
|
|
// If you need a new flag, steal a bit from from fSpareFlags.
|
|
UINT fSpareFlags : 13;
|
|
}
|
|
end;
|
|
TShellStateW = SHELLSTATEW;
|
|
|
|
PShellState = PShellStateA;
|
|
{$EXTERNALSYM SHELLSTATE}
|
|
SHELLSTATE = SHELLSTATEA;
|
|
TShellState = TShellStateA;
|
|
|
|
const
|
|
{$EXTERNALSYM SHELLSTATEVERSION_IE4}
|
|
SHELLSTATEVERSION_IE4 = 9;
|
|
{$EXTERNALSYM SHELLSTATEVERSION_WIN2K}
|
|
SHELLSTATEVERSION_WIN2K = 10;
|
|
|
|
var
|
|
{$EXTERNALSYM SHELLSTATE_SIZE_WIN95}
|
|
SHELLSTATE_SIZE_WIN95: Cardinal; //call InitShellStateSizes; before
|
|
{$EXTERNALSYM SHELLSTATE_SIZE_NT4}
|
|
SHELLSTATE_SIZE_NT4: Cardinal; //call InitShellStateSizes; before
|
|
{$EXTERNALSYM SHELLSTATE_SIZE_IE4}
|
|
SHELLSTATE_SIZE_IE4: Cardinal; //call InitShellStateSizes; before
|
|
{$EXTERNALSYM SHELLSTATE_SIZE_WIN2K}
|
|
SHELLSTATE_SIZE_WIN2K: Cardinal; //call InitShellStateSizes; before
|
|
|
|
{$EXTERNALSYM SHGetSetSettings}
|
|
procedure SHGetSetSettings(var lpss: TShellState; dwMask: DWORD;
|
|
bSet: BOOL); stdcall;
|
|
|
|
//
|
|
// SysFiles are these windows special files:
|
|
// "dll sys vxd 386 drv"
|
|
//
|
|
// hidden files are files with the FILE_ATTRIBUTE_HIDDEN attribute
|
|
//
|
|
// system files are files with the FILE_ATTRIBUTE_SYSTEM attribute
|
|
//
|
|
// fShowAllObjects fShowSysFiles Result
|
|
// --------------- ------------- ------
|
|
// 0 0 hide hidden + SysFiles + system files
|
|
// 0 1 hide hidden files.
|
|
// 1 0 show all files.
|
|
// 1 1 show all files.
|
|
//
|
|
type
|
|
PShellFlagState = ^TShellFlagState;
|
|
{$EXTERNALSYM SHELLFLAGSTATE}
|
|
SHELLFLAGSTATE = record
|
|
Data: DWORD; // C compiler says 4 bytes, so DWORD, not Word.
|
|
{
|
|
BOOL fShowAllObjects : 1;
|
|
BOOL fShowExtensions : 1;
|
|
BOOL fNoConfirmRecycle : 1;
|
|
BOOL fShowSysFiles : 1;
|
|
BOOL fShowCompColor : 1;
|
|
BOOL fDoubleClickInWebView : 1;
|
|
BOOL fDesktopHTML : 1;
|
|
BOOL fWin95Classic : 1;
|
|
BOOL fDontPrettyPath : 1;
|
|
BOOL fShowAttribCol : 1;
|
|
BOOL fMapNetDrvBtn : 1;
|
|
BOOL fShowInfoTip : 1;
|
|
BOOL fHideIcons : 1;
|
|
UINT fRestFlags : 3;
|
|
}
|
|
end;
|
|
TShellFlagState = SHELLFLAGSTATE;
|
|
|
|
const
|
|
{$EXTERNALSYM SSF_SHOWALLOBJECTS}
|
|
SSF_SHOWALLOBJECTS = $00000001;
|
|
{$EXTERNALSYM SSF_SHOWEXTENSIONS}
|
|
SSF_SHOWEXTENSIONS = $00000002;
|
|
{$EXTERNALSYM SSF_HIDDENFILEEXTS}
|
|
SSF_HIDDENFILEEXTS = $00000004;
|
|
{$EXTERNALSYM SSF_SERVERADMINUI}
|
|
SSF_SERVERADMINUI = $00000004;
|
|
{$EXTERNALSYM SSF_SHOWCOMPCOLOR}
|
|
SSF_SHOWCOMPCOLOR = $00000008;
|
|
{$EXTERNALSYM SSF_SORTCOLUMNS}
|
|
SSF_SORTCOLUMNS = $00000010;
|
|
{$EXTERNALSYM SSF_SHOWSYSFILES}
|
|
SSF_SHOWSYSFILES = $00000020;
|
|
{$EXTERNALSYM SSF_DOUBLECLICKINWEBVIEW}
|
|
SSF_DOUBLECLICKINWEBVIEW = $00000080;
|
|
{$EXTERNALSYM SSF_SHOWATTRIBCOL}
|
|
SSF_SHOWATTRIBCOL = $00000100;
|
|
{$EXTERNALSYM SSF_DESKTOPHTML}
|
|
SSF_DESKTOPHTML = $00000200;
|
|
{$EXTERNALSYM SSF_WIN95CLASSIC}
|
|
SSF_WIN95CLASSIC = $00000400;
|
|
{$EXTERNALSYM SSF_DONTPRETTYPATH}
|
|
SSF_DONTPRETTYPATH = $00000800;
|
|
{$EXTERNALSYM SSF_SHOWINFOTIP}
|
|
SSF_SHOWINFOTIP = $00002000;
|
|
{$EXTERNALSYM SSF_MAPNETDRVBUTTON}
|
|
SSF_MAPNETDRVBUTTON = $00001000;
|
|
{$EXTERNALSYM SSF_NOCONFIRMRECYCLE}
|
|
SSF_NOCONFIRMRECYCLE = $00008000;
|
|
{$EXTERNALSYM SSF_HIDEICONS}
|
|
SSF_HIDEICONS = $00004000;
|
|
{$EXTERNALSYM SSF_FILTER}
|
|
SSF_FILTER = $00010000;
|
|
{$EXTERNALSYM SSF_WEBVIEW}
|
|
SSF_WEBVIEW = $00020000;
|
|
{$EXTERNALSYM SSF_SHOWSUPERHIDDEN}
|
|
SSF_SHOWSUPERHIDDEN = $00040000;
|
|
{$EXTERNALSYM SSF_SEPPROCESS}
|
|
SSF_SEPPROCESS = $00080000;
|
|
{$EXTERNALSYM SSF_NONETCRAWLING}
|
|
SSF_NONETCRAWLING = $00100000;
|
|
{$EXTERNALSYM SSF_STARTPANELON}
|
|
SSF_STARTPANELON = $00200000;
|
|
{$EXTERNALSYM SSF_SHOWSTARTPAGE}
|
|
SSF_SHOWSTARTPAGE = $00400000;
|
|
|
|
// SHGetSettings(LPSHELLFLAGSTATE lpss, DWORD dwMask)
|
|
//
|
|
// Specify the bits you are interested in in dwMask and they will be
|
|
// filled out in the lpss structure.
|
|
//
|
|
// When these settings change, a WM_SETTINGCHANGE message is sent
|
|
// with the string lParam value of "ShellState".
|
|
//
|
|
{$EXTERNALSYM SHGetSettings}
|
|
procedure SHGetSettings(out lpsfs: TShellFlagState; dwMask: DWORD); stdcall;
|
|
|
|
// SHBindToParent(PItemIDList pidl, REFIID riid, void **ppv, PItemIDList *ppidlLast)
|
|
//
|
|
// Given a pidl, you can get an interface pointer (as specified by riid) of the pidl's parent folder (in ppv)
|
|
// If ppidlLast is non-NULL, you can also get the pidl of the last item.
|
|
//
|
|
{$EXTERNALSYM SHBindToParent}
|
|
function SHBindToParent(pidl: PItemIDList; const riid: TIID;
|
|
out ppv, ppidlLast: PPItemIDList): HResult; stdcall;
|
|
|
|
// SHSTDAPI SHParseDisplayName(PCWSTR pszName, IBindCtx *pbc, PItemIDList *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut)
|
|
//
|
|
// given a string it will call psfDesktop->ParseDisplayName() to try and create a pidl
|
|
// if no pbc specified, it uses the preferred options for parsing.
|
|
// this includes mapping file system paths to their appropriate aliased location (RegisterObjectParam(STR_PARSE_TRANSLATE_ALIASES))
|
|
// psfgaoOut is optional for SFGAO attributes
|
|
//
|
|
{$EXTERNALSYM SHParseDisplayName}
|
|
function SHParseDisplayName(pszName: PWideChar; pbc: IBindCtx;
|
|
out ppidl: PItemIDList; sfgaoIn: TSFGAOF;
|
|
out psfgaoOut: TSFGAOF): HResult; stdcall;
|
|
|
|
// SHPathPrepareForWrite(HWND hwnd, IUnknown *punkEnableModless, LPCTSTR pszPath, DWORD dwFlags)
|
|
//
|
|
// DESCRIPTION:
|
|
// This API will prepare the path for the caller. This includes:
|
|
// 1. Prompting for the ejectable media to be re-inserted. (Floppy, CD-ROM, ZIP drive, etc.)
|
|
// 2. Prompting for the media to be formatted. (Floppy, hard drive, etc.)
|
|
// 3. Remount mapped drives if the connection was lost. (\\unc\share mapped to N: becomes disconnected)
|
|
// 4. If the path doesn't exist, create it. (SHPPFW_DIRCREATE and SHPPFW_ASKDIRCREATE)
|
|
// 5. Display an error if the media is read only. (SHPPFW_NOWRITECHECK not set)
|
|
//
|
|
// PARAMETERS:
|
|
// hwnd: Parernt window for UI. NULL means don't display UI. OPTIONAL
|
|
// punkEnableModless: Parent that will be set to modal during UI using IOleInPlaceActiveObject::EnableModeless(). OPTIONAL
|
|
// pszPath: Path to verify is valid for writting. This can be a UNC or file drive path. The path
|
|
// should only contain directories. Pass SHPPFW_IGNOREFILENAME if the last path segment
|
|
// is always filename to ignore.
|
|
// dwFlags: SHPPFW_* Flags to modify behavior
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
const
|
|
{$EXTERNALSYM SHPPFW_NONE}
|
|
SHPPFW_NONE = $00000000;
|
|
{$EXTERNALSYM SHPPFW_DIRCREATE}
|
|
SHPPFW_DIRCREATE = $00000001; // Create the directory if it doesn't exist without asking the user.
|
|
{$EXTERNALSYM SHPPFW_ASKDIRCREATE}
|
|
SHPPFW_ASKDIRCREATE = $00000002; // Create the directory if it doesn't exist after asking the user.
|
|
{$EXTERNALSYM SHPPFW_IGNOREFILENAME}
|
|
SHPPFW_IGNOREFILENAME = $00000004; // Ignore the last item in pszPath because it's a file. Example: pszPath="C:\DirA\DirB", only use "C:\DirA".
|
|
{$EXTERNALSYM SHPPFW_NOWRITECHECK}
|
|
SHPPFW_NOWRITECHECK = $00000008; // Caller only needs to read from the drive, so don't check if it's READ ONLY.
|
|
{$EXTERNALSYM SHPPFW_MEDIACHECKONLY}
|
|
SHPPFW_MEDIACHECKONLY = $00000010; // do the retrys on the media (or net path), return errors if the file can't be found
|
|
{$EXTERNALSYM SHPPFW_DEFAULT}
|
|
SHPPFW_DEFAULT = SHPPFW_DIRCREATE; // May change
|
|
|
|
{$EXTERNALSYM SHPathPrepareForWriteA}
|
|
function SHPathPrepareForWriteA(hwnd: HWND; punkEnableModless: IUnknown;
|
|
pszPath: PAnsiChar; dwFlags: DWORD): HResult; stdcall;
|
|
{$EXTERNALSYM SHPathPrepareForWriteW}
|
|
function SHPathPrepareForWriteW(hwnd: HWND; punkEnableModless: IUnknown;
|
|
pszPath: PWideChar; dwFlags: DWORD): HResult; stdcall;
|
|
{$EXTERNALSYM SHPathPrepareForWrite}
|
|
function SHPathPrepareForWrite(hwnd: HWND; punkEnableModless: IUnknown;
|
|
pszPath: PTSTR; dwFlags: DWORD): HResult; stdcall;
|
|
|
|
//--------------------------------------------------------------------------
|
|
//
|
|
// Interface used for exposing the INI file methods on a shortcut file
|
|
//
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
type
|
|
{$EXTERNALSYM INamedPropertyBag}
|
|
INamedPropertyBag = interface(IUnknown)
|
|
['{FB700430-952C-11D1-946F-000000000000}']
|
|
function ReadPropertyNPB(pszBagname, pszPropName: POleStr;
|
|
var pVar: TPropVariant): HResult; stdcall;
|
|
function WritePropertyNPB(pszBagname, pszPropName: POleStr;
|
|
var pVar: TPropVariant): HResult; stdcall;
|
|
function RemovePropertyNPB(
|
|
pszBagname, pszPropName: POleStr): HResult; stdcall;
|
|
end;
|
|
|
|
// NOTE: urlmon.h must be included before shlobj.h to access thisfunction.
|
|
//
|
|
// SoftwareUpdateMessageBox
|
|
//
|
|
// Provides a standard message box for the alerting the user that a software
|
|
// update is available or installed. No UI will be displayed if there is no
|
|
// update available or if the available update version is less than or equal
|
|
// to the Advertised update version.
|
|
//
|
|
// hWnd - [in] Handle of owner window
|
|
// szDistUnit - [in] Unique identifier string for a code distribution unit. For
|
|
// ActiveX controls and Active Setup installed components, this
|
|
// is typically a GUID string.
|
|
// dwFlags - [in] Must be 0.
|
|
// psdi - [in,out] Pointer to SOFTDISTINFO (see URLMon.h ). May be NULL.
|
|
// cbSize should be initialized
|
|
// by the caller to sizeof(SOFTDISTINFO), dwReserved should be set to 0.
|
|
//
|
|
// RETURNS:
|
|
//
|
|
// IDNO - The user chose cancel. If *pbRemind is FALSE, the caller should save the
|
|
// update version from the SOFTDISTINFO and pass it in as the Advertised
|
|
// version in future calls.
|
|
//
|
|
// IDYES - The user has selected Update Now/About Update. The caller should navigate to
|
|
// the SOFTDISTINFO's pszHREF to initiate the install or learn about it.
|
|
// The caller should save the update version from the SOFTDISTINFO and pass
|
|
// it in as the Advertised version in future calls.
|
|
//
|
|
// IDIGNORE - There is no pending software update. Note: There is
|
|
// no Ignore button in the standard UI. This occurs if the available
|
|
// version is less than the installed version or is not present or if the
|
|
// Advertised version is greater than or equal to the update version.
|
|
//
|
|
// IDABORT - An error occured. Call GetSoftwareUpdateInfo() for a more specific HRESULT.
|
|
// Note: There is no Abort button in the standard UI.
|
|
|
|
|
|
// SHDOCAPI_(DWORD)
|
|
function SoftwareUpdateMessageBox(hWnd: HWND; szDistUnit: PWideChar;
|
|
dwFlags: DWORD; out psdi: TSoftDistInfo): DWORD; stdcall;
|
|
|
|
// SHPropStgCreate()
|
|
// Wrap of IPropertySetStorage::Open/Create
|
|
//
|
|
// Thisfunction ensures proper handling of code page retrieval/assignment
|
|
// for the requested property set operation.
|
|
//
|
|
// psstg, // Address of IPropertySetStorage vtable
|
|
// fmtid, // property set ID
|
|
// pclsid, // class ID associated with the set. This can be NULL
|
|
// grfFlags, // PROPSETFLAG_xxx. All sets containing ansi bytes should be created with
|
|
// PROPSETFLAG_ANSI, otherwise PROPSETFLAG_DEFAULT.
|
|
// grfMode, // STGM_ flags. Must contain STGM_DIRECT|STGM_EXCLUSIVE.
|
|
// dwDisposition, // OPEN_EXISTING. OPEN_ALWAYS, CREATE_NEW, or CREATE_ALWAYS
|
|
// IPropertyStorage** ppstg, // Address to receive requested vtable
|
|
// puCodePage // Optional address to receive the code page ID for the set.
|
|
//
|
|
{$EXTERNALSYM SHPropStgCreate}
|
|
function SHPropStgCreate(psstg: IPropertySetStorage; var fmtid: TFmtID;
|
|
pclsid: PCLSID; grfFlags: DWORD; grfMode: DWORD; dwDisposition: DWORD;
|
|
out ppstg: IPropertyStorage; puCodePage: PUINT): HResult; stdcall;
|
|
|
|
// SHPropStgReadMultiple()
|
|
// IPropertyStorage::ReadMultiple wrap
|
|
//
|
|
// The wrap ensures ANSI/UNICODE translations are handled properly for
|
|
// legacy property sets.
|
|
//
|
|
// pps, // address of IPropertyStorage vtable.
|
|
// uCodePage, //Code page value retrieved from SHCreatePropertySet
|
|
// cpspec, //Count of properties being read
|
|
// rgpspec, //Array of the properties to be read
|
|
// rgvar //Array of PROPVARIANTs containing the property values on return
|
|
//
|
|
|
|
type
|
|
TPropSpecArray = array[0..65535] of TPropSpec;
|
|
PPropSpecArray = ^TPropSpecArray;
|
|
TPropVariantArray = array[0..65535] of TPropVariant;
|
|
PPropVariantArray = ^TPropVariantArray;
|
|
|
|
{$EXTERNALSYM SHPropStgReadMultiple}
|
|
function SHPropStgReadMultiple(pps: IPropertyStorage; uCodePage: UINT;
|
|
cpspec: ULONG; rgpspec: PPropSpecArray;
|
|
rgvar: PPropVariantArray): HResult; stdcall;
|
|
|
|
// SHPropStgWriteMultiple()
|
|
// IPropertyStorage::WriteMultiple wrap
|
|
//
|
|
// The wrap ensures ANSI/UNICODE translations are handled properly for
|
|
// legacy property sets.
|
|
//
|
|
// pps, // address of IPropertyStorage vtable.
|
|
// uCodePage, // code page retrieved from SHCreatePropertySet.
|
|
// cpspec, // The number of properties being set
|
|
// rgpspec, // Property specifiers
|
|
// rgvar, // Array of TPropVariant values
|
|
// propidNameFirst // Minimum value for property identifiers. This value should be >= PID_FIRST_USABLE
|
|
//
|
|
{$EXTERNALSYM SHPropStgWriteMultiple}
|
|
function SHPropStgWriteMultiple(pps: IPropertyStorage; out puCodePage: UINT;
|
|
cpspec: ULONG; rgpspec: PPropSpecArray; rgvar: PPropVariantArray;
|
|
propidNameFirst: TPropID): HResult; stdcall;
|
|
|
|
{$EXTERNALSYM SHCreateFileExtractIconA}
|
|
function SHCreateFileExtractIconA(pszFile: PAnsiChar; dwFileAttributes: DWORD;
|
|
const riid: TIID; out ppv): HResult; stdcall;
|
|
{$EXTERNALSYM SHCreateFileExtractIconW}
|
|
function SHCreateFileExtractIconW(pszFile: PWideChar; dwFileAttributes: DWORD;
|
|
const riid: TIID; out ppv): HResult; stdcall;
|
|
{$EXTERNALSYM SHCreateFileExtractIcon}
|
|
function SHCreateFileExtractIcon(pszFile: PTSTR; dwFileAttributes: DWORD;
|
|
const riid: TIID; out ppv): HResult; stdcall;
|
|
|
|
{$EXTERNALSYM SHLimitInputEdit}
|
|
function SHLimitInputEdit(hwndEdit: HWND; psf: IShellFolder): HResult; stdcall;
|
|
|
|
//
|
|
// The SHMultiFileProperties API displays a property sheet for a
|
|
// set of files specified in an IDList Array.
|
|
//
|
|
// Parameters:
|
|
// pdtobj - Data object containing list of files. The data
|
|
// object must provide the "Shell IDList Array"
|
|
// clipboard format. The parent folder's implementation of
|
|
// IShellFolder::GetDisplayNameOf must return a fully-qualified
|
|
// filesystem path for each item in response to the
|
|
// SHGDN_FORPARSING flag.
|
|
//
|
|
// dwFlags - Reserved for future use. Should be set to 0.
|
|
//
|
|
// Returns:
|
|
// S_OK
|
|
//
|
|
{$EXTERNALSYM SHMultiFileProperties}
|
|
function SHMultiFileProperties(pdtobj: IDataObject;
|
|
dwFlags: DWORD): HResult; stdcall;
|
|
|
|
type
|
|
{$EXTERNALSYM PFNASYNCICONTASKBALLBACK}
|
|
PFNASYNCICONTASKBALLBACK = procedure(pidl: PItemIDList;
|
|
pvData, pvHint: Pointer; iIconIndex, iOpenIconIndex: Integer) stdcall;
|
|
TFnAsyncIconTaskCallback = PFNASYNCICONTASKBALLBACK;
|
|
|
|
// HRESULT SHMapIDListToImageListIndexAsync(IShellTaskScheduler* pts, IShellFolder *psf, PItemIDList pidl, UINT flags,
|
|
// PFNASYNCICONTASKBALLBACK pfn, Pointer pvData, Pointer pvHint, int *piIndex, int *piIndexSel);
|
|
// A usefullfunction for asynchronously mapping idlist into index into system
|
|
// image list. Optionally it can also look up the index of the selected icon.
|
|
// pts Task scheduler interface to use to create the background task
|
|
// psf Shell folder relating to the pidl
|
|
// pidl Item whose icon is requested
|
|
// flags GIL_ flags
|
|
// pfn function called back when the background task is done
|
|
// pvData User data passed back in the (*pfn) callback
|
|
// pvHint User data passed back in the (*pfn) callback
|
|
// piIndex Icon index returned. This is the temporary index if thefunction returns E_PENDING. The final index will be provided thru the callback
|
|
// piIndexSel Optional icon index for the open icon case (GIL_OPENICON).
|
|
//
|
|
// Returns S_OK if all the requested info was available. E_PENDING means that you get temporary icons, and will be called back
|
|
// asynchronously with the final icons. Other failure code means thefunction failed.
|
|
{$EXTERNALSYM SHMapIDListToImageListIndexAsync}
|
|
function SHMapIDListToImageListIndexAsync(pts: IShellTaskScheduler;
|
|
psf: IShellFolder; pidl: PItemIDList; flags: UINT;
|
|
pfn: TFNAsyncIconTaskCallback; pvData, pvHint: Pointer;
|
|
out piIndex, piIndexSel: Integer): HResult stdcall;
|
|
|
|
// A useful function in Defview for mapping idlist into index into system
|
|
// image list. Optionally it can also look up the index of the selected
|
|
// icon.
|
|
{$EXTERNALSYM SHMapPIDLToSystemImageListIndex}
|
|
function SHMapPIDLToSystemImageListIndex(pshf: IShellFolder;
|
|
pidl: PItemIDList; out piIndexSel: Integer): Integer; stdcall;
|
|
|
|
// STDAPI
|
|
{$EXTERNALSYM SHCLSIDFromString}
|
|
function SHCLSIDFromString(lpsz: PWideChar;
|
|
out pclsid: TCLSID): HResult; stdcall;
|
|
|
|
{$EXTERNALSYM SHFlushClipboard}
|
|
function SHFlushClipboard: HResult; stdcall;
|
|
|
|
{$EXTERNALSYM SHCreateQueryCancelAutoPlayMoniker}
|
|
function SHCreateQueryCancelAutoPlayMoniker(
|
|
out ppmoniker: IMoniker): HResult; stdcall;
|
|
|
|
|
|
{$EXTERNALSYM SHGetShellStyleHInstance}
|
|
function SHGetShellStyleHInstance: THandle stdcall;
|
|
|
|
{$EXTERNALSYM PerUserInit}
|
|
procedure PerUserInit; stdcall;
|
|
|
|
|
|
{$EXTERNALSYM SHRunControlPanel}
|
|
function SHRunControlPanel(lpcszCmdLine: PWideChar;
|
|
hwndMsgParent: HWND): BOOL stdcall;
|
|
|
|
{$EXTERNALSYM PickIconDlg}
|
|
function PickIconDlg(hwnd: HWND; pszIconPath: PWideChar; cbIconPath: UINT;
|
|
out piIconIndex: Integer): Integer; stdcall;
|
|
|
|
type
|
|
PAAShellMenuFileName = ^TAAShellMenuFileName;
|
|
{$EXTERNALSYM tagAAMENUFILENAME}
|
|
tagAAMENUFILENAME = record
|
|
cbTotal: Smallint;
|
|
rgbReserved: array[0..11] of Byte;
|
|
szFileName: array[0..0] of WideChar; // variable length string
|
|
end;
|
|
{$EXTERNALSYM AASHELLMENUFILENAME}
|
|
AASHELLMENUFILENAME = tagAAMENUFILENAME;
|
|
TAAShellMenuFileName = tagAAMENUFILENAME;
|
|
|
|
PAAShellMenuItem = ^TAAShellMenuItem;
|
|
{$EXTERNALSYM tagAASHELLMENUITEM}
|
|
tagAASHELLMENUITEM = record
|
|
lpReserved1: Pointer;
|
|
iReserved: Integer;
|
|
uiReserved: UINT;
|
|
lpName: PAAShellMenuFileName; // name of file
|
|
psz: PWideChar; // text to use if no file
|
|
end;
|
|
{$EXTERNALSYM AASHELLMENUITEM}
|
|
AASHELLMENUITEM = tagAASHELLMENUITEM;
|
|
TAAShellMenuItem = tagAASHELLMENUITEM;
|
|
|
|
{$EXTERNALSYM SHGetAttributesFromDataObject}
|
|
function SHGetAttributesFromDataObject(pdo: IDataObject;
|
|
dwAttributeMask: DWORD; out pdwAttributes: DWORD;
|
|
out pcItems: UINT): HResult; stdcall;
|
|
|
|
// SHDOCAPI
|
|
{$EXTERNALSYM ImportPrivacySettings}
|
|
function ImportPrivacySettings(szFilename: PWideChar;
|
|
var pfParsePrivacyPreferences, pfParsePerSiteRules: BOOL): BOOL; stdcall;
|
|
// defined in MSHTML.h:
|
|
{$HPPEMIT '#ifndef IEnumPrivacyRecords'}
|
|
{$HPPEMIT 'typedef interface IEnumPrivacyRecords IEnumPrivacyRecords;'}
|
|
{$HPPEMIT '#endif'}
|
|
{$EXTERNALSYM DoPrivacyDlg}
|
|
//function DoPrivacyDlg(hwndParent: HWND; pszUrl: POleStr;
|
|
// pPrivacyEnum: IEnumPrivacyRecords; fReportAllSites: BOOL): HResult; stdcall;
|
|
function DoPrivacyDlg(hwndParent: HWND; pszUrl: POleStr;
|
|
const pPrivacyEnum; fReportAllSites: BOOL): HResult; stdcall;
|
|
|
|
procedure InitShellStateSizes;
|
|
|
|
{$ENDIF JWA_IMPLEMENTATIONSECTION}
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
implementation
|
|
uses JwaWinDLLNames;
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
const
|
|
{$IFDEF UNICODE}
|
|
AWSuffix = 'W';
|
|
{$ELSE}
|
|
AWSuffix = 'A';
|
|
{$ENDIF UNICODE}
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
|
|
{$IFNDEF JWA_INTERFACESECTION}
|
|
|
|
|
|
// Macros
|
|
|
|
function ShellFolderView_ReArrange(hwnd: HWND; lparam: LPARAM): BOOL;
|
|
begin
|
|
Result := BOOL(SHShellFolderView_Message(hwnd, SFVM_REARRANGE, lparam));
|
|
end;
|
|
|
|
function ShellFolderView_AddObject(hwnd: HWND; pidl: PItemIDList): LPARAM;
|
|
begin
|
|
Result := LPARAM(SHShellFolderView_Message(hwnd,
|
|
SFVM_ADDOBJECT, LPARAM(pidl)));
|
|
end;
|
|
|
|
function ShellFolderView_RemoveObject(hwnd: HWND; pidl: PItemIDList): LPARAM;
|
|
begin
|
|
Result := LPARAM(SHShellFolderView_Message(hwnd,
|
|
SFVM_REMOVEOBJECT, LPARAM(pidl)));
|
|
end;
|
|
|
|
function ShellFolderView_UpdateObject(hwnd: HWND;
|
|
ppidl: PPItemIDListArray): LPARAM;
|
|
begin
|
|
Result := LPARAM(SHShellFolderView_Message(hwnd,
|
|
SFVM_UPDATEOBJECT, LPARAM(ppidl)));
|
|
end;
|
|
|
|
function ShellFolderView_GetSelectedObjects(hwnd: HWND;
|
|
ppidl: PPItemIDListArray): LPARAM;
|
|
begin
|
|
Result := LPARAM(SHShellFolderView_Message(hwnd,
|
|
SFVM_GETSELECTEDOBJECTS, LPARAM(ppidl)));
|
|
end;
|
|
|
|
procedure ShellFolderView_SetItemPos(hwnd: HWND; pidl: PItemIDList;
|
|
x, y: Integer);
|
|
var
|
|
sip: TSFVSetItemPos;
|
|
begin
|
|
sip.pidl := pidl;
|
|
sip.pt.X := x;
|
|
sip.pt.Y := y;
|
|
SHShellFolderView_Message(hwnd, SFVM_SETITEMPOS, LPARAM(@sip));
|
|
end;
|
|
|
|
procedure ShellFolderView_SetClipboard(hwnd: HWND; dwEffect: DWORD);
|
|
begin
|
|
SHShellFolderView_Message(hwnd, SFVM_SETCLIPBOARD, LPARAM(dwEffect));
|
|
end;
|
|
|
|
procedure ShellFolderView_SetPoints(hwnd: HWND; const pdtobj: IDataObject);
|
|
begin
|
|
SHShellFolderView_Message(hwnd, SFVM_SETPOINTS, LPARAM(pdtobj));
|
|
end;
|
|
|
|
{$IFNDEF DYNAMIC_LINK}
|
|
|
|
function SHGetMalloc; external shell32 name 'SHGetMalloc';
|
|
function SHAlloc; external shell32 name 'SHAlloc';
|
|
procedure SHFree; external shell32 name 'SHFree';
|
|
function SHGetIconOverlayIndexA; external shell32 name 'SHGetIconOverlayIndexA';
|
|
function SHGetIconOverlayIndexW; external shell32 name 'SHGetIconOverlayIndexW';
|
|
function SHGetIconOverlayIndex; external shell32 name 'SHGetIconOverlayIndex'+AWSuffix;
|
|
function SHGetPathFromIDListA; external shell32 name 'SHGetPathFromIDListA';
|
|
function SHGetPathFromIDListW; external shell32 name 'SHGetPathFromIDListW';
|
|
function SHGetPathFromIDList; external shell32 name 'SHGetPathFromIDList'+AWSuffix;
|
|
function SHCreateDirectory; external shell32 name 'SHCreateDirectory';
|
|
function SHCreateDirectoryExA; external shell32 name 'SHCreateDirectoryExA';
|
|
function SHCreateDirectoryExW; external shell32 name 'SHCreateDirectoryExW';
|
|
function SHCreateDirectoryEx; external shell32 name 'SHCreateDirectoryEx'+AWSuffix;
|
|
function SHOpenFolderAndSelectItems; external shell32 name 'SHOpenFolderAndSelectItems';
|
|
function SHCreateShellItem; external shell32 name 'SHCreateShellItem';
|
|
function SHGetSpecialFolderLocation; external shell32 name 'SHGetSpecialFolderLocation';
|
|
procedure SHFlushSFCache; external shell32 name 'SHFlushSFCache';
|
|
function SHCloneSpecialIDList; external shell32 name 'SHCloneSpecialIDList';
|
|
function SHGetSpecialFolderPathA; external shell32 name 'SHGetSpecialFolderPathA';
|
|
function SHGetSpecialFolderPathW; external shell32 name 'SHGetSpecialFolderPathW';
|
|
function SHGetSpecialFolderPath; external shell32 name 'SHGetSpecialFolderPath'+AWSuffix;
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
function SHGetFolderPathA; external shell32 name 'SHGetFolderPathA';
|
|
function SHGetFolderPathW; external shell32 name 'SHGetFolderPathW';
|
|
function SHGetFolderPath; external shell32 name 'SHGetFolderPath'+AWSuffix;
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
function SHGetFolderLocation; external shell32 name 'SHGetFolderLocation';
|
|
function SHGetFolderPathAndSubDirA; external shell32 name 'SHGetFolderPathAndSubDirA';
|
|
function SHGetFolderPathAndSubDirW; external shell32 name 'SHGetFolderPathAndSubDirW';
|
|
function SHGetFolderPathAndSubDir; external shell32 name 'SHGetFolderPathAndSubDir'+AWSuffix;
|
|
function SHBrowseForFolderA; external shell32 name 'SHBrowseForFolderA';
|
|
function SHBrowseForFolderW; external shell32 name 'SHBrowseForFolderW';
|
|
function SHBrowseForFolder; external shell32 name 'SHBrowseForFolder'+AWSuffix;
|
|
function SHLoadInProc; external shell32 name 'SHLoadInProc';
|
|
function SHGetDesktopFolder; external shell32 name 'SHGetDesktopFolder';
|
|
procedure SHChangeNotify; external shell32 name 'SHChangeNotify';
|
|
procedure SHAddToRecentDocs; external shell32 name 'SHAddToRecentDocs';
|
|
function SHHandleUpdateImage; external shell32 name 'SHHandleUpdateImage';
|
|
procedure SHUpdateImageA; external shell32 name 'SHUpdateImageA';
|
|
procedure SHUpdateImageW; external shell32 name 'SHUpdateImageW';
|
|
procedure SHUpdateImage; external shell32 name 'SHUpdateImage'+AWSuffix;
|
|
function SHChangeNotifyRegister; external shell32 name 'SHChangeNotifyRegister';
|
|
function SHChangeNotifyDeregister; external shell32 name 'SHChangeNotifyDeregister';
|
|
function SHChangeNotification_Lock; external shell32 name 'SHChangeNotification_Lock';
|
|
function SHChangeNotification_Unlock; external shell32 name 'SHChangeNotification_Unlock';
|
|
function SHGetRealIDL; external shell32 name 'SHGetRealIDL';
|
|
function SHGetInstanceExplorer; external shell32 name 'SHGetInstanceExplorer';
|
|
function SHGetDataFromIDListA; external shell32 name 'SHGetDataFromIDListA';
|
|
function SHGetDataFromIDListW; external shell32 name 'SHGetDataFromIDListW';
|
|
function SHGetDataFromIDList; external shell32 name 'SHGetDataFromIDList'+AWSuffix;
|
|
function RestartDialog; external shell32 name 'RestartDialog';
|
|
function RestartDialogEx; external shell32 name 'RestartDialogEx';
|
|
function SHCoCreateInstance; external shell32 name 'SHCoCreateInstance';
|
|
function SHCreateStdEnumFmtEtc; external shell32 name 'SHCreateStdEnumFmtEtc';
|
|
function SHDoDragDrop; external shell32 name 'SHDoDragDrop';
|
|
function DAD_SetDragImage; external shell32 name 'DAD_SetDragImage';
|
|
function DAD_DragEnterEx; external shell32 name 'DAD_DragEnterEx';
|
|
function DAD_DragEnterEx2; external shell32 name 'DAD_DragEnterEx2';
|
|
function DAD_ShowDragImage; external shell32 name 'DAD_ShowDragImage';
|
|
function DAD_DragMove; external shell32 name 'DAD_DragMove';
|
|
function DAD_DragLeave; external shell32 name 'DAD_DragLeave';
|
|
function DAD_AutoScroll; external shell32 name 'DAD_AutoScroll';
|
|
function ReadCabinetState; external shell32 name 'ReadCabinetState';
|
|
function WriteCabinetState; external shell32 name 'WriteCabinetState';
|
|
function PathMakeUniqueName; external shell32 name 'PathMakeUniqueName';
|
|
procedure PathQualify; external shell32 name 'PathQualify';
|
|
function PathIsExe; external shell32 name 'PathIsExe';
|
|
function PathIsSlowA; external shell32 name 'PathIsSlowA';
|
|
function PathIsSlowW; external shell32 name 'PathIsSlowW';
|
|
function PathIsSlow; external shell32 name 'PathIsSlow'+AWSuffix;
|
|
function PathCleanupSpec; external shell32 name 'PathCleanupSpec';
|
|
function PathResolve; external shell32 name 'PathResolve';
|
|
function GetFileNameFromBrowse; external shell32 name 'GetFileNameFromBrowse';
|
|
function DriveType; external shell32 name 'DriveType';
|
|
function RealDriveType; external shell32 name 'RealDriveType';
|
|
function IsNetDrive; external shell32 name 'IsNetDrive';
|
|
function Shell_MergeMenus; external shell32 name 'Shell_MergeMenus';
|
|
function SHObjectProperties; external shell32 name 'SHObjectProperties';
|
|
function SHFormatDrive; external shell32 name 'SHFormatDrive';
|
|
function SHCreatePropSheetExtArray; external shell32 name 'SHCreatePropSheetExtArray';
|
|
procedure SHDestroyPropSheetExtArray; external shell32 name 'SHDestroyPropSheetExtArray';
|
|
function SHAddFromPropSheetExtArray; external shell32 name 'SHAddFromPropSheetExtArray';
|
|
function SHReplaceFromPropSheetExtArray; external shell32 name 'SHReplaceFromPropSheetExtArray';
|
|
function ILClone; external shell32 name 'ILClone';
|
|
function ILGetNext; external shell32 name 'ILGetNext';
|
|
function ILGetSize; external shell32 name 'ILGetSize';
|
|
function ILFindLastID; external shell32 name 'ILFindLastID';
|
|
function ILRemoveLastID; external shell32 name 'ILRemoveLastID';
|
|
function ILAppendID; external shell32 name 'ILAppendID';
|
|
procedure ILFree; external shell32 name 'ILFree';
|
|
function ILCloneFirst; external shell32 name 'ILCloneFirst';
|
|
function ILIsEqual; external shell32 name 'ILIsEqual';
|
|
function ILIsParent; external shell32 name 'ILIsParent';
|
|
function ILFindChild; external shell32 name 'ILFindChild';
|
|
function ILCombine; external shell32 name 'ILCombine';
|
|
function ILSaveToStream; external shell32 name 'ILSaveToStream';
|
|
function ILCreateFromPathA; external shell32 name 'ILCreateFromPathA';
|
|
function ILCreateFromPathW; external shell32 name 'ILCreateFromPathW';
|
|
function ILCreateFromPath; external shell32 name 'ILCreateFromPath'+AWSuffix;
|
|
function SHILCreateFromPath; external shell32 name 'SHILCreateFromPath';
|
|
function OpenRegStream; external shell32 name 'OpenRegStream';
|
|
function SHFindFiles; external shell32 name 'SHFindFiles';
|
|
procedure PathGetShortPath; external shell32 name 'PathGetShortPath';
|
|
function PathYetAnotherMakeUniqueName; external shell32 name 'PathYetAnotherMakeUniqueName';
|
|
function Win32DeleteFile; external shell32 name 'Win32DeleteFile';
|
|
function SHRestricted; external shell32 name 'SHRestricted';
|
|
function SignalFileOpen; external shell32 name 'SignalFileOpen';
|
|
function SHSimpleIDListFromPath; external shell32 name 'SHSimpleIDListFromPath';
|
|
function SHDefExtractIconA; external shell32 name 'SHDefExtractIconA';
|
|
function SHDefExtractIconW; external shell32 name 'SHDefExtractIconW';
|
|
function SHDefExtractIcon; external shell32 name 'SHDefExtractIcon'+AWSuffix;
|
|
function Shell_GetImageLists; external shell32 name 'Shell_GetImageLists';
|
|
function Shell_GetCachedImageIndex; external shell32 name 'Shell_GetCachedImageIndex';
|
|
function SHValidateUNC; external shell32 name 'SHValidateUNC';
|
|
function PifMgr_OpenProperties; external shell32 name 'PifMgr_OpenProperties';
|
|
function PifMgr_GetProperties; external shell32 name 'PifMgr_GetProperties';
|
|
function PifMgr_SetProperties; external shell32 name 'PifMgr_SetProperties';
|
|
function PifMgr_CloseProperties; external shell32 name 'PifMgr_CloseProperties';
|
|
procedure SHSetInstanceExplorer; external shell32 name 'SHSetInstanceExplorer';
|
|
function IsUserAnAdmin; external shell32 name 'IsUserAnAdmin';
|
|
function SHShellFolderView_Message; external shell32 name 'SHShellFolderView_Message';
|
|
function SHCreateShellFolderView; external shell32 name 'SHCreateShellFolderView';
|
|
function CDefFolderMenu_Create2; external shell32 name 'CDefFolderMenu_Create2';
|
|
function SHFind_InitMenuPopup; external shell32 name 'SHFind_InitMenuPopup';
|
|
function SHCreateShellFolderViewEx; external shell32 name 'SHCreateShellFolderViewEx';
|
|
procedure SHGetSetSettings; external shell32 name 'SHGetSetSettings';
|
|
procedure SHGetSettings; external shell32 name 'SHGetSettings';
|
|
function SHBindToParent; external shell32 name 'SHBindToParent';
|
|
function SHParseDisplayName; external shell32 name 'SHParseDisplayName';
|
|
function SHPathPrepareForWriteA; external shell32 name 'SHPathPrepareForWriteA';
|
|
function SHPathPrepareForWriteW; external shell32 name 'SHPathPrepareForWriteW';
|
|
function SHPathPrepareForWrite; external shell32 name 'SHPathPrepareForWrite'+AWSuffix;
|
|
function SoftwareUpdateMessageBox; external shdocvwDll name 'SoftwareUpdateMessageBox';
|
|
function SHPropStgCreate; external shell32 name 'SHPropStgCreate';
|
|
function SHPropStgReadMultiple; external shell32 name 'SHPropStgReadMultiple';
|
|
function SHPropStgWriteMultiple; external shell32 name 'SHPropStgWriteMultiple';
|
|
function SHLimitInputEdit; external shell32 name 'SHLimitInputEdit';
|
|
function SHMultiFileProperties; external shell32 name 'SHMultiFileProperties';
|
|
function SHMapPIDLToSystemImageListIndex; external shell32 name 'SHMapPIDLToSystemImageListIndex';
|
|
function SHCLSIDFromString; external shell32 name 'SHCLSIDFromString';
|
|
function SHCreateQueryCancelAutoPlayMoniker; external shell32 name 'SHCreateQueryCancelAutoPlayMoniker';
|
|
function PickIconDlg; external shell32 name 'PickIconDlg';
|
|
function SHGetAttributesFromDataObject; external shell32 name 'SHGetAttributesFromDataObject';
|
|
|
|
|
|
function ImportPrivacySettings; external shdocvwDll name 'ImportPrivacySettings';
|
|
function DoPrivacyDlg; external shdocvwDll name 'DoPrivacyDlg';
|
|
|
|
function SHEnableServiceObject; external shdocvwDll name 'SHEnableServiceObject';
|
|
function SHGetSetFolderCustomSettingsA; external shdocvwDll name 'SHGetSetFolderCustomSettingsA';
|
|
function SHGetSetFolderCustomSettingsW; external shdocvwDll name 'SHGetSetFolderCustomSettingsW';
|
|
function SHGetSetFolderCustomSettings; external shdocvwDll name 'SHGetSetFolderCustomSettings'+AWSuffix;
|
|
function CallCPLEntry16; external shdocvwDll name 'CallCPLEntry16';
|
|
function SHStartNetConnectionDialogA; external shdocvwDll name 'SHStartNetConnectionDialogA';
|
|
function SHStartNetConnectionDialogW; external shdocvwDll name 'SHStartNetConnectionDialogW';
|
|
function SHStartNetConnectionDialog; external shdocvwDll name 'SHStartNetConnectionDialog'+AWSuffix;
|
|
function SHOpenPropSheetA; external shdocvwDll name 'SHOpenPropSheetA';
|
|
function SHOpenPropSheetW; external shdocvwDll name 'SHOpenPropSheetW';
|
|
function SHOpenPropSheet; external shdocvwDll name 'SHOpenPropSheet'+AWSuffix;
|
|
function SHCreateFileExtractIconA; external shdocvwDll name 'SHCreateFileExtractIconA';
|
|
function SHCreateFileExtractIconW; external shdocvwDll name 'SHCreateFileExtractIconW';
|
|
function SHCreateFileExtractIcon; external shdocvwDll name 'SHCreateFileExtractIcon'+AWSuffix;
|
|
function ILLoadFromStream; external shdocvwDll name 'ILLoadFromStream';
|
|
function PathProcessCommand; external shdocvwDll name 'PathProcessCommand';
|
|
function SHLoadOLE; external shdocvwDll name 'SHLoadOLE';
|
|
function SHMapIDListToImageListIndexAsync; external shdocvwDll name 'SHMapIDListToImageListIndexAsync';
|
|
function SHFlushClipboard; external shdocvwDll name 'SHFlushClipboard';
|
|
function SHGetShellStyleHInstance; external shdocvwDll name 'SHGetShellStyleHInstance';
|
|
function SHRunControlPanel; external shdocvwDll name 'SHRunControlPanel';
|
|
|
|
|
|
procedure PerUserInit; external mydocs name 'PerUserInit';
|
|
|
|
{$ELSE}
|
|
|
|
var
|
|
_SHGetMalloc: Pointer;
|
|
|
|
function SHGetMalloc;
|
|
begin
|
|
GetProcedureAddress(_SHGetMalloc, shell32, 'SHGetMalloc');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetMalloc]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHAlloc: Pointer;
|
|
|
|
function SHAlloc;
|
|
begin
|
|
GetProcedureAddress(_SHAlloc, shell32, 'SHAlloc');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHAlloc]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHFree: Pointer;
|
|
|
|
procedure SHFree;
|
|
begin
|
|
GetProcedureAddress(_SHFree, shell32, 'SHFree');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHFree]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetIconOverlayIndexA: Pointer;
|
|
|
|
function SHGetIconOverlayIndexA;
|
|
begin
|
|
GetProcedureAddress(_SHGetIconOverlayIndexA, shell32, 'SHGetIconOverlayIndexA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetIconOverlayIndexA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetIconOverlayIndexW: Pointer;
|
|
|
|
function SHGetIconOverlayIndexW;
|
|
begin
|
|
GetProcedureAddress(_SHGetIconOverlayIndexW, shell32, 'SHGetIconOverlayIndexW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetIconOverlayIndexW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetIconOverlayIndex: Pointer;
|
|
|
|
function SHGetIconOverlayIndex;
|
|
begin
|
|
GetProcedureAddress(_SHGetIconOverlayIndex, shell32, 'SHGetIconOverlayIndex');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetIconOverlayIndex]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetPathFromIDListA: Pointer;
|
|
|
|
function SHGetPathFromIDListA;
|
|
begin
|
|
GetProcedureAddress(_SHGetPathFromIDListA, shell32, 'SHGetPathFromIDListA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetPathFromIDListA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetPathFromIDListW: Pointer;
|
|
|
|
function SHGetPathFromIDListW;
|
|
begin
|
|
GetProcedureAddress(_SHGetPathFromIDListW, shell32, 'SHGetPathFromIDListW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetPathFromIDListW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetPathFromIDList: Pointer;
|
|
|
|
function SHGetPathFromIDList;
|
|
begin
|
|
GetProcedureAddress(_SHGetPathFromIDList, shell32, 'SHGetPathFromIDList');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetPathFromIDList]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCreateDirectory: Pointer;
|
|
|
|
function SHCreateDirectory;
|
|
begin
|
|
GetProcedureAddress(_SHCreateDirectory, shell32, 'SHCreateDirectory');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCreateDirectory]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCreateDirectoryExA: Pointer;
|
|
|
|
function SHCreateDirectoryExA;
|
|
begin
|
|
GetProcedureAddress(_SHCreateDirectoryExA, shell32, 'SHCreateDirectoryExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCreateDirectoryExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCreateDirectoryExW: Pointer;
|
|
|
|
function SHCreateDirectoryExW;
|
|
begin
|
|
GetProcedureAddress(_SHCreateDirectoryExW, shell32, 'SHCreateDirectoryExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCreateDirectoryExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCreateDirectoryEx: Pointer;
|
|
|
|
function SHCreateDirectoryEx;
|
|
begin
|
|
GetProcedureAddress(_SHCreateDirectoryEx, shell32, 'SHCreateDirectoryEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCreateDirectoryEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHOpenFolderAndSelectItems: Pointer;
|
|
|
|
function SHOpenFolderAndSelectItems;
|
|
begin
|
|
GetProcedureAddress(_SHOpenFolderAndSelectItems, shell32, 'SHOpenFolderAndSelectItems');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHOpenFolderAndSelectItems]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCreateShellItem: Pointer;
|
|
|
|
function SHCreateShellItem;
|
|
begin
|
|
GetProcedureAddress(_SHCreateShellItem, shell32, 'SHCreateShellItem');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCreateShellItem]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetSpecialFolderLocation: Pointer;
|
|
|
|
function SHGetSpecialFolderLocation;
|
|
begin
|
|
GetProcedureAddress(_SHGetSpecialFolderLocation, shell32, 'SHGetSpecialFolderLocation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetSpecialFolderLocation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHFlushSFCache: Pointer;
|
|
|
|
procedure SHFlushSFCache;
|
|
begin
|
|
GetProcedureAddress(_SHFlushSFCache, shell32, 'SHFlushSFCache');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHFlushSFCache]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCloneSpecialIDList: Pointer;
|
|
|
|
function SHCloneSpecialIDList;
|
|
begin
|
|
GetProcedureAddress(_SHCloneSpecialIDList, shell32, 'SHCloneSpecialIDList');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCloneSpecialIDList]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetSpecialFolderPathA: Pointer;
|
|
|
|
function SHGetSpecialFolderPathA;
|
|
begin
|
|
GetProcedureAddress(_SHGetSpecialFolderPathA, shell32, 'SHGetSpecialFolderPathA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetSpecialFolderPathA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetSpecialFolderPathW: Pointer;
|
|
|
|
function SHGetSpecialFolderPathW;
|
|
begin
|
|
GetProcedureAddress(_SHGetSpecialFolderPathW, shell32, 'SHGetSpecialFolderPathW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetSpecialFolderPathW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetSpecialFolderPath: Pointer;
|
|
|
|
function SHGetSpecialFolderPath;
|
|
begin
|
|
GetProcedureAddress(_SHGetSpecialFolderPath, shell32, 'SHGetSpecialFolderPath');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetSpecialFolderPath]
|
|
end;
|
|
end;
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
var
|
|
_SHGetFolderPathA: Pointer;
|
|
|
|
function SHGetFolderPathA;
|
|
begin
|
|
GetProcedureAddress(_SHGetFolderPathA, shell32, 'SHGetFolderPathA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetFolderPathA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetFolderPathW: Pointer;
|
|
|
|
function SHGetFolderPathW;
|
|
begin
|
|
GetProcedureAddress(_SHGetFolderPathW, shell32, 'SHGetFolderPathW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetFolderPathW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetFolderPath: Pointer;
|
|
|
|
function SHGetFolderPath;
|
|
begin
|
|
GetProcedureAddress(_SHGetFolderPath, shell32, 'SHGetFolderPath');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetFolderPath]
|
|
end;
|
|
end;
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
var
|
|
_SHGetFolderLocation: Pointer;
|
|
|
|
function SHGetFolderLocation;
|
|
begin
|
|
GetProcedureAddress(_SHGetFolderLocation, shell32, 'SHGetFolderLocation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetFolderLocation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetFolderPathAndSubDirA: Pointer;
|
|
|
|
function SHGetFolderPathAndSubDirA;
|
|
begin
|
|
GetProcedureAddress(_SHGetFolderPathAndSubDirA, shell32, 'SHGetFolderPathAndSubDirA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetFolderPathAndSubDirA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetFolderPathAndSubDirW: Pointer;
|
|
|
|
function SHGetFolderPathAndSubDirW;
|
|
begin
|
|
GetProcedureAddress(_SHGetFolderPathAndSubDirW, shell32, 'SHGetFolderPathAndSubDirW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetFolderPathAndSubDirW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetFolderPathAndSubDir: Pointer;
|
|
|
|
function SHGetFolderPathAndSubDir;
|
|
begin
|
|
GetProcedureAddress(_SHGetFolderPathAndSubDir, shell32, 'SHGetFolderPathAndSubDir');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetFolderPathAndSubDir]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHBrowseForFolderA: Pointer;
|
|
|
|
function SHBrowseForFolderA;
|
|
begin
|
|
GetProcedureAddress(_SHBrowseForFolderA, shell32, 'SHBrowseForFolderA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHBrowseForFolderA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHBrowseForFolderW: Pointer;
|
|
|
|
function SHBrowseForFolderW;
|
|
begin
|
|
GetProcedureAddress(_SHBrowseForFolderW, shell32, 'SHBrowseForFolderW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHBrowseForFolderW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHBrowseForFolder: Pointer;
|
|
|
|
function SHBrowseForFolder;
|
|
begin
|
|
GetProcedureAddress(_SHBrowseForFolder, shell32, 'SHBrowseForFolder');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHBrowseForFolder]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHLoadInProc: Pointer;
|
|
|
|
function SHLoadInProc;
|
|
begin
|
|
GetProcedureAddress(_SHLoadInProc, shell32, 'SHLoadInProc');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHLoadInProc]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetDesktopFolder: Pointer;
|
|
|
|
function SHGetDesktopFolder;
|
|
begin
|
|
GetProcedureAddress(_SHGetDesktopFolder, shell32, 'SHGetDesktopFolder');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetDesktopFolder]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHChangeNotify: Pointer;
|
|
|
|
procedure SHChangeNotify;
|
|
begin
|
|
GetProcedureAddress(_SHChangeNotify, shell32, 'SHChangeNotify');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHChangeNotify]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHAddToRecentDocs: Pointer;
|
|
|
|
procedure SHAddToRecentDocs;
|
|
begin
|
|
GetProcedureAddress(_SHAddToRecentDocs, shell32, 'SHAddToRecentDocs');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHAddToRecentDocs]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHHandleUpdateImage: Pointer;
|
|
|
|
function SHHandleUpdateImage;
|
|
begin
|
|
GetProcedureAddress(_SHHandleUpdateImage, shell32, 'SHHandleUpdateImage');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHHandleUpdateImage]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHUpdateImageA: Pointer;
|
|
|
|
procedure SHUpdateImageA;
|
|
begin
|
|
GetProcedureAddress(_SHUpdateImageA, shell32, 'SHUpdateImageA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHUpdateImageA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHUpdateImageW: Pointer;
|
|
|
|
procedure SHUpdateImageW;
|
|
begin
|
|
GetProcedureAddress(_SHUpdateImageW, shell32, 'SHUpdateImageW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHUpdateImageW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHUpdateImage: Pointer;
|
|
|
|
procedure SHUpdateImage;
|
|
begin
|
|
GetProcedureAddress(_SHUpdateImage, shell32, 'SHUpdateImage');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHUpdateImage]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHChangeNotifyRegister: Pointer;
|
|
|
|
function SHChangeNotifyRegister;
|
|
begin
|
|
GetProcedureAddress(_SHChangeNotifyRegister, shell32, 'SHChangeNotifyRegister');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHChangeNotifyRegister]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHChangeNotifyDeregister: Pointer;
|
|
|
|
function SHChangeNotifyDeregister;
|
|
begin
|
|
GetProcedureAddress(_SHChangeNotifyDeregister, shell32, 'SHChangeNotifyDeregister');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHChangeNotifyDeregister]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHChangeNotification_Lock: Pointer;
|
|
|
|
function SHChangeNotification_Lock;
|
|
begin
|
|
GetProcedureAddress(_SHChangeNotification_Lock, shell32, 'SHChangeNotification_Lock');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHChangeNotification_Lock]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHChangeNotification_Unlock: Pointer;
|
|
|
|
function SHChangeNotification_Unlock;
|
|
begin
|
|
GetProcedureAddress(_SHChangeNotification_Unlock, shell32, 'SHChangeNotification_Unlock');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHChangeNotification_Unlock]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetRealIDL: Pointer;
|
|
|
|
function SHGetRealIDL;
|
|
begin
|
|
GetProcedureAddress(_SHGetRealIDL, shell32, 'SHGetRealIDL');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetRealIDL]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetInstanceExplorer: Pointer;
|
|
|
|
function SHGetInstanceExplorer;
|
|
begin
|
|
GetProcedureAddress(_SHGetInstanceExplorer, shell32, 'SHGetInstanceExplorer');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetInstanceExplorer]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetDataFromIDListA: Pointer;
|
|
|
|
function SHGetDataFromIDListA;
|
|
begin
|
|
GetProcedureAddress(_SHGetDataFromIDListA, shell32, 'SHGetDataFromIDListA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetDataFromIDListA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetDataFromIDListW: Pointer;
|
|
|
|
function SHGetDataFromIDListW;
|
|
begin
|
|
GetProcedureAddress(_SHGetDataFromIDListW, shell32, 'SHGetDataFromIDListW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetDataFromIDListW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetDataFromIDList: Pointer;
|
|
|
|
function SHGetDataFromIDList;
|
|
begin
|
|
GetProcedureAddress(_SHGetDataFromIDList, shell32, 'SHGetDataFromIDList');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetDataFromIDList]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RestartDialog: Pointer;
|
|
|
|
function RestartDialog;
|
|
begin
|
|
GetProcedureAddress(_RestartDialog, shell32, 'RestartDialog');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RestartDialog]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RestartDialogEx: Pointer;
|
|
|
|
function RestartDialogEx;
|
|
begin
|
|
GetProcedureAddress(_RestartDialogEx, shell32, 'RestartDialogEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RestartDialogEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCoCreateInstance: Pointer;
|
|
|
|
function SHCoCreateInstance;
|
|
begin
|
|
GetProcedureAddress(_SHCoCreateInstance, shell32, 'SHCoCreateInstance');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCoCreateInstance]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCreateStdEnumFmtEtc: Pointer;
|
|
|
|
function SHCreateStdEnumFmtEtc;
|
|
begin
|
|
GetProcedureAddress(_SHCreateStdEnumFmtEtc, shell32, 'SHCreateStdEnumFmtEtc');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCreateStdEnumFmtEtc]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHDoDragDrop: Pointer;
|
|
|
|
function SHDoDragDrop;
|
|
begin
|
|
GetProcedureAddress(_SHDoDragDrop, shell32, 'SHDoDragDrop');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHDoDragDrop]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DAD_SetDragImage: Pointer;
|
|
|
|
function DAD_SetDragImage;
|
|
begin
|
|
GetProcedureAddress(_DAD_SetDragImage, shell32, 'DAD_SetDragImage');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DAD_SetDragImage]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DAD_DragEnterEx: Pointer;
|
|
|
|
function DAD_DragEnterEx;
|
|
begin
|
|
GetProcedureAddress(_DAD_DragEnterEx, shell32, 'DAD_DragEnterEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DAD_DragEnterEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DAD_DragEnterEx2: Pointer;
|
|
|
|
function DAD_DragEnterEx2;
|
|
begin
|
|
GetProcedureAddress(_DAD_DragEnterEx2, shell32, 'DAD_DragEnterEx2');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DAD_DragEnterEx2]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DAD_ShowDragImage: Pointer;
|
|
|
|
function DAD_ShowDragImage;
|
|
begin
|
|
GetProcedureAddress(_DAD_ShowDragImage, shell32, 'DAD_ShowDragImage');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DAD_ShowDragImage]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DAD_DragMove: Pointer;
|
|
|
|
function DAD_DragMove;
|
|
begin
|
|
GetProcedureAddress(_DAD_DragMove, shell32, 'DAD_DragMove');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DAD_DragMove]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DAD_DragLeave: Pointer;
|
|
|
|
function DAD_DragLeave;
|
|
begin
|
|
GetProcedureAddress(_DAD_DragLeave, shell32, 'DAD_DragLeave');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DAD_DragLeave]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DAD_AutoScroll: Pointer;
|
|
|
|
function DAD_AutoScroll;
|
|
begin
|
|
GetProcedureAddress(_DAD_AutoScroll, shell32, 'DAD_AutoScroll');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DAD_AutoScroll]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReadCabinetState: Pointer;
|
|
|
|
function ReadCabinetState;
|
|
begin
|
|
GetProcedureAddress(_ReadCabinetState, shell32, 'ReadCabinetState');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReadCabinetState]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WriteCabinetState: Pointer;
|
|
|
|
function WriteCabinetState;
|
|
begin
|
|
GetProcedureAddress(_WriteCabinetState, shell32, 'WriteCabinetState');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WriteCabinetState]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PathMakeUniqueName: Pointer;
|
|
|
|
function PathMakeUniqueName;
|
|
begin
|
|
GetProcedureAddress(_PathMakeUniqueName, shell32, 'PathMakeUniqueName');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PathMakeUniqueName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PathQualify: Pointer;
|
|
|
|
procedure PathQualify;
|
|
begin
|
|
GetProcedureAddress(_PathQualify, shell32, 'PathQualify');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PathQualify]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PathIsExe: Pointer;
|
|
|
|
function PathIsExe;
|
|
begin
|
|
GetProcedureAddress(_PathIsExe, shell32, 'PathIsExe');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PathIsExe]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PathIsSlowA: Pointer;
|
|
|
|
function PathIsSlowA;
|
|
begin
|
|
GetProcedureAddress(_PathIsSlowA, shell32, 'PathIsSlowA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PathIsSlowA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PathIsSlowW: Pointer;
|
|
|
|
function PathIsSlowW;
|
|
begin
|
|
GetProcedureAddress(_PathIsSlowW, shell32, 'PathIsSlowW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PathIsSlowW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PathIsSlow: Pointer;
|
|
|
|
function PathIsSlow;
|
|
begin
|
|
GetProcedureAddress(_PathIsSlow, shell32, 'PathIsSlow');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PathIsSlow]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PathCleanupSpec: Pointer;
|
|
|
|
function PathCleanupSpec;
|
|
begin
|
|
GetProcedureAddress(_PathCleanupSpec, shell32, 'PathCleanupSpec');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PathCleanupSpec]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PathResolve: Pointer;
|
|
|
|
function PathResolve;
|
|
begin
|
|
GetProcedureAddress(_PathResolve, shell32, 'PathResolve');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PathResolve]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileNameFromBrowse: Pointer;
|
|
|
|
function GetFileNameFromBrowse;
|
|
begin
|
|
GetProcedureAddress(_GetFileNameFromBrowse, shell32, 'GetFileNameFromBrowse');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileNameFromBrowse]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DriveType: Pointer;
|
|
|
|
function DriveType;
|
|
begin
|
|
GetProcedureAddress(_DriveType, shell32, 'DriveType');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DriveType]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RealDriveType: Pointer;
|
|
|
|
function RealDriveType;
|
|
begin
|
|
GetProcedureAddress(_RealDriveType, shell32, 'RealDriveType');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RealDriveType]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsNetDrive: Pointer;
|
|
|
|
function IsNetDrive;
|
|
begin
|
|
GetProcedureAddress(_IsNetDrive, shell32, 'IsNetDrive');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsNetDrive]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_Shell_MergeMenus: Pointer;
|
|
|
|
function Shell_MergeMenus;
|
|
begin
|
|
GetProcedureAddress(_Shell_MergeMenus, shell32, 'Shell_MergeMenus');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_Shell_MergeMenus]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHObjectProperties: Pointer;
|
|
|
|
function SHObjectProperties;
|
|
begin
|
|
GetProcedureAddress(_SHObjectProperties, shell32, 'SHObjectProperties');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHObjectProperties]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHFormatDrive: Pointer;
|
|
|
|
function SHFormatDrive;
|
|
begin
|
|
GetProcedureAddress(_SHFormatDrive, shell32, 'SHFormatDrive');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHFormatDrive]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCreatePropSheetExtArray: Pointer;
|
|
|
|
function SHCreatePropSheetExtArray;
|
|
begin
|
|
GetProcedureAddress(_SHCreatePropSheetExtArray, shell32, 'SHCreatePropSheetExtArray');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCreatePropSheetExtArray]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHDestroyPropSheetExtArray: Pointer;
|
|
|
|
procedure SHDestroyPropSheetExtArray;
|
|
begin
|
|
GetProcedureAddress(_SHDestroyPropSheetExtArray, shell32, 'SHDestroyPropSheetExtArray');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHDestroyPropSheetExtArray]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHAddFromPropSheetExtArray: Pointer;
|
|
|
|
function SHAddFromPropSheetExtArray;
|
|
begin
|
|
GetProcedureAddress(_SHAddFromPropSheetExtArray, shell32, 'SHAddFromPropSheetExtArray');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHAddFromPropSheetExtArray]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHReplaceFromPropSheetExtArray: Pointer;
|
|
|
|
function SHReplaceFromPropSheetExtArray;
|
|
begin
|
|
GetProcedureAddress(_SHReplaceFromPropSheetExtArray, shell32, 'SHReplaceFromPropSheetExtArray');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHReplaceFromPropSheetExtArray]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILClone: Pointer;
|
|
|
|
function ILClone;
|
|
begin
|
|
GetProcedureAddress(_ILClone, shell32, 'ILClone');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILClone]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILGetNext: Pointer;
|
|
|
|
function ILGetNext;
|
|
begin
|
|
GetProcedureAddress(_ILGetNext, shell32, 'ILGetNext');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILGetNext]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILGetSize: Pointer;
|
|
|
|
function ILGetSize;
|
|
begin
|
|
GetProcedureAddress(_ILGetSize, shell32, 'ILGetSize');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILGetSize]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILFindLastID: Pointer;
|
|
|
|
function ILFindLastID;
|
|
begin
|
|
GetProcedureAddress(_ILFindLastID, shell32, 'ILFindLastID');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILFindLastID]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILRemoveLastID: Pointer;
|
|
|
|
function ILRemoveLastID;
|
|
begin
|
|
GetProcedureAddress(_ILRemoveLastID, shell32, 'ILRemoveLastID');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILRemoveLastID]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILAppendID: Pointer;
|
|
|
|
function ILAppendID;
|
|
begin
|
|
GetProcedureAddress(_ILAppendID, shell32, 'ILAppendID');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILAppendID]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILFree: Pointer;
|
|
|
|
procedure ILFree;
|
|
begin
|
|
GetProcedureAddress(_ILFree, shell32, 'ILFree');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILFree]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILCloneFirst: Pointer;
|
|
|
|
function ILCloneFirst;
|
|
begin
|
|
GetProcedureAddress(_ILCloneFirst, shell32, 'ILCloneFirst');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILCloneFirst]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILIsEqual: Pointer;
|
|
|
|
function ILIsEqual;
|
|
begin
|
|
GetProcedureAddress(_ILIsEqual, shell32, 'ILIsEqual');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILIsEqual]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILIsParent: Pointer;
|
|
|
|
function ILIsParent;
|
|
begin
|
|
GetProcedureAddress(_ILIsParent, shell32, 'ILIsParent');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILIsParent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILFindChild: Pointer;
|
|
|
|
function ILFindChild;
|
|
begin
|
|
GetProcedureAddress(_ILFindChild, shell32, 'ILFindChild');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILFindChild]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILCombine: Pointer;
|
|
|
|
function ILCombine;
|
|
begin
|
|
GetProcedureAddress(_ILCombine, shell32, 'ILCombine');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILCombine]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILSaveToStream: Pointer;
|
|
|
|
function ILSaveToStream;
|
|
begin
|
|
GetProcedureAddress(_ILSaveToStream, shell32, 'ILSaveToStream');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILSaveToStream]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILCreateFromPathA: Pointer;
|
|
|
|
function ILCreateFromPathA;
|
|
begin
|
|
GetProcedureAddress(_ILCreateFromPathA, shell32, 'ILCreateFromPathA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILCreateFromPathA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILCreateFromPathW: Pointer;
|
|
|
|
function ILCreateFromPathW;
|
|
begin
|
|
GetProcedureAddress(_ILCreateFromPathW, shell32, 'ILCreateFromPathW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILCreateFromPathW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILCreateFromPath: Pointer;
|
|
|
|
function ILCreateFromPath;
|
|
begin
|
|
GetProcedureAddress(_ILCreateFromPath, shell32, 'ILCreateFromPath');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILCreateFromPath]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHILCreateFromPath: Pointer;
|
|
|
|
function SHILCreateFromPath;
|
|
begin
|
|
GetProcedureAddress(_SHILCreateFromPath, shell32, 'SHILCreateFromPath');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHILCreateFromPath]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenRegStream: Pointer;
|
|
|
|
function OpenRegStream;
|
|
begin
|
|
GetProcedureAddress(_OpenRegStream, shell32, 'OpenRegStream');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenRegStream]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHFindFiles: Pointer;
|
|
|
|
function SHFindFiles;
|
|
begin
|
|
GetProcedureAddress(_SHFindFiles, shell32, 'SHFindFiles');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHFindFiles]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PathGetShortPath: Pointer;
|
|
|
|
procedure PathGetShortPath;
|
|
begin
|
|
GetProcedureAddress(_PathGetShortPath, shell32, 'PathGetShortPath');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PathGetShortPath]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PathYetAnotherMakeUniqueName: Pointer;
|
|
|
|
function PathYetAnotherMakeUniqueName;
|
|
begin
|
|
GetProcedureAddress(_PathYetAnotherMakeUniqueName, shell32, 'PathYetAnotherMakeUniqueName');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PathYetAnotherMakeUniqueName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_Win32DeleteFile: Pointer;
|
|
|
|
function Win32DeleteFile;
|
|
begin
|
|
GetProcedureAddress(_Win32DeleteFile, shell32, 'Win32DeleteFile');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_Win32DeleteFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHRestricted: Pointer;
|
|
|
|
function SHRestricted;
|
|
begin
|
|
GetProcedureAddress(_SHRestricted, shell32, 'SHRestricted');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHRestricted]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SignalFileOpen: Pointer;
|
|
|
|
function SignalFileOpen;
|
|
begin
|
|
GetProcedureAddress(_SignalFileOpen, shell32, 'SignalFileOpen');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SignalFileOpen]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHSimpleIDListFromPath: Pointer;
|
|
|
|
function SHSimpleIDListFromPath;
|
|
begin
|
|
GetProcedureAddress(_SHSimpleIDListFromPath, shell32, 'SHSimpleIDListFromPath');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHSimpleIDListFromPath]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHDefExtractIconA: Pointer;
|
|
|
|
function SHDefExtractIconA;
|
|
begin
|
|
GetProcedureAddress(_SHDefExtractIconA, shell32, 'SHDefExtractIconA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHDefExtractIconA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHDefExtractIconW: Pointer;
|
|
|
|
function SHDefExtractIconW;
|
|
begin
|
|
GetProcedureAddress(_SHDefExtractIconW, shell32, 'SHDefExtractIconW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHDefExtractIconW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHDefExtractIcon: Pointer;
|
|
|
|
function SHDefExtractIcon;
|
|
begin
|
|
GetProcedureAddress(_SHDefExtractIcon, shell32, 'SHDefExtractIcon');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHDefExtractIcon]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_Shell_GetImageLists: Pointer;
|
|
|
|
function Shell_GetImageLists;
|
|
begin
|
|
GetProcedureAddress(_Shell_GetImageLists, shell32, 'Shell_GetImageLists');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_Shell_GetImageLists]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_Shell_GetCachedImageIndex: Pointer;
|
|
|
|
function Shell_GetCachedImageIndex;
|
|
begin
|
|
GetProcedureAddress(_Shell_GetCachedImageIndex, shell32, 'Shell_GetCachedImageIndex');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_Shell_GetCachedImageIndex]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHValidateUNC: Pointer;
|
|
|
|
function SHValidateUNC;
|
|
begin
|
|
GetProcedureAddress(_SHValidateUNC, shell32, 'SHValidateUNC');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHValidateUNC]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PifMgr_OpenProperties: Pointer;
|
|
|
|
function PifMgr_OpenProperties;
|
|
begin
|
|
GetProcedureAddress(_PifMgr_OpenProperties, shell32, 'PifMgr_OpenProperties');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PifMgr_OpenProperties]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PifMgr_GetProperties: Pointer;
|
|
|
|
function PifMgr_GetProperties;
|
|
begin
|
|
GetProcedureAddress(_PifMgr_GetProperties, shell32, 'PifMgr_GetProperties');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PifMgr_GetProperties]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PifMgr_SetProperties: Pointer;
|
|
|
|
function PifMgr_SetProperties;
|
|
begin
|
|
GetProcedureAddress(_PifMgr_SetProperties, shell32, 'PifMgr_SetProperties');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PifMgr_SetProperties]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PifMgr_CloseProperties: Pointer;
|
|
|
|
function PifMgr_CloseProperties;
|
|
begin
|
|
GetProcedureAddress(_PifMgr_CloseProperties, shell32, 'PifMgr_CloseProperties');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PifMgr_CloseProperties]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHSetInstanceExplorer: Pointer;
|
|
|
|
procedure SHSetInstanceExplorer;
|
|
begin
|
|
GetProcedureAddress(_SHSetInstanceExplorer, shell32, 'SHSetInstanceExplorer');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHSetInstanceExplorer]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsUserAnAdmin: Pointer;
|
|
|
|
function IsUserAnAdmin;
|
|
begin
|
|
GetProcedureAddress(_IsUserAnAdmin, shell32, 'IsUserAnAdmin');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsUserAnAdmin]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHShellFolderView_Message: Pointer;
|
|
|
|
function SHShellFolderView_Message;
|
|
begin
|
|
GetProcedureAddress(_SHShellFolderView_Message, shell32, 'SHShellFolderView_Message');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHShellFolderView_Message]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCreateShellFolderView: Pointer;
|
|
|
|
function SHCreateShellFolderView;
|
|
begin
|
|
GetProcedureAddress(_SHCreateShellFolderView, shell32, 'SHCreateShellFolderView');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCreateShellFolderView]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CDefFolderMenu_Create2: Pointer;
|
|
|
|
function CDefFolderMenu_Create2;
|
|
begin
|
|
GetProcedureAddress(_CDefFolderMenu_Create2, shell32, 'CDefFolderMenu_Create2');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CDefFolderMenu_Create2]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHFind_InitMenuPopup: Pointer;
|
|
|
|
function SHFind_InitMenuPopup;
|
|
begin
|
|
GetProcedureAddress(_SHFind_InitMenuPopup, shell32, 'SHFind_InitMenuPopup');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHFind_InitMenuPopup]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCreateShellFolderViewEx: Pointer;
|
|
|
|
function SHCreateShellFolderViewEx;
|
|
begin
|
|
GetProcedureAddress(_SHCreateShellFolderViewEx, shell32, 'SHCreateShellFolderViewEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCreateShellFolderViewEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetSetSettings: Pointer;
|
|
|
|
procedure SHGetSetSettings;
|
|
begin
|
|
GetProcedureAddress(_SHGetSetSettings, shell32, 'SHGetSetSettings');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetSetSettings]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetSettings: Pointer;
|
|
|
|
procedure SHGetSettings;
|
|
begin
|
|
GetProcedureAddress(_SHGetSettings, shell32, 'SHGetSettings');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetSettings]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHBindToParent: Pointer;
|
|
|
|
function SHBindToParent;
|
|
begin
|
|
GetProcedureAddress(_SHBindToParent, shell32, 'SHBindToParent');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHBindToParent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHParseDisplayName: Pointer;
|
|
|
|
function SHParseDisplayName;
|
|
begin
|
|
GetProcedureAddress(_SHParseDisplayName, shell32, 'SHParseDisplayName');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHParseDisplayName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHPathPrepareForWriteA: Pointer;
|
|
|
|
function SHPathPrepareForWriteA;
|
|
begin
|
|
GetProcedureAddress(_SHPathPrepareForWriteA, shell32, 'SHPathPrepareForWriteA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHPathPrepareForWriteA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHPathPrepareForWriteW: Pointer;
|
|
|
|
function SHPathPrepareForWriteW;
|
|
begin
|
|
GetProcedureAddress(_SHPathPrepareForWriteW, shell32, 'SHPathPrepareForWriteW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHPathPrepareForWriteW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHPathPrepareForWrite: Pointer;
|
|
|
|
function SHPathPrepareForWrite;
|
|
begin
|
|
GetProcedureAddress(_SHPathPrepareForWrite, shell32, 'SHPathPrepareForWrite');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHPathPrepareForWrite]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SoftwareUpdateMessageBox: Pointer;
|
|
|
|
function SoftwareUpdateMessageBox;
|
|
begin
|
|
GetProcedureAddress(_SoftwareUpdateMessageBox, shell32, 'SoftwareUpdateMessageBox');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SoftwareUpdateMessageBox]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHPropStgCreate: Pointer;
|
|
|
|
function SHPropStgCreate;
|
|
begin
|
|
GetProcedureAddress(_SHPropStgCreate, shell32, 'SHPropStgCreate');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHPropStgCreate]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHPropStgReadMultiple: Pointer;
|
|
|
|
function SHPropStgReadMultiple;
|
|
begin
|
|
GetProcedureAddress(_SHPropStgReadMultiple, shell32, 'SHPropStgReadMultiple');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHPropStgReadMultiple]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHPropStgWriteMultiple: Pointer;
|
|
|
|
function SHPropStgWriteMultiple;
|
|
begin
|
|
GetProcedureAddress(_SHPropStgWriteMultiple, shell32, 'SHPropStgWriteMultiple');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHPropStgWriteMultiple]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHLimitInputEdit: Pointer;
|
|
|
|
function SHLimitInputEdit;
|
|
begin
|
|
GetProcedureAddress(_SHLimitInputEdit, shell32, 'SHLimitInputEdit');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHLimitInputEdit]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHMultiFileProperties: Pointer;
|
|
|
|
function SHMultiFileProperties;
|
|
begin
|
|
GetProcedureAddress(_SHMultiFileProperties, shell32, 'SHMultiFileProperties');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHMultiFileProperties]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHMapPIDLToSystemImageListIndex: Pointer;
|
|
|
|
function SHMapPIDLToSystemImageListIndex;
|
|
begin
|
|
GetProcedureAddress(_SHMapPIDLToSystemImageListIndex, shell32, 'SHMapPIDLToSystemImageListIndex');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHMapPIDLToSystemImageListIndex]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCLSIDFromString: Pointer;
|
|
|
|
function SHCLSIDFromString;
|
|
begin
|
|
GetProcedureAddress(_SHCLSIDFromString, shell32, 'SHCLSIDFromString');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCLSIDFromString]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
//_SHCreateQueryCancelAutoPlayMoniker: Pointer;
|
|
_SHCreateQueryCancelAM: Pointer;
|
|
|
|
function SHCreateQueryCancelAutoPlayMoniker;
|
|
begin
|
|
GetProcedureAddress(_SHCreateQueryCancelAM, shell32, 'SHCreateQueryCancelAutoPlayMoniker');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCreateQueryCancelAM]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PerUserInit: Pointer;
|
|
|
|
procedure PerUserInit;
|
|
begin
|
|
GetProcedureAddress(_PerUserInit, mydocs, 'PerUserInit');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PerUserInit]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PickIconDlg: Pointer;
|
|
|
|
function PickIconDlg;
|
|
begin
|
|
GetProcedureAddress(_PickIconDlg, shell32, 'PickIconDlg');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PickIconDlg]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetAttributesFromDataObject: Pointer;
|
|
|
|
function SHGetAttributesFromDataObject;
|
|
begin
|
|
GetProcedureAddress(_SHGetAttributesFromDataObject, shell32, 'SHGetAttributesFromDataObject');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetAttributesFromDataObject]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ImportPrivacySettings: Pointer;
|
|
|
|
function ImportPrivacySettings;
|
|
begin
|
|
GetProcedureAddress(_ImportPrivacySettings, shdocvwDll, 'ImportPrivacySettings');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ImportPrivacySettings]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DoPrivacyDlg: Pointer;
|
|
|
|
function DoPrivacyDlg;
|
|
begin
|
|
GetProcedureAddress(_DoPrivacyDlg, shdocvwDll, 'DoPrivacyDlg');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DoPrivacyDlg]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHEnableServiceObject: Pointer;
|
|
|
|
function SHEnableServiceObject;
|
|
begin
|
|
GetProcedureAddress(_SHEnableServiceObject, shdocvwDll, 'SHEnableServiceObject');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHEnableServiceObject]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetSetFolderCustomSettingsA: Pointer;
|
|
|
|
function SHGetSetFolderCustomSettingsA;
|
|
begin
|
|
GetProcedureAddress(_SHGetSetFolderCustomSettingsA, shdocvwDll, 'SHGetSetFolderCustomSettingsA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetSetFolderCustomSettingsA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetSetFolderCustomSettingsW: Pointer;
|
|
|
|
function SHGetSetFolderCustomSettingsW;
|
|
begin
|
|
GetProcedureAddress(_SHGetSetFolderCustomSettingsW, shdocvwDll, 'SHGetSetFolderCustomSettingsW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetSetFolderCustomSettingsW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetSetFolderCustomSettings: Pointer;
|
|
|
|
function SHGetSetFolderCustomSettings;
|
|
begin
|
|
GetProcedureAddress(_SHGetSetFolderCustomSettings, shdocvwDll, 'SHGetSetFolderCustomSettings');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetSetFolderCustomSettings]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CallCPLEntry16: Pointer;
|
|
|
|
function CallCPLEntry16;
|
|
begin
|
|
GetProcedureAddress(_CallCPLEntry16, shdocvwDll, 'CallCPLEntry16');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CallCPLEntry16]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHStartNetConnectionDialogA: Pointer;
|
|
|
|
function SHStartNetConnectionDialogA;
|
|
begin
|
|
GetProcedureAddress(_SHStartNetConnectionDialogA, shdocvwDll, 'SHStartNetConnectionDialogA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHStartNetConnectionDialogA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHStartNetConnectionDialogW: Pointer;
|
|
|
|
function SHStartNetConnectionDialogW;
|
|
begin
|
|
GetProcedureAddress(_SHStartNetConnectionDialogW, shdocvwDll, 'SHStartNetConnectionDialogW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHStartNetConnectionDialogW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHStartNetConnectionDialog: Pointer;
|
|
|
|
function SHStartNetConnectionDialog;
|
|
begin
|
|
GetProcedureAddress(_SHStartNetConnectionDialog, shdocvwDll, 'SHStartNetConnectionDialog');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHStartNetConnectionDialog]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHOpenPropSheetA: Pointer;
|
|
|
|
function SHOpenPropSheetA;
|
|
begin
|
|
GetProcedureAddress(_SHOpenPropSheetA, shdocvwDll, 'SHOpenPropSheetA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHOpenPropSheetA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHOpenPropSheetW: Pointer;
|
|
|
|
function SHOpenPropSheetW;
|
|
begin
|
|
GetProcedureAddress(_SHOpenPropSheetW, shdocvwDll, 'SHOpenPropSheetW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHOpenPropSheetW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHOpenPropSheet: Pointer;
|
|
|
|
function SHOpenPropSheet;
|
|
begin
|
|
GetProcedureAddress(_SHOpenPropSheet, shdocvwDll, 'SHOpenPropSheet');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHOpenPropSheet]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCreateFileExtractIconA: Pointer;
|
|
|
|
function SHCreateFileExtractIconA;
|
|
begin
|
|
GetProcedureAddress(_SHCreateFileExtractIconA, shdocvwDll, 'SHCreateFileExtractIconA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCreateFileExtractIconA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCreateFileExtractIconW: Pointer;
|
|
|
|
function SHCreateFileExtractIconW;
|
|
begin
|
|
GetProcedureAddress(_SHCreateFileExtractIconW, shdocvwDll, 'SHCreateFileExtractIconW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCreateFileExtractIconW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHCreateFileExtractIcon: Pointer;
|
|
|
|
function SHCreateFileExtractIcon;
|
|
begin
|
|
GetProcedureAddress(_SHCreateFileExtractIcon, shdocvwDll, 'SHCreateFileExtractIcon');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHCreateFileExtractIcon]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ILLoadFromStream: Pointer;
|
|
|
|
function ILLoadFromStream;
|
|
begin
|
|
GetProcedureAddress(_ILLoadFromStream, shdocvwDll, 'ILLoadFromStream');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ILLoadFromStream]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PathProcessCommand: Pointer;
|
|
|
|
function PathProcessCommand;
|
|
begin
|
|
GetProcedureAddress(_PathProcessCommand, shdocvwDll, 'PathProcessCommand');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PathProcessCommand]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHLoadOLE: Pointer;
|
|
|
|
function SHLoadOLE;
|
|
begin
|
|
GetProcedureAddress(_SHLoadOLE, shdocvwDll, 'SHLoadOLE');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHLoadOLE]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
//_SHMapIDListToImageListIndexAsync: Pointer;
|
|
_SHMapIDListToImageLIA: Pointer;
|
|
|
|
function SHMapIDListToImageListIndexAsync;
|
|
begin
|
|
GetProcedureAddress(_SHMapIDListToImageLIA, shdocvwDll, 'SHMapIDListToImageListIndexAsync');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHMapIDListToImageLIA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHFlushClipboard: Pointer;
|
|
|
|
function SHFlushClipboard;
|
|
begin
|
|
GetProcedureAddress(_SHFlushClipboard, shdocvwDll, 'SHFlushClipboard');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHFlushClipboard]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHGetShellStyleHInstance: Pointer;
|
|
|
|
function SHGetShellStyleHInstance;
|
|
begin
|
|
GetProcedureAddress(_SHGetShellStyleHInstance, shdocvwDll, 'SHGetShellStyleHInstance');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHGetShellStyleHInstance]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SHRunControlPanel: Pointer;
|
|
|
|
function SHRunControlPanel;
|
|
begin
|
|
GetProcedureAddress(_SHRunControlPanel, shdocvwDll, 'SHRunControlPanel');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SHRunControlPanel]
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
{$ENDIF DYNAMIC_LINK}
|
|
|
|
// DONE: check offsets in Delphi and in C.
|
|
procedure InitShellStateSizes;
|
|
var
|
|
st: TShellState;
|
|
start: PAnsiChar;
|
|
begin
|
|
start := PAnsiChar(@st);
|
|
SHELLSTATE_SIZE_WIN95 := PAnsiChar(@st.lParamSort) - start;
|
|
SHELLSTATE_SIZE_NT4 := PAnsiChar(@st.version) - start;
|
|
SHELLSTATE_SIZE_IE4 := PAnsiChar(@st.uNotUsed) - start;
|
|
SHELLSTATE_SIZE_WIN2K := SizeOf(TShellState);
|
|
end;
|
|
|
|
{$ENDIF JWA_INTERFACESECTION}
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
end.
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|