spiegel-keyman/common/windows/delphi/ext/jwa/Win32API/JwaShlDisp.pas
2022-06-06 08:13:37 +10:00

800 lines
33 KiB
ObjectPascal

{******************************************************************************}
{ }
{ Shell Dispatch 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: shldisp.h, released 2005. }
{ }
{ 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 JwaShlDisp;
{$I ..\Includes\JediAPILib.inc}
interface
{$HPPEMIT '#include "shldisp.h"'}
uses
JwaWinBase, JwaWinUser, JwaWinType, JwaActiveX;
{$HPPEMIT 'interface DECLSPEC_UUID("9BA05970-F6A8-11CF-A442-00A0C90A8F39") IFolderViewOC;'}
{$HPPEMIT 'interface DECLSPEC_UUID("62112AA2-EBE4-11CF-A5FB-0020AFE7292D") DShellFolderViewEvents;'}
{$HPPEMIT 'interface DECLSPEC_UUID("4A3DF050-23BD-11D2-939F-00A0C91EEDBA") DFConstraint;'}
{$HPPEMIT 'interface DECLSPEC_UUID("1D2EFD50-75CE-11D1-B75A-00A0C90564FE") ISearchCommandExt;'}
{$HPPEMIT 'interface DECLSPEC_UUID("FAC32C80-CBE4-11CE-8350-444553540000") FolderItem;'}
{$HPPEMIT 'interface DECLSPEC_UUID("744129E0-CBE5-11CE-8350-444553540000") FolderItems;'}
{$HPPEMIT 'interface DECLSPEC_UUID("08EC3E00-50B0-11CF-960C-0080C7F4EE85") FolderItemVerb;'}
{$HPPEMIT 'interface DECLSPEC_UUID("1F8352C0-50B0-11CF-960C-0080C7F4EE85") FolderItemVerbs;'}
{$HPPEMIT 'interface DECLSPEC_UUID("BBCBDE60-C3FF-11CE-8350-444553540000") Folder;'}
{$HPPEMIT 'interface DECLSPEC_UUID("F0D2D8EF-3890-11D2-BF8B-00C04FB93661") Folder2;'}
{$HPPEMIT 'interface DECLSPEC_UUID("A7AE5F64-C4D7-4D7F-9307-4D24EE54B841") Folder3;'}
{$HPPEMIT 'interface DECLSPEC_UUID("EDC817AA-92B8-11D1-B075-00C04FC33AA5") FolderItem2;'}
{$HPPEMIT 'interface DECLSPEC_UUID("C94F0AD0-F363-11D2-A327-00C04F8EEC7F") FolderItems2;'}
{$HPPEMIT 'interface DECLSPEC_UUID("EAA7C309-BBEC-49D5-821D-64D966CB667F") FolderItems3;'}
{$HPPEMIT 'interface DECLSPEC_UUID("88A05C00-F000-11CE-8350-444553540000") IShellLinkDual;'}
{$HPPEMIT 'interface DECLSPEC_UUID("317EE249-F12E-11D2-B1E4-00C04F8EEB3E") IShellLinkDual2;'}
{$HPPEMIT 'interface DECLSPEC_UUID("E7A1AF80-4D96-11CF-960C-0080C7F4EE85") IShellFolderViewDual;'}
{$HPPEMIT 'interface DECLSPEC_UUID("31C147B6-0ADE-4A3C-B514-DDF932EF6D17") IShellFolderViewDual2;'}
{$HPPEMIT 'interface DECLSPEC_UUID("D8F015C0-C278-11CE-A49E-444553540000") IShellDispatch;'}
{$HPPEMIT 'interface DECLSPEC_UUID("A4C6892C-3BA9-11D2-9DEA-00C04FB16162") IShellDispatch2;'}
{$HPPEMIT 'interface DECLSPEC_UUID("177160CA-BB5A-411C-841D-BD38FACDEAA0") IShellDispatch3;'}
{$HPPEMIT 'interface DECLSPEC_UUID("EFD84B2D-4BCF-4298-BE25-EB542A59FBDA") IShellDispatch4;'}
{$HPPEMIT 'interface DECLSPEC_UUID("60890160-69F0-11D1-B758-00A0C90564FE") DSearchCommandEvents;'}
{$HPPEMIT 'interface DECLSPEC_UUID("2D91EEA1-9932-11D2-BE86-00A0C9A83DA1") IFileSearchBand;'}
{$HPPEMIT 'typedef System::DelphiInterface<IFolderViewOC> _di_IFolderViewOC;'}
{$HPPEMIT 'typedef System::DelphiInterface<DShellFolderViewEvents> _di_DShellFolderViewEvents;'}
{$HPPEMIT 'typedef System::DelphiInterface<DFConstraint> _di_DFConstraint;'}
{$HPPEMIT 'typedef System::DelphiInterface<ISearchCommandExt> _di_ISearchCommandExt;'}
{$HPPEMIT 'typedef System::DelphiInterface<FolderItem> _di_FolderItem;'}
{$HPPEMIT 'typedef System::DelphiInterface<FolderItems> _di_FolderItems;'}
{$HPPEMIT 'typedef System::DelphiInterface<FolderItemVerb> _di_FolderItemVerb;'}
{$HPPEMIT 'typedef System::DelphiInterface<FolderItemVerbs> _di_FolderItemVerbs;'}
{$HPPEMIT 'typedef System::DelphiInterface<Folder> _di_Folder;'}
{$HPPEMIT 'typedef System::DelphiInterface<Folder2> _di_Folder2;'}
{$HPPEMIT 'typedef System::DelphiInterface<Folder3> _di_Folder3;'}
{$HPPEMIT 'typedef System::DelphiInterface<FolderItem2> _di_FolderItem2;'}
{$HPPEMIT 'typedef System::DelphiInterface<FolderItems2> _di_FolderItems2;'}
{$HPPEMIT 'typedef System::DelphiInterface<FolderItems3> _di_FolderItems3;'}
{$HPPEMIT 'typedef System::DelphiInterface<IShellLinkDual> _di_IShellLinkDual;'}
{$HPPEMIT 'typedef System::DelphiInterface<IShellLinkDual2> _di_IShellLinkDual2;'}
{$HPPEMIT 'typedef System::DelphiInterface<IShellFolderViewDual> _di_IShellFolderViewDual;'}
{$HPPEMIT 'typedef System::DelphiInterface<IShellFolderViewDual2> _di_IShellFolderViewDual2;'}
{$HPPEMIT 'typedef System::DelphiInterface<IShellDispatch> _di_IShellDispatch;'}
{$HPPEMIT 'typedef System::DelphiInterface<IShellDispatch2> _di_IShellDispatch2;'}
{$HPPEMIT 'typedef System::DelphiInterface<IShellDispatch3> _di_IShellDispatch3;'}
{$HPPEMIT 'typedef System::DelphiInterface<IShellDispatch4> _di_IShellDispatch4;'}
{$HPPEMIT 'typedef System::DelphiInterface<DSearchCommandEvents> _di_DSearchCommandEvents;'}
{$HPPEMIT 'typedef System::DelphiInterface<IFileSearchBand> _di_IFileSearchBand;'}
{$ENDIF JWA_OMIT_SECTIONS}
{$IFNDEF JWA_IMPLEMENTATIONSECTION}
const
{$EXTERNALSYM IID_IFolderViewOC}
IID_IFolderViewOC = '{9BA05970-F6A8-11CF-A442-00A0C90A8F39}';
{$EXTERNALSYM IID_DShellFolderViewEvents}
IID_DShellFolderViewEvents = '{62112AA2-EBE4-11cf-A5FB-0020AFE7292D}';
{$EXTERNALSYM IID_DFConstraint}
IID_DFConstraint = '{4A3DF050-23BD-11D2-939F-00A0C91EEDBA}';
{$EXTERNALSYM IID_ISearchCommandExt}
IID_ISearchCommandExt = '{1D2EFD50-75CE-11d1-B75A-00A0C90564FE}';
{$EXTERNALSYM IID_FolderItem}
IID_FolderItem = '{FAC32C80-CBE4-11CE-8350-444553540000}';
{$EXTERNALSYM IID_FolderItems}
IID_FolderItems = '{744129E0-CBE5-11CE-8350-444553540000}';
{$EXTERNALSYM IID_FolderItemVerb}
IID_FolderItemVerb = '{08EC3E00-50B0-11CF-960C-0080C7F4EE85}';
{$EXTERNALSYM IID_FolderItemVerbs}
IID_FolderItemVerbs = '{1F8352C0-50B0-11CF-960C-0080C7F4EE85}';
{$EXTERNALSYM IID_Folder}
IID_Folder = '{BBCBDE60-C3FF-11CE-8350-444553540000}';
{$EXTERNALSYM IID_Folder2}
IID_Folder2 = '{F0D2D8EF-3890-11D2-BF8B-00C04FB93661}';
{$EXTERNALSYM IID_Folder3}
IID_Folder3 = '{A7AE5F64-C4D7-4d7f-9307-4D24EE54B841}';
{$EXTERNALSYM IID_FolderItem2}
IID_FolderItem2 = '{EDC817AA-92B8-11D1-B075-00C04FC33AA5}';
{$EXTERNALSYM IID_FolderItems2}
IID_FolderItems2 = '{C94F0AD0-F363-11d2-A327-00C04F8EEC7F}';
{$EXTERNALSYM IID_FolderItems3}
IID_FolderItems3 = '{EAA7C309-BBEC-49D5-821D-64D966CB667F}';
{$EXTERNALSYM IID_IShellLinkDual}
IID_IShellLinkDual = '{88A05C00-F000-11CE-8350-444553540000}';
{$EXTERNALSYM IID_IShellLinkDual2}
IID_IShellLinkDual2 = '{317EE249-F12E-11d2-B1E4-00C04F8EEB3E}';
{$EXTERNALSYM IID_IShellFolderViewDual}
IID_IShellFolderViewDual = '{E7A1AF80-4D96-11CF-960C-0080C7F4EE85}';
{$EXTERNALSYM IID_IShellFolderViewDual2}
IID_IShellFolderViewDual2 = '{31C147b6-0ADE-4A3C-B514-DDF932EF6D17}';
{$EXTERNALSYM IID_IShellDispatch}
IID_IShellDispatch = '{D8F015C0-C278-11CE-A49E-444553540000}';
{$EXTERNALSYM IID_IShellDispatch2}
IID_IShellDispatch2 : TGUID = '{A4C6892C-3BA9-11d2-9DEA-00C04FB16162}';
{$EXTERNALSYM IID_IShellDispatch3}
IID_IShellDispatch3 = '{177160CA-BB5A-411C-841D-BD38FACDEAA0}';
{$EXTERNALSYM IID_IShellDispatch4}
IID_IShellDispatch4 : TGUID = '{EFD84B2D-4BCF-4298-BE25-EB542A59FBDA}';
{$EXTERNALSYM IID_DSearchCommandEvents}
IID_DSearchCommandEvents = '{60890160-69F0-11D1-B758-00A0C90564FE}';
{$EXTERNALSYM IID_IFileSearchBand}
IID_IFileSearchBand = '{2D91EEA1-9932-11d2-BE86-00A0C9A83DA1}';
type
{$EXTERNALSYM SearchCommandExecuteErrors}
SearchCommandExecuteErrors = DWORD;
TSearchCommandExecuteErrors = DWORD;
const
{$EXTERNALSYM SCEE_PATHNOTFOUND}
SCEE_PATHNOTFOUND = 1;
{$EXTERNALSYM SCEE_MAXFILESFOUND}
SCEE_MAXFILESFOUND = SCEE_PATHNOTFOUND + 1;
{$EXTERNALSYM SCEE_INDEXSEARCH}
SCEE_INDEXSEARCH = SCEE_MAXFILESFOUND + 1;
{$EXTERNALSYM SCEE_CONSTRAINT}
SCEE_CONSTRAINT = SCEE_INDEXSEARCH + 1;
{$EXTERNALSYM SCEE_SCOPEMISMATCH}
SCEE_SCOPEMISMATCH = SCEE_CONSTRAINT + 1;
{$EXTERNALSYM SCEE_CASESENINDEX}
SCEE_CASESENINDEX = SCEE_SCOPEMISMATCH + 1;
{$EXTERNALSYM SCEE_INDEXNOTCOMPLETE}
SCEE_INDEXNOTCOMPLETE = SCEE_CASESENINDEX + 1;
type
{$EXTERNALSYM OfflineFolderStatus}
OfflineFolderStatus = DWORD;
TOfflineFolderStatus = DWORD;
const
{$EXTERNALSYM OFS_INACTIVE}
OFS_INACTIVE = -1;
{$EXTERNALSYM OFS_ONLINE}
OFS_ONLINE = OFS_INACTIVE + 1;
{$EXTERNALSYM OFS_OFFLINE}
OFS_OFFLINE = OFS_ONLINE + 1;
{$EXTERNALSYM OFS_SERVERBACK}
OFS_SERVERBACK = OFS_OFFLINE + 1;
{$EXTERNALSYM OFS_DIRTYCACHE}
OFS_DIRTYCACHE = OFS_SERVERBACK + 1;
type
{$EXTERNALSYM ShellFolderViewOptions}
ShellFolderViewOptions = DWORD;
TShellFolderViewOptions = DWORD;
const
{$EXTERNALSYM SFVVO_SHOWALLOBJECTS}
SFVVO_SHOWALLOBJECTS = $1;
{$EXTERNALSYM SFVVO_SHOWEXTENSIONS}
SFVVO_SHOWEXTENSIONS = $2;
{$EXTERNALSYM SFVVO_SHOWCOMPCOLOR}
SFVVO_SHOWCOMPCOLOR = $8;
{$EXTERNALSYM SFVVO_SHOWSYSFILES}
SFVVO_SHOWSYSFILES = $20;
{$EXTERNALSYM SFVVO_WIN95CLASSIC}
SFVVO_WIN95CLASSIC = $40;
{$EXTERNALSYM SFVVO_DOUBLECLICKINWEBVIEW}
SFVVO_DOUBLECLICKINWEBVIEW = $80;
{$EXTERNALSYM SFVVO_DESKTOPHTML}
SFVVO_DESKTOPHTML = $200;
type
{$EXTERNALSYM ShellSpecialFolderConstants}
ShellSpecialFolderConstants = DWORD;
TShellSpecialFolderConstants = DWORD;
const
{$EXTERNALSYM ssfDESKTOP}
ssfDESKTOP = 0;
{$EXTERNALSYM ssfPROGRAMS}
ssfPROGRAMS = $2;
{$EXTERNALSYM ssfCONTROLS}
ssfCONTROLS = $3;
{$EXTERNALSYM ssfPRINTERS}
ssfPRINTERS = $4;
{$EXTERNALSYM ssfPERSONAL}
ssfPERSONAL = $5;
{$EXTERNALSYM ssfFAVORITES}
ssfFAVORITES = $6;
{$EXTERNALSYM ssfSTARTUP}
ssfSTARTUP = $7;
{$EXTERNALSYM ssfRECENT}
ssfRECENT = $8;
{$EXTERNALSYM ssfSENDTO}
ssfSENDTO = $9;
{$EXTERNALSYM ssfBITBUCKET}
ssfBITBUCKET = $a;
{$EXTERNALSYM ssfSTARTMENU}
ssfSTARTMENU = $b;
{$EXTERNALSYM ssfDESKTOPDIRECTORY}
ssfDESKTOPDIRECTORY = $10;
{$EXTERNALSYM ssfDRIVES}
ssfDRIVES = $11;
{$EXTERNALSYM ssfNETWORK}
ssfNETWORK = $12;
{$EXTERNALSYM ssfNETHOOD}
ssfNETHOOD = $13;
{$EXTERNALSYM ssfFONTS}
ssfFONTS = $14;
{$EXTERNALSYM ssfTEMPLATES}
ssfTEMPLATES = $15;
{$EXTERNALSYM ssfCOMMONSTARTMENU}
ssfCOMMONSTARTMENU = $16;
{$EXTERNALSYM ssfCOMMONPROGRAMS}
ssfCOMMONPROGRAMS = $17;
{$EXTERNALSYM ssfCOMMONSTARTUP}
ssfCOMMONSTARTUP = $18;
{$EXTERNALSYM ssfCOMMONDESKTOPDIR}
ssfCOMMONDESKTOPDIR = $19;
{$EXTERNALSYM ssfAPPDATA}
ssfAPPDATA = $1a;
{$EXTERNALSYM ssfPRINTHOOD}
ssfPRINTHOOD = $1b;
{$EXTERNALSYM ssfLOCALAPPDATA}
ssfLOCALAPPDATA = $1c;
{$EXTERNALSYM ssfALTSTARTUP}
ssfALTSTARTUP = $1d;
{$EXTERNALSYM ssfCOMMONALTSTARTUP}
ssfCOMMONALTSTARTUP = $1e;
{$EXTERNALSYM ssfCOMMONFAVORITES}
ssfCOMMONFAVORITES = $1f;
{$EXTERNALSYM ssfINTERNETCACHE}
ssfINTERNETCACHE = $20;
{$EXTERNALSYM ssfCOOKIES}
ssfCOOKIES = $21;
{$EXTERNALSYM ssfHISTORY}
ssfHISTORY = $22;
{$EXTERNALSYM ssfCOMMONAPPDATA}
ssfCOMMONAPPDATA = $23;
{$EXTERNALSYM ssfWINDOWS}
ssfWINDOWS = $24;
{$EXTERNALSYM ssfSYSTEM}
ssfSYSTEM = $25;
{$EXTERNALSYM ssfPROGRAMFILES}
ssfPROGRAMFILES = $26;
{$EXTERNALSYM ssfMYPICTURES}
ssfMYPICTURES = $27;
{$EXTERNALSYM ssfPROFILE}
ssfPROFILE = $28;
{$EXTERNALSYM ssfSYSTEMx86}
ssfSYSTEMx86 = $29;
{$EXTERNALSYM ssfPROGRAMFILESx86}
ssfPROGRAMFILESx86 = $30;
type
{$EXTERNALSYM IFolderViewOC}
IFolderViewOC = interface(IDispatch)
['{9BA05970-F6A8-11CF-A442-00A0C90A8F39}']
procedure SetFolderView(pdisp: IDispatch); safecall;
end;
{$EXTERNALSYM DShellFolderViewEvents}
DShellFolderViewEvents = interface(IDispatch)
['{62112AA2-EBE4-11cf-A5FB-0020AFE7292D}']
end;
const
{$EXTERNALSYM CLSID_ShellFolderViewOC}
CLSID_ShellFolderViewOC = '{9BA05971-F6A8-11CF-A442-00A0C90A8F39}';
type
{$EXTERNALSYM DFConstraint}
DFConstraint = interface(IDispatch)
['{4A3DF050-23BD-11D2-939F-00A0C91EEDBA}']
function get_Name: TBStr; safecall;
function get_Value: Variant; safecall;
end;
{$EXTERNALSYM SEARCH_FOR_TYPE}
SEARCH_FOR_TYPE = DWORD;
TSearchForType = DWORD;
const
{$EXTERNALSYM SCE_SEARCHFORFILES}
SCE_SEARCHFORFILES = 0;
{$EXTERNALSYM SCE_SEARCHFORCOMPUTERS}
SCE_SEARCHFORCOMPUTERS = 1;
type
{$EXTERNALSYM ISearchCommandExt}
ISearchCommandExt = interface(IDispatch)
['{1D2EFD50-75CE-11d1-B75A-00A0C90564FE}']
procedure ClearResults; safecall;
procedure NavigateToSearchResults; safecall;
function get_ProgressText: TBStr; safecall;
procedure SaveSearch; safecall;
function GetErrorInfo(out pbs: TBStr): Integer; safecall;
procedure SearchFor(iFor: Integer); safecall;
function GetScopeInfo(bsScope: TBStr): Integer; safecall;
procedure RestoreSavedSearch(var pvarFile: Variant); safecall;
procedure Execute(var RecordsAffected, Parameters: Variant; Options: LongInt); safecall;
procedure AddConstraint(Name: TBStr; Value: Variant); safecall;
function GetNextConstraint(fReset: WordBool): DFConstraint; safecall;
end;
{$EXTERNALSYM FolderItemVerbs}
FolderItemVerbs = interface;
{$EXTERNALSYM FolderItem}
FolderItem = interface(IDispatch)
['{FAC32C80-CBE4-11CE-8350-444553540000}']
function get_Application: IDispatch; safecall;
function get_Parent: IDispatch; safecall;
function get_Name: TBStr; safecall;
procedure put_Name(bs: TBStr); safecall;
function get_Path: TBStr; safecall;
function get_GetLink: IDispatch; safecall;
function get_GetFolder: IDispatch; safecall;
function get_IsLink: WordBool; safecall;
function get_IsFolder: WordBool; safecall;
function get_IsFileSystem: WordBool; safecall;
function get_IsBrowsable: WordBool; safecall;
function get_ModifyDate: TDateTime; safecall;
procedure put_ModifyDate(dt: TDateTime); safecall;
function get_Size: Longint; safecall;
function get_Type: TBStr; safecall;
function Verbs: FolderItemVerbs; safecall;
procedure InvokeVerb(vVerb: Variant); safecall;
end;
{$EXTERNALSYM FolderItems}
FolderItems = interface(IDispatch)
['{744129E0-CBE5-11CE-8350-444553540000}']
function get_Count: Longint; safecall;
function get_Application: IDispatch; safecall;
function get_Parent: IDispatch; safecall;
function Item(index: Variant): FolderItem; safecall;
function _NewEnum: IUnknown; safecall;
end;
{$EXTERNALSYM FolderItemVerb}
FolderItemVerb = interface(IDispatch)
['{08EC3E00-50B0-11CF-960C-0080C7F4EE85}']
function get_Application: IDispatch; safecall;
function get_Parent: IDispatch; safecall;
function get_Name: TBStr; safecall;
procedure DoIt; safecall;
end;
FolderItemVerbs = interface(IDispatch)
['{1F8352C0-50B0-11CF-960C-0080C7F4EE85}']
function get_Count: Longint; safecall;
function get_Application: IDispatch; safecall;
function get_Parent: IDispatch; safecall;
function Item(index: Variant): FolderItemVerb; safecall;
function _NewEnum: IUnknown; safecall;
end;
{$EXTERNALSYM Folder}
Folder = interface(IDispatch)
['{BBCBDE60-C3FF-11CE-8350-444553540000}']
function get_Title: TBStr; safecall;
function get_Application: IDispatch; safecall;
function get_Parent: IDispatch; safecall;
function get_ParentFolder: Folder; safecall;
function Items: FolderItems; safecall;
function ParseName(bName: TBStr): FolderItem; safecall;
procedure NewFolder(bName: TBStr; vOptions: Variant); safecall;
procedure MoveHere(vItem, vOptions: Variant); safecall;
procedure CopyHere(vItem, vOptions: Variant); safecall;
function GetDetailsOf(vItem: Variant; iColumn: Integer): TBStr; safecall;
end;
{$EXTERNALSYM Folder2}
Folder2 = interface(Folder)
['{F0D2D8EF-3890-11D2-BF8B-00C04FB93661}']
function get_Self: FolderItem; safecall;
function get_OfflineStatus: Longint; safecall;
procedure Synchronize; safecall;
function get_HaveToShowWebViewBarricade: WordBool; safecall;
procedure DismissedWebViewBarricade; safecall;
end;
{$EXTERNALSYM Folder3}
Folder3 = interface(Folder2)
['{A7AE5F64-C4D7-4d7f-9307-4D24EE54B841}']
function get_ShowWebViewBarricade: WordBool; safecall;
procedure put_ShowWebViewBarricade(bShowWebViewBarricade: WordBool); safecall;
end;
{$EXTERNALSYM FolderItem2}
FolderItem2 = interface(FolderItem)
['{EDC817AA-92B8-11D1-B075-00C04FC33AA5}']
procedure InvokeVerbEx(vVerb, vArgs: Variant); safecall;
function ExtendedProperty(bstrPropName: TBStr): Variant; safecall;
end;
const
{$EXTERNALSYM CLSID_ShellFolderItem}
CLSID_ShellFolderItem: TGUID = '{2FE352EA-FD1F-11D2-B1F4-00C04F8EEB3E}';
type
{$EXTERNALSYM FolderItems2}
FolderItems2 = interface(FolderItems)
['{C94F0AD0-F363-11d2-A327-00C04F8EEC7F}']
procedure InvokeVerbEx(vVerb, vArgs: Variant); safecall;
end;
{$EXTERNALSYM FolderItems3}
FolderItems3 = interface(FolderItems2)
['{EAA7C309-BBEC-49D5-821D-64D966CB667F}']
procedure Filter(grfFlags: LongInt; bstrFileSpec: TBStr); safecall;
function get_Verbs: FolderItemVerbs; safecall;
end;
{$EXTERNALSYM IShellLinkDual}
IShellLinkDual = interface(IDispatch)
['{88A05C00-F000-11CE-8350-444553540000}']
function get_Path: TBStr; safecall;
procedure put_Path(bs: TBStr); safecall;
function get_Description: TBStr; safecall;
procedure put_Description(bs: TBStr); safecall;
function get_WorkingDirectory: TBStr; safecall;
procedure put_WorkingDirectory(bs: TBStr); safecall;
function get_Arguments: TBStr; safecall;
procedure put_Arguments(bs: TBStr); safecall;
function get_Hotkey: Integer; safecall;
procedure put_Hotkey(iHK: Integer); safecall;
function get_ShowCommand: Integer; safecall;
procedure put_ShowCommand(iShowCommand: Integer); safecall;
procedure Resolve(fFlags: Integer); safecall;
function GetIconLocation(out pbs: TBStr): Integer; safecall;
procedure SetIconLocation(bs: TBStr; iIcon: Integer); safecall;
procedure Save(vWhere: Variant); safecall;
end;
{$EXTERNALSYM IShellLinkDual2}
IShellLinkDual2 = interface(IShellLinkDual)
['{317EE249-F12E-11d2-B1E4-00C04F8EEB3E}']
function get_Target: FolderItem; safecall;
end;
const
{$EXTERNALSYM CLSID_ShellLinkObject}
CLSID_ShellLinkObject: TGUID = '{11219420-1768-11d1-95BE-00609797EA4F}';
type
{$EXTERNALSYM IShellFolderViewDual}
IShellFolderViewDual = interface(IDispatch)
['{E7A1AF80-4D96-11CF-960C-0080C7F4EE85}']
function get_Application: IDispatch; safecall;
function get_Parent: IDispatch; safecall;
function get_Folder: Folder; safecall;
function SelectedItems: FolderItems; safecall;
function get_FocusedItem: FolderItem; safecall;
procedure SelectItem(var pvfi: Variant; dwFlags: Integer); safecall;
function PopupItemMenu(pfi: FolderItem; vx, vy: Variant): TBStr; safecall;
function get_Script: IDispatch; safecall;
function get_ViewOptions: Longint; safecall;
end;
{$EXTERNALSYM IShellFolderViewDual2}
IShellFolderViewDual2 = interface(IShellFolderViewDual)
['{31C147B6-0ADE-4A3C-B514-DDF932EF6D17}']
function get_CurrentViewMode: UINT; safecall;
procedure put_CurrentViewMode(ViewMode: UINT); safecall;
procedure SelectItemRelative(iRelative: Integer); safecall;
end;
const
{$EXTERNALSYM CLSID_ShellFolderView}
CLSID_ShellFolderView: TGUID = '{62112AA1-EBE4-11cf-A5FB-0020AFE7292D}';
type
{$EXTERNALSYM IShellDispatch}
IShellDispatch = interface(IDispatch)
['{D8F015C0-C278-11CE-A49E-444553540000}']
function get_Application: IDispatch; safecall;
function get_Parent: IDispatch; safecall;
function NameSpace(vDir: Variant): Folder; safecall;
function BrowseForFolder(Hwnd: LongInt; Title: TBStr; Options: LongInt; RootFolder: Variant): Folder; safecall;
function Windows: IDispatch; safecall;
procedure Open(vDir: Variant); safecall;
procedure Explore(vDir: Variant); safecall;
procedure MinimizeAll; safecall;
procedure UndoMinimizeALL; safecall;
procedure FileRun; safecall;
procedure CascadeWindows; safecall;
procedure TileVertically; safecall;
procedure TileHorizontally; safecall;
procedure ShutdownWindows; safecall;
procedure Suspend; safecall;
procedure EjectPC; safecall;
procedure SetTime; safecall;
procedure TrayProperties; safecall;
procedure Help; safecall;
procedure FindFiles; safecall;
procedure FindComputer; safecall;
procedure RefreshMenu; safecall;
procedure ControlPanelItem(szDir: TBStr); safecall;
end;
{$EXTERNALSYM IShellDispatch2}
IShellDispatch2 = interface(IShellDispatch)
['{A4C6892C-3BA9-11d2-9DEA-00C04FB16162}']
function IsRestricted(Group, Restriction: TBStr): Longint; safecall;
procedure ShellExecute(AFile: TBStr; vArgs, vDir, vOperation, vShow: Variant); safecall;
procedure FindPrinter(name, location, model: TBStr); safecall;
function GetSystemInformation(name: TBStr): Variant; safecall;
function ServiceStart(ServiceName: TBStr; Persistent: Variant): Variant; safecall;
function ServiceStop(ServiceName: TBStr; Persistent: Variant): Variant; safecall;
function IsServiceRunning(ServiceName: TBStr): Variant; safecall;
function CanStartStopService(ServiceName: TBStr): Variant; safecall;
function ShowBrowserBar(bstrClsid: TBStr; bShow: Variant): Variant; safecall;
end;
{$EXTERNALSYM IShellDispatch3}
IShellDispatch3 = interface(IShellDispatch2)
['{177160CA-BB5A-411C-841D-BD38FACDEAA0}']
procedure AddToRecent(varFile: Variant; bstrCategory: TBStr); safecall;
end;
{$EXTERNALSYM IShellDispatch4}
IShellDispatch4 = interface(IShellDispatch3)
['{EFD84B2D-4BCF-4298-BE25-EB542A59FBDA}']
procedure WindowsSecurity; safecall;
procedure ToggleDesktop; safecall;
function ExplorerPolicy(bstrPolicyName: TBStr): Variant; safecall;
function GetSetting(lSetting: LongInt): WordBool; safecall;
end;
const
{$EXTERNALSYM CLSID_Shell}
CLSID_Shell: TGUID = '{13709620-C279-11CE-A49E-444553540000}';
{$EXTERNALSYM CLSID_ShellDispatchInproc}
CLSID_ShellDispatchInproc: TGUID = '{0A89A860-D7B1-11CE-8350-444553540000}';
{$EXTERNALSYM CLSID_WebViewFolderContents}
CLSID_WebViewFolderContents: TGUID = '{1820FED0-473E-11D0-A96C-00C04FD705A2}';
type
{$EXTERNALSYM DSearchCommandEvents}
DSearchCommandEvents = interface(IDispatch)
['{60890160-69F0-11D1-B758-00A0C90564FE}']
end;
const
{$EXTERNALSYM CLSID_SearchCommand}
CLSID_SearchCommand: TGUID = '{B005E690-678D-11d1-B758-00A0C90564FE}';
type
{$EXTERNALSYM IFileSearchBand}
IFileSearchBand = interface(IDispatch)
['{2D91EEA1-9932-11d2-BE86-00A0C9A83DA1}']
procedure SetFocus; safecall;
procedure SetSearchParameters(pbstrSearchID: PBSTR; bNavToResults: WordBool; pvarScope, pvarQueryFile: PVariant); safecall;
function get_SearchID: TBStr; safecall;
function get_Scope: Variant; safecall;
function get_QueryFile: Variant; safecall;
end;
const
{$EXTERNALSYM CLSID_FileSearchBand}
CLSID_FileSearchBand: TGUID = '{C4EE31F3-4768-11D2-BE5C-00A0C9A83DA1}';
type
{$EXTERNALSYM IWebWizardHost}
IWebWizardHost = interface(IDispatch)
['{18BCC359-4990-4BFB-B951-3C83702BE5F9}']
procedure FinalBack; safecall;
procedure FinalNext; safecall;
procedure Cancel; safecall;
procedure put_Caption(bstrCaption: TBStr); safecall;
function get_Caption: TBStr; safecall;
procedure put_Property(bstrPropertyName: TBStr; var pvProperty: Variant); safecall;
function get_Property(bstrPropertyName: TBStr): Variant; safecall;
procedure SetWizardButtons(vfEnableBack, vfEnableNext, vfLastPage: WordBool); safecall;
procedure SetHeaderText(bstrHeaderTitle, bstrHeaderSubtitle: TBStr); safecall;
end;
{$EXTERNALSYM INewWDEvents}
INewWDEvents = interface(IWebWizardHost)
['{0751C551-7568-41C9-8E5B-E22E38919236}']
function PassportAuthenticate(bstrSignInUrl: TBStr): WordBool; safecall;
end;
{$EXTERNALSYM IPassportClientServices}
IPassportClientServices = interface(IDispatch)
['{B30F7305-5967-45D1-B7BC-D6EB7163D770}']
function MemberExists(bstrUser: TBStr; bstrPassword: TBStr): WordBool; safecall;
end;
const
{$EXTERNALSYM CLSID_PassportClientServices}
CLSID_PassportClientServices: TGUID = '{2D2307C8-7DB4-40D6-9100-D52AF4F97A5B}';
//-------------------------------------------------------------------------
//
// IAutoComplete interface
//
//
// [Member functions]
//
// IAutoComplete::Init(hwndEdit, punkACL, pwszRegKeyPath, pwszQuickComplete)
// This function initializes an AutoComplete object, telling it
// what control to subclass, and what list of strings to process.
//
// IAutoComplete::Enable(fEnable)
// This function enables or disables the AutoComplete functionality.
//
//-------------------------------------------------------------------------
type
{$EXTERNALSYM IAutoComplete}
IAutoComplete = interface(IUnknown)
['{00BB2762-6A77-11D0-A535-00C04FD7D062}']
function Init(hwndEdit: HWND; punkACL: IUnknown; pwszRegKeyPath, pwszQuickComplete: POleStr): HResult; stdcall;
function Enable(fEnable: BOOL): HResult; stdcall;
end;
{$EXTERNALSYM _tagAUTOCOMPLETEOPTIONS}
_tagAUTOCOMPLETEOPTIONS = DWORD;
{$EXTERNALSYM AUTOCOMPLETEOPTIONS}
AUTOCOMPLETEOPTIONS = _tagAUTOCOMPLETEOPTIONS;
TAutoCompleteOptions = _tagAUTOCOMPLETEOPTIONS;
const
{$EXTERNALSYM ACO_NONE}
ACO_NONE = 0;
{$EXTERNALSYM ACO_AUTOSUGGEST}
ACO_AUTOSUGGEST = $1;
{$EXTERNALSYM ACO_AUTOAPPEND}
ACO_AUTOAPPEND = $2;
{$EXTERNALSYM ACO_SEARCH}
ACO_SEARCH = $4;
{$EXTERNALSYM ACO_FILTERPREFIXES}
ACO_FILTERPREFIXES = $8;
{$EXTERNALSYM ACO_USETAB}
ACO_USETAB = $10;
{$EXTERNALSYM ACO_UPDOWNKEYDROPSLIST}
ACO_UPDOWNKEYDROPSLIST = $20;
{$EXTERNALSYM ACO_RTLREADING}
ACO_RTLREADING = $40;
type
{$EXTERNALSYM IAutoComplete2}
IAutoComplete2 = interface(IAutoComplete)
['{EAC04BC0-3791-11d2-BB95-0060977B464C}']
function SetOptions(dwFlag: DWORD): HResult; stdcall;
function GetOptions(out pdwFlag: DWORD): HResult; stdcall;
end;
// INTERFACE: IEnumACString
//
// This interface was implemented to return autocomplete strings
// into the caller's buffer (to reduce the number of memory allocations).
// A sort index is also returned to control the order of items displayed.
// by autocomplete. The sort index should be set to zero if unused.
//
// The NextItem method increments the current index by one (similar to Next
// when one item is requested).
//
{$EXTERNALSYM _tagACENUMOPTION}
_tagACENUMOPTION = DWORD;
{$EXTERNALSYM ACENUMOPTION}
ACENUMOPTION = _tagACENUMOPTION;
TACEnumOption = _tagACENUMOPTION;
const
{$EXTERNALSYM ACEO_NONE}
ACEO_NONE = 0;
{$EXTERNALSYM ACEO_MOSTRECENTFIRST}
ACEO_MOSTRECENTFIRST = $1;
{$EXTERNALSYM ACEO_FIRSTUNUSED}
ACEO_FIRSTUNUSED = $10000;
type
{$EXTERNALSYM IEnumACString}
IEnumACString = interface(IEnumString)
['{8E74C210-CF9D-4eaf-A403-7356428F0A5A}']
function NextItem(pszUrl: POleStr; cchMax: ULONG; out pulSortIndex: ULONG): HResult; stdcall;
function SetEnumOptions(dwOptions: DWORD): HResult; stdcall;
function GetEnumOptions(out pdwOptions: DWORD): HResult; stdcall;
end;
// INTERFACE: IAsyncOperation
//
// This interface was implemented to turn some previously synchronous
// interfaces into async. The following example is for
// doing the IDataObject::Drop() operation asynchronously.
//
// Sometimes the rendering of the IDataObject data (IDataObject::GetData() or
// STGMEDIUM.pStream->Read()) can be time intensive. The IDropTarget
// may want to do this on another thread.
//
// Implimentation Check list:
// DoDragDrop Caller:
// If this code can support asynch operations, then it needs to
// QueryInterface() the IDataObject for IAsyncOperation.
// IAsyncOperation::SetAsyncMode(VARIANT_TRUE).
// After calling DoDragDrop(), call InOperation(). If any call fails
// or InOperation() return FALSE, use the pdwEffect returned by DoDragDrop()
// and the operation completed synchrously.
//
// OleSetClipboard Caller:
// If this code can support asynch operations, then it needs to
// QueryInterface() the IDataObject for IAsyncOperation. Then call
// IAsyncOperation::SetAsyncMode(VARIANT_TRUE).
// If any of that fails, the final dwEffect should be passed to the IDataObject via
// CFSTR_PERFORMEDDROPEFFECT.
//
// IDataObect Object:
// IAsyncOperation::GetAsyncMode() should return whatever was last passed in
// fDoOpAsync to ::SetAsyncMode() or VARIANT_FALSE if ::SetAsyncMode()
// was never called.
// IAsyncOperation::SetAsyncMode() should AddRef and store paocb.
// IAsyncOperation::StartOperation() should store the fact that this was called and
// cause InOperation() to return VARIANT_TRUE. pbcReserved is not used and needs
// to be NULL.
// IAsyncOperation::InOperation() should return VARIANT_TRUE only if ::StartOperation()
// was called.
// IAsyncOperation::EndOperation() needs to call paocbpaocb->EndOperation() with the same
// parameters. Then release paocb.
// IDataObject::SetData(CFSTR_PERFORMEDDROPEFFECT) When this happens, call
// EndOperation(<into VAR>S_OK, NULL, <into VAR>dwEffect) and pass the dwEffect from the hglobal.
//
// IDropTarget Object:
// IDropTarget::Drop() If asynch operations aren't supported, nothing is required.
// The asynch operation can only happen if GetAsyncMode() returns VARIANT_TRUE.
// Before starting the asynch operation, StartOperation(NULL) needs to be called before
// returning from IDropTarget::Drop().
{$EXTERNALSYM IAsyncOperation}
IAsyncOperation = interface(IUnknown)
['{3D8B0590-F691-11d2-8EA9-006097DF5BD4}']
function SetAsyncMode(fDoOpAsync: BOOL): HResult; stdcall;
function GetAsyncMode(out pfIsOpAsync: BOOL): HResult; stdcall;
function StartOperation(pbcReserved: IBindCtx): HResult; stdcall;
function InOperation(out pfInAsyncOp: BOOL): HResult; stdcall;
function EndOperation(hResult: HResult; pbcReserved: IBindCtx; dwEffects: DWORD): HResult; stdcall;
end;
{$ENDIF JWA_IMPLEMENTATIONSECTION}
{$IFNDEF JWA_OMIT_SECTIONS}
implementation
uses JwaWinDLLNames;
{$ENDIF JWA_OMIT_SECTIONS}
{$IFNDEF JWA_OMIT_SECTIONS}
end.
{$ENDIF JWA_OMIT_SECTIONS}