diff options
author | George Hazan <george.hazan@gmail.com> | 2013-03-01 14:58:22 +0000 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2013-03-01 14:58:22 +0000 |
commit | 15858ed4002eabbe921dc56c8bbfbf7a639c48cb (patch) | |
tree | fdb47e7796293d4f3e9e473e62deafcff671c63a /plugins | |
parent | fb4bd8c9af760d0f8050c2957b845f025243e696 (diff) |
git-svn-id: http://svn.miranda-ng.org/main/trunk@3820 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/Utils.pas/shlobj.pp | 2547 |
1 files changed, 2547 insertions, 0 deletions
diff --git a/plugins/Utils.pas/shlobj.pp b/plugins/Utils.pas/shlobj.pp new file mode 100644 index 0000000000..197a0bf882 --- /dev/null +++ b/plugins/Utils.pas/shlobj.pp @@ -0,0 +1,2547 @@ +{ + This file is part of the Free Pascal run time library. + Copyright (c) 2007 by Florian Klaempfl + member of the Free Pascal development team. + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + Original copyright statement follows. + +} +{$mode objfpc} +unit shlobj; + + interface + +uses + windows,activex,shellapi,commctrl; + +Const + IID_IShellExtInit ='{000214E8-0000-0000-C000-000000000046}'; + IID_IShellFolder : TGUID ='{000214E6-0000-0000-C000-000000000046}'; + IID_IEnumList : TGUID ='{000214F2-0000-0000-C000-000000000046}'; + IID_IAutoComplete : TGUID ='{00bb2762-6a77-11d0-a535-00c04fd7d062}'; + IID_IAutoComplete2 : TGUID ='{EAC04BC0-3791-11d2-BB95-0060977B464C}'; + IID_IContextMenu : TGUID ='{000214E4-0000-0000-c000-000000000046}'; + IID_IContextMenu2 : TGUID ='{000214f4-0000-0000-c000-000000000046}'; + IID_IContextMenu3 : TGUID ='{bcfce0a0-ec17-11d0-8d10-00a0c90f2719}'; + IID_IPersistFolder : TGUID ='{000214EA-0000-0000-C000-000000000046}'; + IID_IPersistFolder2 : TGUID ='{1AC3D9F0-175C-11d1-95BE-00609797EA4F}'; + IID_IPersistIDListr : TGUID ='{1079acfc-29bd-11d3-8e0d-00c04f6837d5}'; + IID_IEnumExtraSearch: TGUID ='{0E700BE1-9DB6-11d1-A1CE-00C04FD75D13}'; + IID_IShellFolder2 : TGUID ='{93F2F68C-1D1B-11d3-A30E-00C04F79ABD1}'; + IID_IEXtractIconW : TGUID ='{000214fa-0000-0000-c000-000000000046}'; + IID_IEXtractIconA : TGUID ='{000214eb-0000-0000-c000-000000000046}'; + IID_IShellLinkA : TGUID ='{000214EE-0000-0000-C000-000000000046}'; + CLSID_StdMarshal : TGUID = '{00000017-0000-0000-c000-000000000046}'; + CLSID_IdentityUnmarshal : TGUID = '{0000001b-0000-0000-c000-000000000046}'; + CLSID_InProcFreeMarshaler : TGUID = '{0000001c-0000-0000-c000-000000000046}'; + CLSID_PSGenObject : TGUID = '{0000030c-0000-0000-c000-000000000046}'; + CLSID_PSClientSite : TGUID = '{0000030d-0000-0000-c000-000000000046}'; + CLSID_PSClassObject : TGUID = '{0000030e-0000-0000-c000-000000000046}'; + CLSID_PSInPlaceActive : TGUID = '{0000030f-0000-0000-c000-000000000046}'; + CLSID_PSInPlaceFrame : TGUID = '{00000310-0000-0000-c000-000000000046}'; + CLSID_PSDragDrop : TGUID = '{00000311-0000-0000-c000-000000000046}'; + CLSID_PSBindCtx : TGUID = '{00000312-0000-0000-c000-000000000046}'; + CLSID_PSEnumerators : TGUID = '{00000313-0000-0000-c000-000000000046}'; + CLSID_Picture_Metafile : TGUID = '{00000315-0000-0000-c000-000000000046}'; + CLSID_StaticMetafile : TGUID = '{00000315-0000-0000-c000-000000000046}'; + CLSID_Picture_Dib : TGUID = '{00000316-0000-0000-c000-000000000046}'; + CLSID_StaticDib : TGUID = '{00000316-0000-0000-c000-000000000046}'; + CLSID_Picture_EnhMetafile : TGUID = '{00000319-0000-0000-c000-000000000046}'; + CLSID_DCOMAccessControl : TGUID = '{0000031d-0000-0000-c000-000000000046}'; + CLSID_ShellDesktop : TGUID = '{00021400-0000-0000-c000-000000000046}'; + CLSID_ShellLink : TGUID = '{00021401-0000-0000-c000-000000000046}'; + CLSID_InternetExplorer : TGUID = '{0002DF01-0000-0000-C000-000000000046}'; + CLSID_StdComponentCategoriesMgr : TGUID = '{0002e005-0000-0000-c000-000000000046}'; + CLSID_WebCrawlerAgent : TGUID = '{08165ea0-e946-11cf-9c87-00aa005127ed}'; + CLSID_ShellDispatchInproc : TGUID = '{0A89A860-D7B1-11CE-8350-444553540000}'; + CLSID_OldHTMLFormElement : TGUID = '{0D04D285-6BEC-11CF-8B97-00AA00476DA6}'; + CLSID_CFontPropPage : TGUID = '{0be35200-8f91-11ce-9de3-00aa004bb851}'; + CLSID_CColorPropPage : TGUID = '{0be35201-8f91-11ce-9de3-00aa004bb851}'; + CLSID_CPicturePropPage : TGUID = '{0be35202-8f91-11ce-9de3-00aa004bb851}'; + CLSID_StdFont : TGUID = '{0be35203-8f91-11ce-9de3-00aa004bb851}'; + CLSID_StdPicture : TGUID = '{0be35204-8f91-11ce-9de3-00aa004bb851}'; + CLSID_ShellLinkObject : TGUID = '{11219420-1768-11D1-95BE-00609797EA4F}'; + CLSID_HTMLLocation : TGUID = '{163BB1E1-6E00-11CF-837A-48DC04C10000}'; + CLSID_WebViewFolderContents : TGUID = '{1820FED0-473E-11D0-A96C-00C04FD705A2}'; + CLSID_HTMLDocument : TGUID = '{25336920-03F9-11CF-8FD0-00AA00686F13}'; + CLSID_HTMLPluginDocument : TGUID = '{25336921-03f9-11cf-8fd0-00aa00686f13}'; + CLSID_CMultiLanguage : TGUID = '{275C23E2-3747-11D0-9FEA-00AA003F8646}'; + CLSID_HTMLImg : TGUID = '{3050F241-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLSelectElement : TGUID = '{3050F245-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLTableCell : TGUID = '{3050F246-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLAnchorElement : TGUID = '{3050F248-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLDivPosition : TGUID = '{3050F249-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLBody : TGUID = '{3050F24A-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLOptionElement : TGUID = '{3050F24D-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLObjectElement : TGUID = '{3050F24E-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLFormElement : TGUID = '{3050F251-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLHRElement : TGUID = '{3050F252-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLEmbed : TGUID = '{3050F25D-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLUnknownElement : TGUID = '{3050F268-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLUListElement : TGUID = '{3050F269-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLTextElement : TGUID = '{3050F26A-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLTable : TGUID = '{3050F26B-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLTableCol : TGUID = '{3050F26C-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLTableRow : TGUID = '{3050F26D-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLPhraseElement : TGUID = '{3050F26E-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLParaElement : TGUID = '{3050F26F-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLOListElement : TGUID = '{3050F270-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLMapElement : TGUID = '{3050F271-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLListElement : TGUID = '{3050F272-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLLIElement : TGUID = '{3050F273-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLMetaElement : TGUID = '{3050F275-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLBaseElement : TGUID = '{3050F276-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLLinkElement : TGUID = '{3050F277-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLIsIndexElement : TGUID = '{3050F278-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLNextIdElement : TGUID = '{3050F279-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLHeaderElement : TGUID = '{3050F27A-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLFontElement : TGUID = '{3050F27B-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLDTElement : TGUID = '{3050F27C-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLDListElement : TGUID = '{3050F27D-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLDivElement : TGUID = '{3050F27E-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLDDElement : TGUID = '{3050F27F-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLBRElement : TGUID = '{3050F280-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLBlockElement : TGUID = '{3050F281-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLBaseFontElement : TGUID = '{3050F282-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLAreaElement : TGUID = '{3050F283-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLTitleElement : TGUID = '{3050F284-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLStyle : TGUID = '{3050F285-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLDialog : TGUID = '{3050F28A-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLScriptElement : TGUID = '{3050F28C-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLInputTextElement : TGUID = '{3050F2AB-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLTextAreaElement : TGUID = '{3050F2AC-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLInputFileElement : TGUID = '{3050F2AE-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLInputButtonElement : TGUID = '{3050F2B4-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLMarqueeElement : TGUID = '{3050F2B9-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLOptionButtonElement : TGUID = '{3050F2BE-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLInputImage : TGUID = '{3050F2C4-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLButtonElement : TGUID = '{3050F2C6-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLStyleSheet : TGUID = '{3050F2E4-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLTableSection : TGUID = '{3050F2E9-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLTableCaption : TGUID = '{3050F2EC-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLFrameBase : TGUID = '{3050F312-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLFrameElement : TGUID = '{3050F314-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLIFrame : TGUID = '{3050F316-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLCommentElement : TGUID = '{3050F317-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLFrameSetSite : TGUID = '{3050F31A-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLLabelElement : TGUID = '{3050F32B-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLScreen : TGUID = '{3050F35D-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLBGsound : TGUID = '{3050F370-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLStyleElement : TGUID = '{3050F37D-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLStyleSheetsCollection : TGUID = '{3050F37F-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLNoShowElement : TGUID = '{3050F38B-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLOptionElementFactory : TGUID = '{3050F38D-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLImageElementFactory : TGUID = '{3050F38F-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLWindowProxy : TGUID = '{3050F391-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLStyleSheetRulesCollection : TGUID = '{3050F3CD-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLStyleSheetRule : TGUID = '{3050F3CE-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLRuleStyle : TGUID = '{3050F3D0-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLStyleFontFace : TGUID = '{3050F3D4-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLSpanFlow : TGUID = '{3050F3E6-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLFieldSetElement : TGUID = '{3050F3E8-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLLegendElement : TGUID = '{3050F3E9-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLFiltersCollection : TGUID = '{3050F3EF-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_HTMLSpanElement : TGUID = '{3050F3F5-98B4-11CF-BB82-00AA00BDCE0B}'; + CLSID_CMimeTypes : TGUID = '{3050F3FE-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_CPlugins : TGUID = '{3050F3FF-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_COpsProfile : TGUID = '{3050F402-98B5-11CF-BB82-00AA00BDCE0B}'; + CLSID_MHTMLDocument : TGUID = '{3050f3d9-98b5-11cf-bb82-00aa00bdce0b}'; + CLSID_ClassInstallFilter : TGUID = '{32b533bb-edae-11d0-bd5a-00aa00b92af1}'; + CLSID_CUrlHistory : TGUID = '{3c374a40-bae4-11cf-bf7d-00aa006946ee}'; + CLSID_CdlProtocol : TGUID = '{3dd53d40-7b8b-11d0-b013-00aa0059ce02}'; + CLSID_StdEncodingFilterFac : TGUID = '{54c37cd0-d944-11d0-a9f4-006097942311}'; + CLSID_TaskbarList : TGUID = '{56fdf344-fd6d-11d0-958a-006097c9a090}'; + CLSID_ShellFolderView : TGUID = '{62112AA1-EBE4-11CF-A5FB-0020AFE7292D}'; + CLSID_CFSIconOverlayManager : TGUID = '{63b51f81-c868-11d0-999c-00c04fd655e1}'; + CLSID_ShellUIHelper : TGUID = '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}'; + CLSID_ActiveDesktop : TGUID = '{75048700-ef1f-11d0-9888-006097deacf9}'; + CLSID_StdHlink : TGUID = '{79eac9d0-baf9-11ce-8c82-00aa004ba90b}'; + CLSID_StdHlinkBrowseContext : TGUID = '{79eac9d1-baf9-11ce-8c82-00aa004ba90b}'; + CLSID_StdURLMoniker : TGUID = '{79eac9e0-baf9-11ce-8c82-00aa004ba90b}'; + CLSID_StdURLProtocol : TGUID = '{79eac9e1-baf9-11ce-8c82-00aa004ba90b}'; + CLSID_HttpProtocol : TGUID = '{79eac9e2-baf9-11ce-8c82-00aa004ba90b}'; + CLSID_FtpProtocol : TGUID = '{79eac9e3-baf9-11ce-8c82-00aa004ba90b}'; + CLSID_GopherProtocol : TGUID = '{79eac9e4-baf9-11ce-8c82-00aa004ba90b}'; + CLSID_HttpSProtocol : TGUID = '{79eac9e5-baf9-11ce-8c82-00aa004ba90b}'; + CLSID_MkProtocol : TGUID = '{79eac9e6-baf9-11ce-8c82-00aa004ba90b}'; + CLSID_FileProtocol : TGUID = '{79eac9e7-baf9-11ce-8c82-00aa004ba90b}'; + CLSID_UrlMkBindCtx : TGUID = '{79eac9f2-baf9-11ce-8c82-00aa004ba90b}'; + CLSID_InternetSecurityManager : TGUID = '{7b8a2d94-0ac9-11d1-896c-00c04fb6bfc4}'; + CLSID_InternetZoneManager : TGUID = '{7b8a2d95-0ac9-11d1-896c-00c04fb6bfc4}'; + CLSID_CDLAgent : TGUID = '{7d559c10-9fe9-11d0-93f7-00aa0059ce02}'; + CLSID_OverlayIdentifier_SlowFile : TGUID = '{7d688a77-c613-11d0-999b-00c04fd655e1}'; + CLSID_StockFontPage : TGUID = '{7ebdaae0-8120-11cf-899f-00aa00688b10}'; + CLSID_StockColorPage : TGUID = '{7ebdaae1-8120-11cf-899f-00aa00688b10}'; + CLSID_StockPicturePage : TGUID = '{7ebdaae2-8120-11cf-899f-00aa00688b10}'; + CLSID_WebBrowser : TGUID = '{8856F961-340A-11D0-A96B-00C04FD705A2}'; + CLSID_DeCompMimeFilter : TGUID = '{8f6b0360-b80d-11d0-a9b3-006097942311}'; + CLSID_ShellFolderViewOC : TGUID = '{9BA05971-F6A8-11CF-A442-00A0C90A8F39}'; + CLSID_ShellWindows : TGUID = '{9BA05972-F6A8-11CF-A442-00A0C90A8F39}'; + CLSID_SubscriptionMgr : TGUID = '{ABBE31D0-6DAE-11D0-BECA-00C04FD940BE}'; + CLSID_ChannelMgr : TGUID = '{B3CDAE90-D170-11D0-802B-00C04FD75D13}'; + CLSID_CMLangString : TGUID = '{C04D65CF-B70D-11D0-B188-00AA0038C969}'; + CLSID_HTMLWindow2 : TGUID = '{D48A6EC6-6A4A-11CF-94A7-444553540000}'; + CLSID_OldHTMLDocument : TGUID = '{D48A6EC9-6A4A-11CF-94A7-444553540000}'; + CLSID_CMLangConvertCharset : TGUID = '{D66D6F99-CDAA-11D0-B822-00C04FC9B31F}'; + CLSID_WebBrowser_V1 : TGUID = '{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}'; + CLSID_HTMLHistory : TGUID = '{FECEAAA3-8405-11CF-8BA1-00AA00476DA6}'; + CLSID_HTMLNavigator : TGUID = '{FECEAAA6-8405-11CF-8BA1-00AA00476DA6}'; + CLSID_SoftDistExt : TGUID = '{b15b8dc0-c7e1-11d0-8680-00aa00bdcb71}'; + CLSID_CURLSearchHook : TGUID = '{cfbfae00-17a6-11d0-99cb-00c04fd64497}'; + CLSID_PersistPropset : TGUID = '{fb8f0821-0164-101b-84ed-08002b2ec713}'; + CLSID_ConvertVBX : TGUID = '{fb8f0822-0164-101b-84ed-08002b2ec713}'; + CLSID_InternetShortcut : TGUID = '{fbf23b40-e3f0-101b-8488-00aa003e56f8}'; + CLSID_ShellItem : TGUID = '{9ac9fbe1-e0a2-4ad6-b4ee-e212013ea917}'; + CLSID_FileOpenDialog : TGUID = '{DC1C5A9C-E88A-4dde-A5A1-60F82A20AEF7}'; + CLSID_FileSaveDialog : TGUID = '{C0B4E2F3-BA21-4773-8DBA-335EC946EB8B}'; + +Const + SV2GV_CURRENTVIEW = DWORD(-1); + SV2GV_DEFAULTVIEW = DWORD(-2); + + INTERNET_MAX_URL_LENGTH = 2083; + MAX_COLUMN_NAME_LEN = 80; + MAX_COLUMN_DESC_LEN = 128; + + + CMF_NORMAL = $00000000; + CMF_DEFAULTONLY = $00000001; + CMF_VERBSONLY = $00000002; + CMF_EXPLORE = $00000004; + CMF_NOVERBS = $00000008; + CMF_CANRENAME = $00000010; + CMF_NODEFAULT = $00000020; + CMF_INCLUDESTATIC = $00000040; + CMF_EXTENDEDVERBS = $00000100; // rarely used verbs + CMF_RESERVED = $ffff0000; // View specific + GCS_VERBA = $00000000; // canonical verb + GCS_HELPTEXTA = $00000001; // help text (for status bar) + GCS_VALIDATEA = $00000002; // validate command exists + GCS_VERBW = $00000004; // canonical verb (unicode) + GCS_HELPTEXTW = $00000005; // help text (unicode version) + GCS_VALIDATEW = $00000006; // validate command exists (unicode) + GCS_UNICODE = $00000004; // for bit testing - Unicode string + CMIC_MASK_SHIFT_DOWN = $10000000; + CMIC_MASK_CONTROL_DOWN = $40000000; + CMIC_MASK_PTINVOKE = $20000000; + GIL_OPENICON = $0001; // allows containers to specify an "open" look + GIL_FORSHELL = $0002; // icon is to be displayed in a ShellFolder + GIL_ASYNC = $0020; // this is an async extract, return E_PENDING + GIL_DEFAULTICON = $0040; // get the default icon location if the final one takes too long to get + GIL_FORSHORTCUT = $0080; // the icon is for a shortcut to the object + GIL_SIMULATEDOC = $0001; // simulate this document icon for this + GIL_PERINSTANCE = $0002; // icons from this class are per instance (each file has its own) + GIL_PERCLASS = $0004; // icons from this class per class (shared for all files of this type) + GIL_NOTFILENAME = $0008; // location is not a filename, must call ::ExtractIcon + GIL_DONTCACHE = $0010; // this icon should not be cached + ISIOI_ICONFILE = $00000001; // path is returned through pwszIconFile + ISIOI_ICONINDEX = $00000002; // icon index in pwszIconFile is returned through pIndex + OI_ASYNC = $FFFFEEEE; + IDO_SHGIOI_SHARE = $0FFFFFFF; + IDO_SHGIOI_LINK = $0FFFFFFE; + IDO_SHGIOI_SLOWFILE = $0FFFFFFFD; + NT_CONSOLE_PROPS_SIG = $A0000002; + NT_FE_CONSOLE_PROPS_SIG = $A0000004; + EXP_DARWIN_ID_SIG = $A0000006; + EXP_LOGO3_ID_SIG = $A0000007; + EXP_SPECIAL_FOLDER_SIG = $A0000005; // LPEXP_SPECIAL_FOLDER + EXP_SZ_LINK_SIG = $A0000001; // LPEXP_SZ_LINK (target) + EXP_SZ_ICON_SIG = $A0000007; // LPEXP_SZ_LINK (icon) + FO_MOVE = $0001; + FO_COPY = $0002; + FO_DELETE = $0003; + FO_RENAME = $0004; + FOF_MULTIDESTFILES = $0001; + FOF_CONFIRMMOUSE = $0002; + FOF_SILENT = $0004; // don't create progress/report + FOF_RENAMEONCOLLISION = $0008; + FOF_NOCONFIRMATION = $0010; // Don't prompt the user. + FOF_WANTMAPPINGHANDLE = $0020; // Fill in SHFILEOPSTRUCT.hNameMappings + FOF_ALLOWUNDO = $0040; + FOF_FILESONLY = $0080; // on *.*, do only files + FOF_SIMPLEPROGRESS = $0100; // means don't show names of files + FOF_NOCONFIRMMKDIR = $0200; // don't confirm making any needed dirs + FOF_NOERRORUI = $0400; // don't put up error UI + FOF_NOCOPYSECURITYATTRIBS = $0800; // dont copy NT file Security Attributes + FOF_NORECURSION = $1000; // don't recurse into directories. + FOF_NO_CONNECTED_ELEMENTS = $2000; // don't operate on connected file elements. + FOF_WANTNUKEWARNING = $4000; // during delete operation, warn if nuking instead of recycling (partially overrides FOF_NOCONFIRMATION) + FOF_NORECURSEREPARSE = $8000; // treat reparse points as objects, not containers + PO_DELETE = $0013; // printer is being deleted + PO_RENAME = $0014; // printer is being renamed + PO_PORTCHANGE = $0020; // port this printer connected to is being changed + PO_REN_PORT = $0034; // PO_RENAME and PO_PORTCHANGE at same time. + FVSIF_RECT = $00000001; // The rect variable has valid data. + FVSIF_PINNED = $00000002; // We should Initialize pinned + FVSIF_NEWFAILED = $08000000; // The new file passed back failed + FVSIF_NEWFILE = $80000000; // A new file to view has been returned + FVSIF_CANVIEWIT = $40000000; // The viewer can view it. + FCIDM_SHVIEWFIRST = $0000; + FCIDM_SHVIEWLAST = $7fff; + FCIDM_BROWSERFIRST = $a000; + FCIDM_BROWSERLAST = $bf00; + FCIDM_GLOBALFIRST = $8000; + FCIDM_GLOBALLAST = $9fff; + FCIDM_MENU_FILE = (FCIDM_GLOBALFIRST + $0000); + FCIDM_MENU_EDIT = (FCIDM_GLOBALFIRST + $0040); + FCIDM_MENU_VIEW = (FCIDM_GLOBALFIRST + $0080); + FCIDM_MENU_VIEW_SEP_OPTIONS= (FCIDM_GLOBALFIRST + $0081); + FCIDM_MENU_TOOLS = (FCIDM_GLOBALFIRST + $00c0); // for Win9x compat + FCIDM_MENU_TOOLS_SEP_GOTO = (FCIDM_GLOBALFIRST + $00c1); // for Win9x compat + FCIDM_MENU_HELP = (FCIDM_GLOBALFIRST + $0100); + FCIDM_MENU_FIND = (FCIDM_GLOBALFIRST + $0140); + FCIDM_MENU_EXPLORE = (FCIDM_GLOBALFIRST + $0150); + FCIDM_MENU_FAVORITES = (FCIDM_GLOBALFIRST + $0170); + CDBOSC_SETFOCUS = $00000000; + CDBOSC_KILLFOCUS = $00000001; + CDBOSC_SELCHANGE = $00000002; + CDBOSC_RENAME = $00000003; + CDBOSC_STATECHANGE = $00000004; + CDB2N_CONTEXTMENU_DONE = $00000001; + CDB2N_CONTEXTMENU_START = $00000002; + CDB2GVF_SHOWALLFILES = $00000001; + CSIDL_DESKTOP = $0000; // <desktop> + CSIDL_INTERNET = $0001; // Internet Explorer (icon on desktop) + CSIDL_PROGRAMS = $0002; // Start Menu\Programs + CSIDL_CONTROLS = $0003; // My Computer\Control Panel + CSIDL_PRINTERS = $0004; // My Computer\Printers + CSIDL_PERSONAL = $0005; // My Documents + CSIDL_FAVORITES = $0006; // <user name>\Favorites + CSIDL_STARTUP = $0007; // Start Menu\Programs\Startup + CSIDL_RECENT = $0008; // <user name>\Recent + CSIDL_SENDTO = $0009; // <user name>\SendTo + CSIDL_BITBUCKET = $000a; // <desktop>\Recycle Bin + CSIDL_STARTMENU = $000b; // <user name>\Start Menu + CSIDL_MYDOCUMENTS = $000c; // logical "My Documents" desktop icon + CSIDL_MYMUSIC = $000d; // "My Music" folder + CSIDL_MYVIDEO = $000e; // "My Videos" folder + CSIDL_DESKTOPDIRECTORY = $0010; // <user name>\Desktop + CSIDL_DRIVES = $0011; // My Computer + CSIDL_NETWORK = $0012; // Network Neighborhood (My Network Places) + CSIDL_NETHOOD = $0013; // <user name>\nethood + CSIDL_FONTS = $0014; // windows\fonts + CSIDL_TEMPLATES = $0015; + CSIDL_COMMON_STARTMENU = $0016; // All Users\Start Menu + CSIDL_COMMON_PROGRAMS = $0017; // All Users\Start Menu\Programs + CSIDL_COMMON_STARTUP = $0018; // All Users\Startup + CSIDL_COMMON_DESKTOPDIRECTORY = $0019; // All Users\Desktop + CSIDL_APPDATA = $001a; // <user name>\Application Data + CSIDL_PRINTHOOD = $001b; // <user name>\PrintHood + CSIDL_LOCAL_APPDATA = $001c; // <user name>\Local Settings\Applicaiton Data (non roaming) + CSIDL_ALTSTARTUP = $001d; // non localized startup + CSIDL_COMMON_ALTSTARTUP = $001e; // non localized common startup + CSIDL_COMMON_FAVORITES = $001f; + CSIDL_INTERNET_CACHE = $0020; + CSIDL_COOKIES = $0021; + CSIDL_HISTORY = $0022; + CSIDL_COMMON_APPDATA = $0023; // All Users\Application Data + CSIDL_WINDOWS = $0024; // GetWindowsDirectory() + CSIDL_SYSTEM = $0025; // GetSystemDirectory() + CSIDL_PROGRAM_FILES = $0026; // C:\Program Files + CSIDL_MYPICTURES = $0027; // C:\Program Files\My Pictures + CSIDL_PROFILE = $0028; // USERPROFILE + CSIDL_SYSTEMX86 = $0029; // x86 system directory on RISC + CSIDL_PROGRAM_FILESX86 = $002a; // x86 C:\Program Files on RISC + CSIDL_PROGRAM_FILES_COMMON = $002b; // C:\Program Files\Common + CSIDL_PROGRAM_FILES_COMMONX86 = $002c; // x86 Program Files\Common on RISC + CSIDL_COMMON_TEMPLATES = $002d; // All Users\Templates + CSIDL_COMMON_DOCUMENTS = $002e; // All Users\Documents + CSIDL_COMMON_ADMINTOOLS = $002f; // All Users\Start Menu\Programs\Administrative Tools + CSIDL_ADMINTOOLS = $0030; // <user name>\Start Menu\Programs\Administrative Tools + CSIDL_CONNECTIONS = $0031; // Network and Dial-up Connections + CSIDL_COMMON_MUSIC = $0035; // All Users\My Music + CSIDL_COMMON_PICTURES = $0036; // All Users\My Pictures + CSIDL_COMMON_VIDEO = $0037; // All Users\My Video + CSIDL_RESOURCES = $0038; // Resource Direcotry + CSIDL_RESOURCES_LOCALIZED = $0039; // Localized Resource Direcotry + CSIDL_COMMON_OEM_LINKS = $003a; // Links to All Users OEM specific apps + CSIDL_CDBURN_AREA = $003b; // USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning + CSIDL_COMPUTERSNEARME = $003d; // Computers Near Me (computered from Workgroup membership) + CSIDL_FLAG_CREATE = $8000; // combine with CSIDL_ value to force folder creation in SHGetFolderPath() + CSIDL_FLAG_DONT_VERIFY = $4000; // combine with CSIDL_ value to return an unverified folder path + CSIDL_FLAG_NO_ALIAS = $1000; // combine with CSIDL_ value to insure non-alias versions of the pidl + CSIDL_FLAG_PER_USER_INIT = $0800; // combine with CSIDL_ value to indicate per-user init (eg. upgrade) + CSIDL_FLAG_MASK = $FF00; // mask for all possible flag values + FCS_READ = $00000001; + FCS_FORCEWRITE = $00000002; + FCSM_VIEWID = $00000001; + FCSM_WEBVIEWTEMPLATE = $00000002; + FCSM_INFOTIP = $00000004; + FCSM_CLSID = $00000008; + FCSM_ICONFILE = $00000010; + FCSM_LOGO = $00000020; + FCSM_FLAGS = $00000040; + BIF_RETURNONLYFSDIRS = $0001; // For finding a folder to start document searching + BIF_DONTGOBELOWDOMAIN = $0002; // For starting the Find Computer + BIF_STATUSTEXT = $0004; // Top of the dialog has 2 lines of text for BROWSEINFO.lpszTitle and one line if + BIF_RETURNFSANCESTORS = $0008; + BIF_EDITBOX = $0010; // Add an editbox to the dialog + BIF_VALIDATE = $0020; // insist on valid result (or CANCEL) + BIF_NEWDIALOGSTYLE = $0040; // Use the new dialog layout with the ability to resize + BIF_BROWSEINCLUDEURLS = $0080; // Allow URLs to be displayed or entered. (Requires BIF_USENEWUI) + BIF_UAHINT = $0100; // Add a UA hint to the dialog, in place of the edit box. May not be combined with BIF_EDITBOX + BIF_NONEWFOLDERBUTTON = $0200; // Do not add the "New Folder" button to the dialog. Only applicable with BIF_NEWDIALOGSTYLE. + BIF_NOTRANSLATETARGETS = $0400; // don't traverse target as shortcut + BIF_BROWSEFORCOMPUTER = $1000; // Browsing for Computers. + BIF_BROWSEFORPRINTER = $2000; // Browsing for Printers + BIF_BROWSEINCLUDEFILES = $4000; // Browsing for Everything + BIF_SHAREABLE = $8000; // sharable resources displayed (remote shares, requires BIF_USENEWUI) + PROGDLG_NORMAL = $00000000; // default normal progress dlg behavior + PROGDLG_MODAL = $00000001; // the dialog is modal to its hwndParent (default is modeless) + PROGDLG_AUTOTIME = $00000002; // automatically updates the "Line3" text with the "time remaining" (you cant call SetLine3 if you passs this!) + PROGDLG_NOTIME = $00000004; // we dont show the "time remaining" if this is set. We need this if dwTotal < dwCompleted for sparse files + PROGDLG_NOMINIMIZE = $00000008; // Do not have a minimize button in the caption bar. + PROGDLG_NOPROGRESSBAR = $00000010; // Don't display the progress bar + PDTIMER_RESET = $00000001; // Reset the timer so the progress will be calculated from now until the first ::SetProgress() is called so + DWFRF_NORMAL = $0000; + DWFRF_DELETECONFIGDATA = $0001; + DWFAF_HIDDEN = $0001; // add hidden + ITSSFLAG_COMPLETE_ON_DESTROY = $0000; + ITSSFLAG_KILL_ON_DESTROY = $0001; + ITSSFLAG_SUPPORTS_TERMINATE = $0002; + ITSSFLAG_FLAGS_MASK = $0003; + ITSSFLAG_THREAD_TERMINATE_TIMEOUT = $0010; + ITSSFLAG_THREAD_POOL_TIMEOUT = $0020; + ITSAT_DEFAULT_LPARAM = $ffffffff; + ITSAT_DEFAULT_PRIORITY = $10000000; + ITSAT_MAX_PRIORITY = $7fffffff; + ITSAT_MIN_PRIORITY = $00000000; + ITSSFLAG_TASK_PLACEINFRONT = $00000001; + ITSSFLAG_TASK_PLACEINBACK = $00000002; + SHIMSTCAPFLAG_LOCKABLE = $0001; // does the store require/support locking + SHIMSTCAPFLAG_PURGEABLE = $0002; // does the store require dead items purging externally ? + ISFB_MASK_STATE = $00000001; // TRUE if dwStateMask and dwState is valid + ISFB_MASK_BKCOLOR = $00000002; // TRUE if crBkgnd field is valid + ISFB_MASK_VIEWMODE = $00000004; // TRUE if wViewMode field is valid + ISFB_MASK_SHELLFOLDER = $00000008; + ISFB_MASK_IDLIST = $00000010; + ISFB_MASK_COLORS = $00000020; // TRUE if crXXXX fields are valid (except bkgnd) + ISFB_STATE_DEFAULT = $00000000; + ISFB_STATE_DEBOSSED = $00000001; + ISFB_STATE_ALLOWRENAME = $00000002; + ISFB_STATE_NOSHOWTEXT = $00000004; // TRUE if _fNoShowText + ISFB_STATE_CHANNELBAR = $00000010; // TRUE if we want NavigateTarget support + ISFB_STATE_QLINKSMODE = $00000020; // TRUE if we want to turn off drag & drop onto content items + ISFB_STATE_FULLOPEN = $00000040; // TRUE if band should maximize when opened + ISFB_STATE_NONAMESORT = $00000080; // TRUE if band should _not_ sort icons by name + ISFB_STATE_BTNMINSIZE = $00000100; // TRUE if band should report min thickness of button + ISFBVIEWMODE_SMALLICONS = $0001; + ISFBVIEWMODE_LARGEICONS = $0002; + ISFBVIEWMODE_LOGOS = $0003; + COMPONENT_TOP = $3fffffff; // izOrder value meaning component is at the top + IS_NORMAL = $00000001; + IS_FULLSCREEN = $00000002; + IS_SPLIT = $00000004; + IS_VALIDSTATEBITS = dword(IS_NORMAL or IS_SPLIT or IS_FULLSCREEN or $80000000 or $40000000); // All of the currently defined IS_* bits. + AD_APPLY_SAVE = $00000001; + AD_APPLY_HTMLGEN = $00000002; + AD_APPLY_REFRESH = $00000004; + AD_APPLY_FORCE = $00000008; + AD_APPLY_BUFFERED_REFRESH = $00000010; + AD_APPLY_DYNAMICREFRESH = $00000020; + COMP_ELEM_TYPE = $00000001; + COMP_ELEM_CHECKED = $00000002; + COMP_ELEM_DIRTY = $00000004; + COMP_ELEM_NOSCROLL = $00000008; + COMP_ELEM_POS_LEFT = $00000010; + COMP_ELEM_POS_TOP = $00000020; + COMP_ELEM_SIZE_WIDTH = $00000040; + COMP_ELEM_SIZE_HEIGHT = $00000080; + COMP_ELEM_POS_ZINDEX = $00000100; + COMP_ELEM_SOURCE = $00000200; + COMP_ELEM_FRIENDLYNAME = $00000400; + COMP_ELEM_SUBSCRIBEDURL = $00000800; + COMP_ELEM_ORIGINAL_CSI = $00001000; + COMP_ELEM_RESTORED_CSI = $00002000; + COMP_ELEM_CURITEMSTATE = $00004000; + ADDURL_SILENT = $0001; + COMPONENT_DEFAULT_LEFT = ($FFFF); + COMPONENT_DEFAULT_TOP = ($FFFF); + SSM_CLEAR = $0000; + SSM_SET = $0001; + SSM_REFRESH = $0002; + SSM_UPDATE = $0004; + SCHEME_DISPLAY = $0001; + SCHEME_EDIT = $0002; + SCHEME_LOCAL = $0004; + SCHEME_GLOBAL = $0008; + SCHEME_REFRESH = $0010; + SCHEME_UPDATE = $0020; + SCHEME_DONOTUSE = $0040; // used to be SCHEME_ENUMERATE; no longer supported + SCHEME_CREATE = $0080; + GADOF_DIRTY = $00000001; + SHCDF_UPDATEITEM = $00000001; // this flag is a hint that the file has changed since the last call to GetItemData + SHCNE_RENAMEITEM = DWord($00000001); + SHCNE_CREATE = DWord($00000002); + SHCNE_DELETE = DWord($00000004); + SHCNE_MKDIR = DWord($00000008); + SHCNE_RMDIR = DWord($00000010); + SHCNE_MEDIAINSERTED = DWord($00000020); + SHCNE_MEDIAREMOVED = DWord($00000040); + SHCNE_DRIVEREMOVED = DWord($00000080); + SHCNE_DRIVEADD = DWord($00000100); + SHCNE_NETSHARE = DWord($00000200); + SHCNE_NETUNSHARE = DWord($00000400); + SHCNE_ATTRIBUTES = DWord($00000800); + SHCNE_UPDATEDIR = DWord($00001000); + SHCNE_UPDATEITEM = DWord($00002000); + SHCNE_SERVERDISCONNECT = DWord($00004000); + SHCNE_UPDATEIMAGE = DWord($00008000); + SHCNE_DRIVEADDGUI = DWord($00010000); + SHCNE_RENAMEFOLDER = DWord($00020000); + SHCNE_FREESPACE = DWord($00040000); + SHCNE_EXTENDED_EVENT = DWord($04000000); + SHCNE_ASSOCCHANGED = DWord($08000000); + SHCNE_DISKEVENTS = DWord($0002381F); + SHCNE_GLOBALEVENTS = DWord($0C0581E0); // Events that dont match pidls first + SHCNE_ALLEVENTS = DWord($7FFFFFFF); + SHCNE_INTERRUPT = DWord($80000000); // The presence of this flag indicates + SHCNF_IDLIST = $0000; // LPITEMIDLIST + SHCNF_PATHA = $0001; // path name + SHCNF_PRINTERA = $0002; // printer friendly name + SHCNF_DWORD = $0003; // DWORD + SHCNF_PATHW = $0005; // path name + SHCNF_PRINTERW = $0006; // printer friendly name + SHCNF_TYPE = $00FF; + SHCNF_FLUSH = $1000; + SHCNF_FLUSHNOWAIT = $2000; + QITIPF_DEFAULT = $00000000; + QITIPF_USENAME = $00000001; + QITIPF_LINKNOTARGET = $00000002; + QITIPF_LINKUSETARGET = $00000004; + QITIPF_USESLOWTIP = $00000008; // Flag says it's OK to take a long time generating tip + QIF_CACHED = $00000001; + QIF_DONTEXPANDFOLDER= $00000002; + SHARD_PIDL = DWord($00000001); + SHARD_PATHA = DWord($00000002); + SHARD_PATHW = DWord($00000003); + SHARD_APPIDINFO = DWord($00000004); + SHARD_APPIDINFOIDLIST = DWord($00000005); + SHARD_LINK = DWord($00000006); + SHARD_APPIDINFOLINK = DWord($00000007); + SHARD_SHELLITEM = DWord($00000008); + PRF_VERIFYEXISTS = $0001; + PRF_TRYPROGRAMEXTENSIONS = ($0002 or PRF_VERIFYEXISTS); + PRF_FIRSTDIRDEF = $0004; + PRF_DONTFINDLNK = $0008; // if PRF_TRYPROGRAMEXTENSIONS is specified + PCS_FATAL = $80000000; + PCS_REPLACEDCHAR = $00000001; + PCS_REMOVEDCHAR = $00000002; + PCS_TRUNCATED = $00000004; + PCS_PATHTOOLONG = $00000008; // Always combined with FATA); + MM_ADDSEPARATOR = dword($00000001); + MM_SUBMENUSHAVEIDS = dword($00000002); + MM_DONTREMOVESEPS = dword($00000004); + SHOP_PRINTERNAME = $00000001; // lpObject points to a printer friendly name + SHOP_FILEPATH = $00000002; // lpObject points to a fully qualified path+file name + SHOP_VOLUMEGUID = $00000004; // lpObject points to a Volume GUID + SHFMT_ID_DEFAULT = $FFFF; + SHFMT_OPT_FULL = $0001; + SHFMT_OPT_SYSONLY = $0002; + SHFMT_ERROR = dword($FFFFFFFF); // Error on last format, drive may be formatable + SHFMT_CANCEL = dword($FFFFFFFE); // Last format was canceled + SHFMT_NOFORMAT = dword($FFFFFFFD); // Drive is not formatable + PPCF_ADDQUOTES = $00000001; // return a quoted name if required + PPCF_ADDARGUMENTS = $00000003; // appends arguments (and wraps in quotes if required) + PPCF_NODIRECTORIES = $00000010; // don't match to directories + PPCF_FORCEQUALIFY = $00000040; // qualify even non-relative names + PPCF_LONGESTPOSSIBLE = $00000080; // always find the longest possible name + VALIDATEUNC_NOUI = $0002; // don't bring up UI + VALIDATEUNC_CONNECT = $0001; // connect a drive letter + VALIDATEUNC_PRINT = $0004; // validate as print share instead of disk share + VALIDATEUNC_VALID = $0007; // valid flags + OPENPROPS_NONE = $0000; + OPENPROPS_INHIBITPIF = $8000; + GETPROPS_NONE = $0000; + SETPROPS_NONE = $0000; + CLOSEPROPS_NONE = $0000; + CLOSEPROPS_DISCARD = $0001; + TBIF_DEFAULT = $00000000; + TBIF_INTERNETBAR = $00010000; + TBIF_STANDARDTOOLBAR = $00020000; + TBIF_NOTOOLBAR = $00030000; + SFVM_REARRANGE = $00000001; + SFVM_ADDOBJECT = $00000003; + SFVM_REMOVEOBJECT = $00000006; + SFVM_UPDATEOBJECT = $00000007; + SFVM_GETSELECTEDOBJECTS = $00000009; + SFVM_SETITEMPOS = $0000000e; + SFVM_SETCLIPBOARD = $00000010; + SFVM_SETPOINTS = $00000017; + PIDISF_RECENTLYCHANGED = $00000001; + PIDISF_CACHEDSTICKY = $00000002; + PIDISF_CACHEIMAGES = $00000010; + PIDISF_FOLLOWALLLINKS = $00000020; + SSF_SHOWALLOBJECTS = $00000001; + SSF_SHOWEXTENSIONS = $00000002; + SSF_HIDDENFILEEXTS = $00000004; + SSF_SERVERADMINUI = $00000004; + SSF_SHOWCOMPCOLOR = $00000008; + SSF_SORTCOLUMNS = $00000010; + SSF_SHOWSYSFILES = $00000020; + SSF_DOUBLECLICKINWEBVIEW = $00000080; + SSF_SHOWATTRIBCOL = $00000100; + SSF_DESKTOPHTML = $00000200; + SSF_WIN95CLASSIC = $00000400; + SSF_DONTPRETTYPATH = $00000800; + SSF_SHOWINFOTIP = $00002000; + SSF_MAPNETDRVBUTTON = $00001000; + SSF_NOCONFIRMRECYCLE = $00008000; + SSF_HIDEICONS = $00004000; + SSF_FILTER = $00010000; + SSF_WEBVIEW = $00020000; + SSF_SHOWSUPERHIDDEN = $00040000; + SSF_SEPPROCESS = $00080000; + SSF_NONETCRAWLING = $00100000; + SSF_STARTPANELON = $00200000; + SSF_SHOWSTARTPAGE = $00400000; + SHPPFW_NONE = $00000000; + SHPPFW_DIRCREATE = $00000001; // Create the directory if it doesn't exist without asking the user. + SHPPFW_ASKDIRCREATE = $00000002; // Create the directory if it doesn't exist after asking the user. + SHPPFW_IGNOREFILENAME = $00000004; // Ignore the last item in pszPath because it's a file. Example: pszPath="C:\DirA\DirB", only use "C:\DirA". + SHPPFW_NOWRITECHECK = $00000008; // Caller only needs to read from the drive, so don't check if it's READ ONLY. + SHPPFW_MEDIACHECKONLY = $00000010; // do the retrys on the media (or net path), return errors if the file can't be found + PUIFNF_DEFAULT = $00000000; + PUIFNF_MNEMONIC = $00000001; // include mnemonic in display name + PUIF_DEFAULT = $00000000; + PUIF_RIGHTALIGN = $00000001; // this property should be right alligned + PUIF_NOLABELININFOTIP = $00000002; // this property should not display a label in the infotip + PUIFFDF_DEFAULT = $00000000; + PUIFFDF_RIGHTTOLEFT = $00000001; // BIDI support, right to left caller + PUIFFDF_SHORTFORMAT = $00000002; // short format version of string + PUIFFDF_NOTIME = $00000004; // truncate time to days, not hours/mins/sec + PUIFFDF_FRIENDLYDATE = $00000008; // "Today", "Yesterday", etc + PUIFFDF_NOUNITS = $00000010; // don't do "KB", "MB", "KHz" + CATINFO_NORMAL = $00000000; // Apply default properties to this category + CATINFO_COLLAPSED = $00000001; // This category should appear collapsed. useful for the "None" category. + CATINFO_HIDDEN = $00000002; // This category should follow the "Hidden" files setting for being displayed + CATSORT_DEFAULT = $00000000; // Default Sort order + CATSORT_NAME = $00000001; // Sort by name + SLR_NO_UI = $0001; // don't post any UI durring the resolve operation, not msgs are pumped + SLR_ANY_MATCH = $0002; // no longer used + SLR_UPDATE = $0004; // save the link back to it's file if the track made it dirty + SLR_NOUPDATE = $0008; + SLR_NOSEARCH = $0010; // don't execute the search heuristics + SLR_NOTRACK = $0020; // don't use NT5 object ID to track the link + SLR_NOLINKINFO = $0040; // don't use the net and volume relative info + SLR_INVOKE_MSI = $0080; // if we have a darwin link, then call msi to fault in the applicaion + SLR_NO_UI_WITH_MSG_PUMP = $0101; // SLR_NO_UI + requires an enable modeless site or HWND + SLGP_SHORTPATH = $0001; + SLGP_UNCPRIORITY = $0002; + SLGP_RAWPATH = $0004; + SPINITF_NORMAL = $00000000; // default normal progress behavior + SPINITF_MODAL = $00000001; // call punkSite->EnableModeless() or EnableWindow() + SPINITF_NOMINIMIZE = $00000008; // Do not have a minimize button in the caption bar. + ARCONTENT_AUTORUNINF = $00000002; // That's the one we have today, and always had + ARCONTENT_AUDIOCD = $00000004; // Audio CD (not MP3 and the like, the stuff you buy at the store) + ARCONTENT_DVDMOVIE = $00000008; // DVD Movie (not MPEGs, the stuff you buy at the store) + ARCONTENT_BLANKCD = $00000010; // Blank CD-R/CD-RW + ARCONTENT_BLANKDVD = $00000020; // Blank DVD-R/DVD-RW + ARCONTENT_UNKNOWNCONTENT= $00000040; // Whatever files. Mean that it's formatted. + ARCONTENT_AUTOPLAYPIX = $00000080; // Whatever files. Mean that it's formatted. + ARCONTENT_AUTOPLAYMUSIC = $00000100; // Whatever files. Mean that it's formatted. + ARCONTENT_AUTOPLAYVIDEO = $00000200; // Whatever files. Mean that it's formatted. + SPBEGINF_NORMAL = $00000000; // default normal progress behavior + SPBEGINF_AUTOTIME = $00000002; // automatically updates the "time remaining" text + SPBEGINF_NOPROGRESSBAR = $00000010; // Don't display the progress bar (SetProgress() wont be called) + SPBEGINF_MARQUEEPROGRESS= $00000020; // use marquee progress (comctl32 v6 required) + EXPPS_FILETYPES = $00000001; + IEI_PRIORITY_MAX = ITSAT_MAX_PRIORITY; + IEI_PRIORITY_MIN = ITSAT_MIN_PRIORITY; + IEIT_PRIORITY_NORMAL = ITSAT_DEFAULT_PRIORITY; + IEIFLAG_ASYNC = $0001; // ask the extractor if it supports ASYNC extract (free threaded) + IEIFLAG_CACHE = $0002; // returned from the extractor if it does NOT cache the thumbnail + IEIFLAG_ASPECT = $0004; // passed to the extractor to beg it to render to the aspect ratio of the supplied rect + IEIFLAG_OFFLINE = $0008; // if the extractor shouldn't hit the net to get any content neede for the rendering + IEIFLAG_GLEAM = $0010; // does the image have a gleam ? this will be returned if it does + IEIFLAG_SCREEN = $0020; // render as if for the screen (this is exlusive with IEIFLAG_ASPECT ) + IEIFLAG_ORIGSIZE = $0040; // render to the approx size passed, but crop if neccessary + IEIFLAG_NOSTAMP = $0080; // returned from the extractor if it does NOT want an icon stamp on the thumbnail + IEIFLAG_NOBORDER = $0100; // returned from the extractor if it does NOT want an a border around the thumbnail + IEIFLAG_QUALITY = $0200; // passed to the Extract method to indicate that a slower, higher quality image is desired, re-compute the thumbnail + IEIFLAG_REFRESH = $0400; // returned from the extractor if it would like to have Refresh Thumbnail available + DBIM_MINSIZE = $0001; + DBIM_MAXSIZE = $0002; + DBIM_INTEGRAL = $0004; + DBIM_ACTUAL = $0008; + DBIM_TITLE = $0010; + DBIM_MODEFLAGS = $0020; + DBIM_BKCOLOR = $0040; + DBIMF_NORMAL = $0000; + DBIMF_FIXED = $0001; + DBIMF_FIXEDBMP = $0004; // a fixed background bitmap (if supported) + DBIMF_VARIABLEHEIGHT = $0008; + DBIMF_UNDELETEABLE = $0010; + DBIMF_DEBOSSED = $0020; + DBIMF_BKCOLOR = $0040; + DBIMF_USECHEVRON = $0080; + DBIMF_BREAK = $0100; + DBIMF_ADDTOFRONT = $0200; + DBIMF_TOPALIGN = $0400; + DBIF_VIEWMODE_NORMAL = $0000; + DBIF_VIEWMODE_VERTICAL = $0001; + DBIF_VIEWMODE_FLOATING = $0002; + DBIF_VIEWMODE_TRANSPARENT = $0004; + DBID_BANDINFOCHANGED = 0; + DBID_SHOWONLY = 1; + DBID_MAXIMIZEBAND = 2; // Maximize the specified band (VT_UI4 == dwID) + DBID_PUSHCHEVRON = 3; + DBID_DELAYINIT = 4; // Note: _bandsite_ calls _band_ with this code + DBID_FINISHINIT = 5; // Note: _bandsite_ calls _band_ with this code + DBID_SETWINDOWTHEME = 6; // Note: _bandsite_ calls _band_ with this code + DBID_PERMITAUTOHIDE = 7; + IDD_WIZEXTN_FIRST = $5000; + IDD_WIZEXTN_LAST = $5100; + SHPWHF_NORECOMPRESS = $00000001; // don't allow/prompt for recompress of streams + SHPWHF_NONETPLACECREATE = $00000002; // don't create a network place when transfer is complete + SHPWHF_NOFILESELECTOR = $00000004; // don't show the file selector + SHPWHF_VALIDATEVIAWEBFOLDERS = $00010000; // enable web folders to validate network places (ANP support) + + CDBE_RET_DEFAULT = $00000000; + CDBE_RET_DONTRUNOTHEREXTS = $00000001; + CDBE_RET_STOPWIZARD = $00000002; + CDBE_TYPE_MUSIC = $00000001; + CDBE_TYPE_DATA = $00000002; + CDBE_TYPE_ALL = $FFFFFFFF; + 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; + + NSWF_NONE_IMPLIES_ALL = $00000001; + NSWF_ONE_IMPLIES_ALL = $00000002; + NSWF_DONT_TRAVERSE_LINKS= $00000004; + NSWF_DONT_ACCUMULATE_RESULT = $00000008; + NSWF_TRAVERSE_STREAM_JUNCTIONS = $00000010; + NSWF_FILESYSTEM_ONLY = $00000020; + NSWF_SHOW_PROGRESS = $00000040; + NSWF_FLAG_VIEWORDER = $00000080; + NSWF_IGNORE_AUTOPLAY_HIDA = $00000100; + MPPF_SETFOCUS = $00000001; // Menu can take the focus + MPPF_INITIALSELECT = $00000002; // Select the first item + MPPF_NOANIMATE = $00000004; // Do not animate this show + MPPF_KEYBOARD = $00000010; // The menu is activated by keyboard + MPPF_REPOSITION = $00000020; // Resposition the displayed bar. + MPPF_FORCEZORDER = $00000040; // internal: Tells menubar to ignore Submenu positions + MPPF_FINALSELECT = $00000080; // Select the last item + MPPF_TOP = $20000000; // Popup menu up from point + MPPF_LEFT = $40000000; // Popup menu left from point + MPPF_RIGHT = $60000000; // Popup menu right from point + MPPF_BOTTOM = $80000000; // Popup menu below point + MPPF_POS_MASK = $E0000000; // Menu Position Mask + SIGDN_NORMALDISPLAY = $00000000; + SIGDN_PARENTRELATIVEPARSING = $80018001; + SIGDN_PARENTRELATIVEFORADDRESSBAR = $8001c001; + SIGDN_DESKTOPABSOLUTEPARSING = $80028000; + SIGDN_PARENTRELATIVEEDITING = $80031001; + SIGDN_DESKTOPABSOLUTEEDITING = $8004c000; + SIGDN_FILESYSPATH = $80058000; + SIGDN_URL = $80068000; + SICHINT_DISPLAY = $00000000; + SICHINT_ALLFIELDS = $80000000; + SICHINT_CANONICAL = $10000000; + BFO_NONE = $00000000; // Do nothing. + BFO_BROWSER_PERSIST_SETTINGS = $00000001; // Does this item want the browser stream? (Same window position as IE browser windows?) + BFO_RENAME_FOLDER_OPTIONS_TOINTERNET= $00000002; // Rename "Folder Options" to "Internet Options" in the Tools or View menu? + BFO_BOTH_OPTIONS = $00000004; // Keep both "Folder Options" and "Internet Options" in the Tools or View menu? + BIF_PREFER_INTERNET_SHORTCUT = $00000008; // NSE would prefer a .url shortcut over a .lnk shortcut + BFO_BROWSE_NO_IN_NEW_PROCESS = $00000010; // Specify this flag if you don't want the "Browse in New Process" via invoking a shortcut. + BFO_ENABLE_HYPERLINK_TRACKING = $00000020; // Does this NSE want it's display name tracked to determine when hyperlinks should be tagged as previously used? + BFO_USE_IE_OFFLINE_SUPPORT = $00000040; // Use "Internet Explorer"'s offline support? + BFO_SUBSTITUE_INTERNET_START_PAGE = $00000080; // Does this NSE want to use the Start Page support? + BFO_USE_IE_LOGOBANDING = $00000100; // Use the Brand block in the Toolbar. (Spinning globe or whatever it is this year) + BFO_ADD_IE_TOCAPTIONBAR = $00000200; // Should " - Internet Explorer" be appended to display name in the Captionbar + BFO_USE_DIALUP_REF = $00000400; // Should the DialUp ref count get a ref while the browse is navigated to this location? This will also enable the ICW and Software update. + BFO_USE_IE_TOOLBAR = $00000800; // Should the IE toolbar be used? + BFO_NO_PARENT_FOLDER_SUPPORT = $00001000; // Can you NOT navigate to a parent folder? Used for Backspace button to parent folder or the View.GoTo.ParentFolder feature. + BFO_NO_REOPEN_NEXT_RESTART = $00002000; // Browser windows are NOT reopened the next time the shell boots if the windows were left open on the previous logoff. Does this NSE want the same feature? + BFO_GO_HOME_PAGE = $00004000; // Add "Home Page" to menu (Go). + BFO_PREFER_IEPROCESS = $00008000; // prefers to use IEXPLORE.EXE over EXPLORER.EXE + BFO_SHOW_NAVIGATION_CANCELLED = $00010000; // If navigation is aborted, show the "Action Cancelled" HTML page. + BFO_USE_IE_STATUSBAR = $00020000; // Use the persisted IE status bar settings + BFO_QUERY_ALL = $FFFFFFFF; // Return all values set. + NWMF_UNLOADING = $0001; // The query is occuring during onBeforeUnload or onUnload + NWMF_USERINITED = $0002; // The query is occuring in the context of what trident considers to be a user initiated action + NWMF_FIRST = $0004; // This is the first query since the begining of the last user initiated action + NWMF_OVERRIDEKEY = $0008; // The override key was pressed at the time the query was made + NWMF_SHOWHELP = $0010; // New window is an HTML help window + NWMF_HTMLDIALOG = $0020; // New window is an HTML dialog + NWMF_FROMDIALOGCHILD = $0040; // Called from an HTML dialog - do not show UI in parent window + NWMF_USERREQUESTED = $0080; // There is no doubt the user requested this window (from RClick->Open in New Window, or Shift+Clicked a link) + NWMF_USERALLOWED = $0100; // This popup is the result of the user requesting a replay that resulted in a refresh + SMDM_SHELLFOLDER = $00000001; // This is for an item in the band + SMDM_HMENU = $00000002; // This is for the Band itself + SMDM_TOOLBAR = $00000004; // Plain toolbar, not associated with a shell folder or hmenu + SMIM_TYPE = $00000001; + SMIM_FLAGS = $00000002; + SMIM_ICON = $00000004; + SMIT_SEPARATOR = $00000001; + SMIT_STRING = $00000002; + SMIF_ICON = $00000001; // Show an icon + SMIF_ACCELERATOR = $00000002; // Underline the character marked w/ '&' + SMIF_DROPTARGET = $00000004; // Item is a drop target + SMIF_SUBMENU = $00000008; // Item has a submenu + SMIF_CHECKED = $00000020; // Item has a Checkmark + SMIF_DROPCASCADE = $00000040; // Item can cascade out during drag/drop + SMIF_HIDDEN = $00000080; // Don't display item + SMIF_DISABLED = $00000100; // Should be unselectable. Gray. + SMIF_TRACKPOPUP = $00000200; // Should be unselectable. Gray. + SMIF_DEMOTED = $00000400; // Display item in "Demoted" state. + SMIF_ALTSTATE = $00000800; // Displayed in "Altered State" + SMIF_DRAGNDROP = $00001000; // If item that is being dragged hovers over an item for long enough then it SMC_EXECs that item + SMIF_NEW = $00002000; // Item is newly-installed or otherwise attractive (XP) + SMC_INITMENU = $00000001; // The callback is called to init a menuband + SMC_CREATE = $00000002; + SMC_EXITMENU = $00000003; // The callback is called when menu is collapsing + SMC_GETINFO = $00000005; // The callback is called to return DWORD values + SMC_GETSFINFO = $00000006; // The callback is called to return DWORD values + SMC_GETOBJECT = $00000007; // The callback is called to get some object + SMC_GETSFOBJECT = $00000008; // The callback is called to get some object + SMC_SFEXEC = $00000009; // The callback is called to execute an shell folder item + SMC_SFSELECTITEM = $0000000A; // The callback is called when an item is selected + SMC_REFRESH = $00000010; // Menus have completely refreshed. Reset your state. + SMC_DEMOTE = $00000011; // Demote an item + SMC_PROMOTE = $00000012; // Promote an item, wParam = SMINV_* flag + SMC_DEFAULTICON = $00000016; // Returns Default icon location in wParam, index in lParam + SMC_NEWITEM = $00000017; // Notifies item is not in the order stream. + SMC_CHEVRONEXPAND = $00000019; // Notifies of a expansion via the chevron + SMC_DISPLAYCHEVRONTIP = $0000002A; // S_OK display, S_FALSE not. + SMC_SETSFOBJECT = $0000002D; // Called to save the passed object + SMC_SHCHANGENOTIFY = $0000002E; // Called when a Change notify is received. lParam points to SMCSHCHANGENOTIFYSTRUCT + SMC_CHEVRONGETTIP = $0000002F; // Called to get the chevron tip text. wParam = Tip title, Lparam = TipText Both MAX_PATH + SMC_SFDDRESTRICTED = $00000030; // Called requesting if it's ok to drop. wParam = IDropTarget. + ATTACHMENT_PROMPT_NONE = $0000; + ATTACHMENT_PROMPT_SAVE = $0001; + ATTACHMENT_PROMPT_EXEC = $0002; + ATTACHMENT_PROMPT_EXEC_OR_SAVE = $0003; + ATTACHMENT_ACTION_CANCEL= $0000; + ATTACHMENT_ACTION_SAVE = $0001; + ATTACHMENT_ACTION_EXEC = $0002; + SMINIT_DEFAULT = $00000000; // No Options + SMINIT_RESTRICT_DRAGDROP= $00000002; // Don't allow Drag and Drop + SMINIT_TOPLEVEL = $00000004; // This is the top band. + SMINIT_CACHED = $00000010; + SMINIT_VERTICAL = $10000000; // This is a vertical menu + SMINIT_HORIZONTAL = $20000000; // This is a horizontal menu (does not inherit) + ANCESTORDEFAULT = dword(-1); + SMSET_TOP = $10000000; // Bias this namespace to the top of the menu + SMSET_BOTTOM = $20000000; // Bias this namespace to the bottom of the menu + SMSET_DONTOWN = $00000001; // The Menuband doesn't own the non-ref counted object + SMINV_REFRESH = $00000001; + SMINV_ID = $00000008; + FDEOR_DEFAULT = 0; + FDEOR_ACCEPT = 1; + FDEOR_REFUSE = 2; + FDESVR_DEFAULT = 0; + FDESVR_ACCEPT = 1; + FDESVR_REFUSE = 2; + FDAP_BOTTOM = 0; + FDAP_TOP = 1; + FOS_OVERWRITEPROMPT = $2; + FOS_STRICTFILETYPES = $4; + FOS_NOCHANGEDIR = $8; + FOS_PICKFOLDERS = $20; + FOS_FORCEFILESYSTEM = $40; + FOS_ALLNONSTORAGEITEMS = $80; + FOS_NOVALIDATE = $100; + FOS_ALLOWMULTISELECT = $200; + FOS_PATHMUSTEXIST = $800; + FOS_FILEMUSTEXIST = $1000; + FOS_CREATEPROMPT = $2000; + FOS_SHAREAWARE = $4000; + FOS_NOREADONLYRETURN = $8000; + FOS_NOTESTFILECREATE = $10000; + FOS_HIDEMRUPLACES = $20000; + FOS_HIDEPINNEDPLACES = $40000; + FOS_NODEREFERENCELINKS = $100000; + FOS_DONTADDTORECENT = $2000000; + FOS_FORCESHOWHIDDEN = $10000000; + FOS_DEFAULTNOMINIMODE = $20000000; + FOS_FORCEPREVIEWPANEON = $40000000; + +Type + SFGAOF = ULONG; + TSFGAOF = SFGAOF; + PSFGAOF = ^SFGAOF; + SHCONTF = longint; + TSHCONTF = SHCONTF; + PSHCONTF = ^SHCONTF; + SIGDN = longint; + TSIGDN = SIGDN; + PSIGDN = ^SIGDN; + SICHINTF = longint; + TSICHINTF = SICHINTF; + PSICHINTF = ^SICHINTF; + + + PROPERTYUI_NAME_FLAGS = DWord; // enum + PROPERTYUI_FORMAT_FLAGS = DWord; + PROPERTYUI_FLAGS = Dword; + CATSORT_FLAGS = DWORD; + CATEGORYINFO_FLAGS = DWord; + + PPROPERTYUI_NAME_FLAGS = ^PROPERTYUI_NAME_FLAGS; + PPROPERTYUI_FORMAT_FLAGS = ^PROPERTYUI_FORMAT_FLAGS; + PPROPERTYUI_FLAGS = ^PROPERTYUI_FLAGS; + PCATSORT_FLAGS = ^CATSORT_FLAGS; + PCATEGORYINFO_FLAGS = ^CATEGORYINFO_FLAGS; + + RESTRICTIONS = DWORD; + TRESTRICTIONS = RESTRICTIONS; + PRESTRICTIONS = ^RESTRICTIONS; + FOLDERVIEWMODE = DWORD; + SHColumnID = packed record + fmtid : TGUID; + pid : DWORD; + end; + CATEGORY_INFO = record + cif : CATEGORYINFO_FLAGS; + wsname: array[0..259] of wchar; + end; + TCATEGORY_INFO = CATEGORY_INFO; + PCATEGORY_INFO = ^CATEGORY_INFO; + + LPSHColumnID = SHColumnID; + TSHColumnid = SHColumnID; + pSHColumnID = LPSHColumnID; + + IShellView = Interface; + IShellFolder = Interface; + IShellBrowser = Interface; + LPFNVIEWCALLBACK = function (psvouter:IShellView;psf : IShellFolder;hwndMain:HWND ;uMSG:UINT;wParam:WPARAM;lParam:LPARAM) :HRESULT; StdCall; + LPFNDFMCALLBACK = function (psf:IShellFolder; HWND: hwnd;pdtobj:IDataObject;uMsg:UINT;WPARAM:wParam; LPARAM: lParam) :HRESULT; StdCall; + + IShellFolderViewCB = Interface(IUnknown) + ['{2047E320-F2A9-11CE-AE65-08002B2E1262}'] + function MessageSFVCB (uMSG: UINT;wparam:WPARAM;LPARAM:lParam):HResult; stdcall; + end; + + + LPTBBUTTONSB = LPTBBUTTON; + SVSIF = UINT; + TSVSIF = SVSIF; + SHELLVIEWID = TGUID; + TSHELLVIEWID = TGUID; + PSHELLVIEWID = ^TGUID; + LPVIEWSETTINGS = Pchar; + + _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 : LPCSTR; { either a string or MAKEINTRESOURCE(idOffset) } + lpParameters : LPCSTR; { might be NULL (indicating no parameter) } + lpDirectory : LPCSTR; { might be NULL (indicating no specific directory) } + nShow : longint; { one of SW_ values for ShowWindow() API } + dwHotKey : DWORD; + hIcon : HANDLE; + lpTitle : LPCSTR; { For CreateProcess-StartupInfo.lpTitle } + lpVerbW : LPCWSTR; { Unicode verb (for those who can use it) } + lpParametersW : LPCWSTR; { Unicode parameters (for those who can use it) } + lpDirectoryW : LPCWSTR; { Unicode directory (for those who can use it) } + lpTitleW : LPCWSTR; { Unicode title (for those who can use it) } + ptInvoke : POINT; { Point where it's invoked } + end; + TCMINVOKECOMMANDINFOEX = _CMInvokeCommandInfoEx; + PCMINVOKECOMMANDINFOEX = ^TCMINVOKECOMMANDINFOEX; + LPCMINVOKECOMMANDINFOEX = PCMInvokeCommandInfoEx; + PLPCMINVOKECOMMANDINFOEX = ^LPCMINVOKECOMMANDINFOEX; + + PPERSIST_FOLDER_TARGET_INFO = ^PERSIST_FOLDER_TARGET_INFO; + PERSIST_FOLDER_TARGET_INFO = record + pidlTargetFolder : LPITEMIDLIST; { pidl for the folder we want to intiailize } + szTargetParsingName : array[0..(MAX_PATH)-1] of WCHAR; { optional parsing name for the target } + szNetworkProvider : array[0..(MAX_PATH)-1] of WCHAR; { optional network provider } + dwAttributes : DWORD; { optional FILE_ATTRIBUTES_ flags (-1 if not used) } + csidl : longint; { optional folder index (SHGetFolderPath()) -1 if not used } + end; + TPERSIST_FOLDER_TARGET_INFO = PERSIST_FOLDER_TARGET_INFO; + + DATABLOCK_HEADER = record + cbSize : DWORD; { Size of this extra data block } + dwSignature : DWORD; { signature of this extra data block } + end; + TDATABLOCKHEADER = DATABLOCK_HEADER; + TDATABLOCK_HEADER = DATABLOCK_HEADER; + PDATABLOCK_HEADER = ^TDATABLOCK_HEADER; + PDATABLOCKHEADER = ^TDATABLOCKHEADER; + LPDATABLOCK_HEADER = PDATABLOCK_HEADER; + PLPDATABLOCK_HEADER = ^LPDATABLOCK_HEADER; + LPDBLIST = PDATABLOCK_HEADER; + PLPDBLIST = ^LPDBLIST; + + PNT_CONSOLE_PROPS = ^NT_CONSOLE_PROPS; + NT_CONSOLE_PROPS = record + dbh : DATABLOCK_HEADER; + wFillAttribute : WORD; { fill attribute for console } + wPopupFillAttribute : WORD; { fill attribute for console popups } + dwScreenBufferSize : COORD; { screen buffer size for console } + dwWindowSize : COORD; { window size for console } + dwWindowOrigin : COORD; { window origin for console } + nFont : DWORD; + nInputBufferSize : DWORD; + dwFontSize : COORD; + uFontFamily : UINT; + uFontWeight : UINT; + FaceName : array[0..(LF_FACESIZE)-1] of WCHAR; + uCursorSize : UINT; + bFullScreen : BOOL; + bQuickEdit : BOOL; + bInsertMode : BOOL; + bAutoPosition : BOOL; + uHistoryBufferSize : UINT; + uNumberOfHistoryBuffers : UINT; + bHistoryNoDup : BOOL; + ColorTable : array[0..15] of COLORREF; + end; + TNT_CONSOLE_PROPS = NT_CONSOLE_PROPS; + LPNT_CONSOLE_PROPS = PNT_CONSOLE_PROPS; + PLPNT_CONSOLE_PROPS = ^LPNT_CONSOLE_PROPS; + + PNT_FE_CONSOLE_PROPS = ^NT_FE_CONSOLE_PROPS; + NT_FE_CONSOLE_PROPS = record + dbh : DATABLOCK_HEADER; + uCodePage : UINT; { This is a FE Console property } + end; + TNT_FE_CONSOLE_PROPS = NT_FE_CONSOLE_PROPS; + LPNT_FE_CONSOLE_PROPS = PNT_FE_CONSOLE_PROPS; + PLPNT_FE_CONSOLE_PROPS = ^LPNT_FE_CONSOLE_PROPS; + + PEXP_DARWIN_LINK = ^EXP_DARWIN_LINK; + EXP_DARWIN_LINK = record + dbh : DATABLOCK_HEADER; + szDarwinID : array[0..(MAX_PATH)-1] of CHAR; { ANSI darwin ID associated with link } + szwDarwinID : array[0..(MAX_PATH)-1] of WCHAR; { UNICODE darwin ID associated with link } + end; + TEXP_DARWIN_LINK = EXP_DARWIN_LINK; + LPEXP_DARWIN_LINK = PEXP_DARWIN_LINK; + PLPEXP_DARWIN_LINK = ^LPEXP_DARWIN_LINK; + + PEXP_SPECIAL_FOLDER = ^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; + LPEXP_SPECIAL_FOLDER = PEXP_SPECIAL_FOLDER; + PLPEXP_SPECIAL_FOLDER = ^LPEXP_SPECIAL_FOLDER; + TEXP_SPECIAL_FOLDER = EXP_SPECIAL_FOLDER; + + PEXP_SZ_LINK = ^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 CHAR; { ANSI target name w/EXP_SZ in it } + swzTarget : array[0..(MAX_PATH)-1] of WCHAR; { UNICODE target name w/EXP_SZ in it } + end; + LPEXP_SZ_LINK = PEXP_SZ_LINK; + PLPEXP_SZ_LINK = ^LPEXP_SZ_LINK; + TEXP_SZ_LINK = EXP_SZ_LINK; + + PFVSHOWINFO = ^FVSHOWINFO; + FVSHOWINFO = record { Stuff passed into viewer (in) } + cbSize : DWORD; { Size of structure for future expansion... } + hwndOwner : HWND; { who is the owner window. } + iShow : longint; { The show command } + { Passed in and updated (in/Out) } + dwFlags : DWORD; { flags } + rect : RECT; { 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 OLECHAR; { New File to view. } + end; + TFVSHOWINFO = FVSHOWINFO; + LPFVSHOWINFO = PFVSHOWINFO; + PLPFVSHOWINFO = ^LPFVSHOWINFO; + + PSHFOLDERCUSTOMSETTINGSA = ^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 : LPSTR; { OUT - if dwReadWrite is FCS_READ, IN - otherwise } + cchWebViewTemplate : DWORD; { IN - Specifies the size of the buffer pointed to by pszWebViewTemplate } + pszWebViewTemplateVersion : LPSTR; { Ignored if dwReadWrite is FCS_READ } + pszInfoTip : LPSTR; { currently IN only } + cchInfoTip : DWORD; { Infotip for the folder } + { OUT - if dwReadWrite is FCS_READ, IN - otherwise } + { IN - Specifies the size of the buffer pointed to by pszInfoTip } + pclsid : PCLSID; { Ignored if dwReadWrite is FCS_READ } + { CLSID that points to more info in the registry } + dwFlags : DWORD; { OUT - if dwReadWrite is FCS_READ, IN - otherwise } + pszIconFile : LPSTR; { Other flags for the folder. Takes FCS_FLAG_* values } + cchIconFile : DWORD; { OUT - if dwReadWrite is FCS_READ, IN - otherwise } + { OUT - if dwReadWrite is FCS_READ, IN - otherwise } + iIconIndex : longint; { IN - Specifies the size of the buffer pointed to by pszIconFile } + { Ignored if dwReadWrite is FCS_READ } + pszLogo : LPSTR; { OUT - if dwReadWrite is FCS_READ, IN - otherwise } + cchLogo : DWORD; { OUT - if dwReadWrite is FCS_READ, IN - otherwise } + end; { IN - Specifies the size of the buffer pointed to by pszIconFile } + { Ignored if dwReadWrite is FCS_READ } + + LPSHFOLDERCUSTOMSETTINGSA = PSHFOLDERCUSTOMSETTINGSA; + PLPSHFOLDERCUSTOMSETTINGSA = ^LPSHFOLDERCUSTOMSETTINGSA; + TSHFOLDERCUSTOMSETTINGSA = SHFOLDERCUSTOMSETTINGSA; + + PSHFOLDERCUSTOMSETTINGSW = ^SHFOLDERCUSTOMSETTINGSW; + SHFOLDERCUSTOMSETTINGSW = record + dwSize : DWORD; + dwMask : DWORD; + pvid : PSHELLVIEWID; + pszWebViewTemplate : LPWSTR; + cchWebViewTemplate : DWORD; + pszWebViewTemplateVersion : LPWSTR; + pszInfoTip : LPWSTR; + cchInfoTip : DWORD; + pclsid : PCLSID; + dwFlags : DWORD; + pszIconFile : LPWSTR; + cchIconFile : DWORD; + iIconIndex : longint; + pszLogo : LPWSTR; + cchLogo : DWORD; + end; + LPSHFOLDERCUSTOMSETTINGSW = PSHFOLDERCUSTOMSETTINGSW; + PLPSHFOLDERCUSTOMSETTINGSW = ^LPSHFOLDERCUSTOMSETTINGSW; + TSHFOLDERCUSTOMSETTINGSW = SHFOLDERCUSTOMSETTINGSW; + + _browseinfoA = record + hwndOwner : HWND; + pidlRoot : LPCITEMIDLIST; + pszDisplayName : LPSTR; { Return display name of item selected. } + lpszTitle : LPCSTR; { text to go in the banner over the tree. } + ulFlags : UINT; { Flags that control the return stuff } + lpfn : BFFCALLBACK; + lParam : LPARAM; { extra info that's passed back in callbacks } + iImage : longint; { output var: where to return the Image index. } + end; + BROWSEINFOA = _browseinfoA; + PBROWSEINFOA = ^BROWSEINFOA; + TBROWSEINFOA = BROWSEINFOA; + PPBROWSEINFOA = ^PBROWSEINFOA; + LPBROWSEINFOA = PbrowseinfoA; + PLPBROWSEINFOA = ^LPBROWSEINFOA; + + _browseinfoW = record + hwndOwner : HWND; + pidlRoot : LPCITEMIDLIST; + pszDisplayName : LPWSTR; { Return display name of item selected. } + lpszTitle : LPCWSTR; { text to go in the banner over the tree. } + ulFlags : UINT; { Flags that control the return stuff } + lpfn : BFFCALLBACK; + lParam : LPARAM; { extra info that's passed back in callbacks } + iImage : longint; { output var: where to return the Image index. } + end; + BROWSEINFOW = _browseinfoW; + PBROWSEINFOW = ^BROWSEINFOW; + PPBROWSEINFOW = ^PBROWSEINFOW; + LPBROWSEINFOW = PbrowseinfoW; + PLPBROWSEINFOW = ^LPBROWSEINFOW; + TBROWSEINFOW = BROWSEINFOW; + + P_EnumImageStoreDATAtag = ^_EnumImageStoreDATAtag; + _EnumImageStoreDATAtag = record + szPath : array[0..(MAX_PATH)-1] of WCHAR; + ftTimeStamp : FILETIME; + end; + ENUMSHELLIMAGESTOREDATA = _EnumImageStoreDATAtag; + PENUMSHELLIMAGESTOREDATA = ^ENUMSHELLIMAGESTOREDATA; + PPENUMSHELLIMAGESTOREDATA = ^PENUMSHELLIMAGESTOREDATA; + TENUMSHELLIMAGESTOREDATA = _EnumImageStoreDATAtag; + PBANDINFOSFB = ^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 : COLORREF; { [in/out] } + crBtnLt : COLORREF; { [in/out] } + crBtnDk : COLORREF; { [in/out] } + wViewMode : WORD; { [in/out] } + wAlign : WORD; { not used (yet) } + psf : IShellFolder; { [out] } + pidl : LPITEMIDLIST; { [out] } + end; + PPBANDINFOSFB = ^PBANDINFOSFB; + + _tagWALLPAPEROPT = record + dwSize : DWORD; { size of this Structure. } + dwStyle : DWORD; { WPSTYLE_* mentioned above } + end; + WALLPAPEROPT = _tagWALLPAPEROPT; + TWALLPAPEROPT = _tagWALLPAPEROPT; + PWALLPAPEROPT = ^WALLPAPEROPT; + + PLPWALLPAPEROPT = ^LPWALLPAPEROPT; + LPWALLPAPEROPT = WALLPAPEROPT; + + PLPCWALLPAPEROPT = ^LPCWALLPAPEROPT; + LPCWALLPAPEROPT = WALLPAPEROPT; + + _tagCOMPONENTSOPT = record + dwSize : DWORD; {Size of this structure } + fEnableComponents : BOOL; {Enable components? } + fActiveDesktop : BOOL; { Active desktop enabled ? } + end; + COMPONENTSOPT = _tagCOMPONENTSOPT; + TCOMPONENTSOPT = _tagCOMPONENTSOPT; + PCOMPONENTSOPT = ^COMPONENTSOPT; + PLPCOMPONENTSOPT = ^LPCOMPONENTSOPT; + LPCOMPONENTSOPT = COMPONENTSOPT; + PLPCCOMPONENTSOPT = ^LPCCOMPONENTSOPT; + LPCCOMPONENTSOPT = COMPONENTSOPT; + + _tagCOMPPOS = record + dwSize : DWORD; {Size of this structure } + iLeft : longint; {Left of top-left corner in screen co-ordinates. } + iTop : longint; {Top of top-left corner in screen co-ordinates. } + dwWidth : DWORD; { Width in pixels. } + dwHeight : DWORD; { Height in pixels. } + izIndex : longint; { 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 : longint;{Left of top-left corner as percent of screen width } + iPreferredTopPercent : longint; {Top of top-left corner as percent of screen height } + end; + COMPPOS = _tagCOMPPOS; + TCOMPPOS = _tagCOMPPOS; + PCOMPPOS = ^COMPPOS; + PLPCOMPPOS = ^LPCOMPPOS; + LPCOMPPOS = COMPPOS; + + PLPCCOMPPOS = ^LPCCOMPPOS; + LPCCOMPPOS = COMPPOS; + + _tagCOMPSTATEINFO = record + dwSize : DWORD; { Size of this structure. } + iLeft : longint; { Left of the top-left corner in screen co-ordinates. } + iTop : longint; { 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; + COMPSTATEINFO = _tagCOMPSTATEINFO; + TCOMPSTATEINFO = _tagCOMPSTATEINFO; + PCOMPSTATEINFO = ^COMPSTATEINFO; + PLPCOMPSTATEINFO = ^LPCOMPSTATEINFO; + LPCOMPSTATEINFO = COMPSTATEINFO; + PLPCCOMPSTATEINFO = ^LPCCOMPSTATEINFO; + LPCCOMPSTATEINFO = COMPSTATEINFO; + + _tagIE4COMPONENT = record + dwSize : DWORD; {Size of this structure } + dwID : DWORD; {Reserved: Set it always to zero. } + iComponentType : longint; {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 WCHAR; { Friendly name of component. } + wszSource : array[0..(INTERNET_MAX_URL_LENGTH)-1] of WCHAR; {URL of the component. } + wszSubscribedURL : array[0..(INTERNET_MAX_URL_LENGTH)-1] of WCHAR; {Subscrined URL } + end; + IE4COMPONENT = _tagIE4COMPONENT; + TIE4COMPONENT = _tagIE4COMPONENT; + PIE4COMPONENT = ^IE4COMPONENT; + PLPIE4COMPONENT = ^LPIE4COMPONENT; + LPIE4COMPONENT = IE4COMPONENT; + + PLPCIE4COMPONENT = ^LPCIE4COMPONENT; + LPCIE4COMPONENT = IE4COMPONENT; + _tagCOMPONENT = record + dwSize : DWORD; {Size of this structure } + dwID : DWORD; {} {Reserved: Set it always to zero. } + iComponentType : longint; {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 WCHAR; { Friendly name of component. } + wszSource : array[0..(INTERNET_MAX_URL_LENGTH)-1] of WCHAR; {URL of the component. } + wszSubscribedURL : array[0..(INTERNET_MAX_URL_LENGTH)-1] of WCHAR; {Subscrined URL } + {New fields are added below. Everything above here must exactly match the IE4COMPONENT Structure. } + dwCurItemState : DWORD; { Current state of the Component. } + csiOriginal : COMPSTATEINFO; { Original state of the component when it was first added. } + csiRestored : COMPSTATEINFO; { Restored state of the component. } + end; + COMPONENT = _tagCOMPONENT; + PCOMPONENT = ^COMPONENT; + // no tcomponent because ambiguous. + PLPCOMPONENT = ^LPCOMPONENT; + LPCOMPONENT = COMPONENT; + + PLPCCOMPONENT = ^LPCCOMPONENT; + LPCCOMPONENT = COMPONENT; + + PSHCOLUMNINFO = ^SHCOLUMNINFO; + SHCOLUMNINFO = record + scid : SHCOLUMNID; { OUT the unique identifier of this column} + vt : TVarType; { OUT the native type of the data return} + fmt : DWORD; { OUT this listview format (LVCFMT_LEFT} + cChars : UINT; { OUT the default width of the column,} + csFlags : DWORD; { OUT SHCOLSTATE flags } + wszTitle : array[0..(MAX_COLUMN_NAME_LEN)-1] of WCHAR; { OUT the title of the column } + wszDescription : array[0..(MAX_COLUMN_DESC_LEN)-1] of WCHAR; { OUT full description of this column } + end; + TSHCOLUMNINFO = SHCOLUMNINFO; + LPSHCOLUMNINFO = PSHCOLUMNINFO; + PLPSHCOLUMNINFO = ^LPSHCOLUMNINFO; + + PSHCOLUMNINIT = ^SHCOLUMNINIT; + SHCOLUMNINIT = record + dwFlags : ULONG; { initialization flags } + dwReserved : ULONG; { reserved for future use. } + wszFolder : array[0..(MAX_PATH)-1] of WCHAR; { fully qualified folder path (or empty if multiple folders) } + end; + TSHCOLUMNINIT = SHCOLUMNINIT; + LPSHCOLUMNINIT = PSHCOLUMNINIT; + PLPSHCOLUMNINIT = ^LPSHCOLUMNINIT; + + PLPCSHCOLUMNINIT = ^LPCSHCOLUMNINIT; + LPCSHCOLUMNINIT = SHCOLUMNINIT; + + PSHCOLUMNDATA = ^SHCOLUMNDATA; + SHCOLUMNDATA = record + dwFlags : ULONG; { combination of SHCDF_ flags. } + dwFileAttributes : DWORD; { file attributes. } + dwReserved : ULONG; { reserved for future use. } + pwszExt : PWCHAR; { address of file name extension } + wszFile : array[0..(MAX_PATH)-1] of WCHAR; { Absolute path of file. } + end; + TSHCOLUMNDAT=SHCOLUMNDATA; + LPSHCOLUMNDATA = PSHCOLUMNDATA; + PLPSHCOLUMNDATA = ^LPSHCOLUMNDATA; + + PLPCSHCOLUMNDATA = ^LPCSHCOLUMNDATA; + LPCSHCOLUMNDATA = SHCOLUMNDATA; + + PSHDRAGIMAGE = ^SHDRAGIMAGE; + SHDRAGIMAGE = record + sizeDragImage : SIZE; { OUT - The length and Width of the rendered image } + ptOffset : POINT; { 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 : COLORREF; { OUT - The COLORREF that has been blitted to the background of the images } + end; + LPSHDRAGIMAGE = PSHDRAGIMAGE; + PLPSHDRAGIMAGE = ^LPSHDRAGIMAGE; + TSHDRAGIMAGE = SHDRAGIMAGE; + + _NRESARRAY = record + cItems : UINT; + nr : array[0..0] of NETRESOURCE; + end; + NRESARRAY = _NRESARRAY; + TNRESARRAY = _NRESARRAY; + PNRESARRAY = ^NRESARRAY; + LPNRESARRAY = PNRESARRAY; + PLPNRESARRAY = ^LPNRESARRAY; + + _IDA = record + cidl : UINT; { number of relative IDList } + aoffset : array[0..0] of UINT; { [0]: folder IDList, [1]-[cidl]: item IDList } + end; + CIDA = _IDA; + TIDA = _IDA; + PIDA = ^TIDA; + PCIDA = ^CIDA; + LPIDA = PCIDA; + PLPIDA = ^LPIDA; + + _FILEDESCRIPTORA = record + dwFlags : DWORD; + clsid : CLSID; + sizel : SIZEL; + pointl : POINTL; + dwFileAttributes : DWORD; + ftCreationTime : FILETIME; + ftLastAccessTime : FILETIME; + ftLastWriteTime : FILETIME; + nFileSizeHigh : DWORD; + nFileSizeLow : DWORD; + cFileName : array[0..(MAX_PATH)-1] of CHAR; + end; + FILEDESCRIPTORA = _FILEDESCRIPTORA; + TFILEDESCRIPTORA = _FILEDESCRIPTORA; + PFILEDESCRIPTORA = ^FILEDESCRIPTORA; + LPFILEDESCRIPTORA = PFILEDESCRIPTORA; + PLPFILEDESCRIPTORA = ^LPFILEDESCRIPTORA; + + _FILEDESCRIPTORW = record + dwFlags : DWORD; + clsid : CLSID; + sizel : SIZEL; + pointl : POINTL; + dwFileAttributes : DWORD; + ftCreationTime : FILETIME; + ftLastAccessTime : FILETIME; + ftLastWriteTime : FILETIME; + nFileSizeHigh : DWORD; + nFileSizeLow : DWORD; + cFileName : array[0..(MAX_PATH)-1] of WCHAR; + end; + FILEDESCRIPTORW = _FILEDESCRIPTORW; + TFILEDESCRIPTORW = _FILEDESCRIPTORW; + PFILEDESCRIPTORW = ^FILEDESCRIPTORW; + LPFILEDESCRIPTORW = PFILEDESCRIPTORW; + PLPFILEDESCRIPTORW = ^LPFILEDESCRIPTORW; + + _FILEGROUPDESCRIPTORA = record + cItems : UINT; + fgd : array[0..0] of FILEDESCRIPTORA; + end; + FILEGROUPDESCRIPTORA = _FILEGROUPDESCRIPTORA; + TFILEGROUPDESCRIPTORA = _FILEGROUPDESCRIPTORA; + PFILEGROUPDESCRIPTORA = ^FILEGROUPDESCRIPTORA; + LPFILEGROUPDESCRIPTORA = PFILEGROUPDESCRIPTORA; + PLPFILEGROUPDESCRIPTORA = ^LPFILEGROUPDESCRIPTORA; + + _FILEGROUPDESCRIPTORW = record + cItems : UINT; + fgd : array[0..0] of FILEDESCRIPTORW; + end; + FILEGROUPDESCRIPTORW = _FILEGROUPDESCRIPTORW; + TFILEGROUPDESCRIPTORW = _FILEGROUPDESCRIPTORW; + PFILEGROUPDESCRIPTORW = ^FILEGROUPDESCRIPTORW; + LPFILEGROUPDESCRIPTORW = PFILEGROUPDESCRIPTORW; + PLPFILEGROUPDESCRIPTORW = ^LPFILEGROUPDESCRIPTORW; + + _DROPFILES = record + pFiles : DWORD; { offset of file list } + pt : POINT; { drop point (client coords) } + fNC : BOOL; { is it on NonClient area } + fWide : BOOL; { and pt is in screen coords } + end; { WIDE character switch } + DROPFILES = _DROPFILES; + TDROPFILES = _DROPFILES; + PDROPFILES = ^DROPFILES; + LPDROPFILES = PDROPFILES; + PLPDROPFILES = ^LPDROPFILES; + + {====== File System Notification APIs =============================== } + + _SHChangeNotifyEntry = record + pidl : LPCITEMIDLIST; + fRecursive : BOOL; + end; + SHChangeNotifyEntry = _SHChangeNotifyEntry; + TSHChangeNotifyEntry = _SHChangeNotifyEntry; + PSHChangeNotifyEntry = ^SHChangeNotifyEntry; + + _SHChangeDWORDAsIDList = record + cb : USHORT; + dwItem1 : DWORD; + dwItem2 : DWORD; + cbZero : USHORT; + end; + SHChangeDWORDAsIDList = _SHChangeDWORDAsIDList; + TSHChangeDWORDAsIDList = _SHChangeDWORDAsIDList; + PSHChangeDWORDAsIDList = ^SHChangeDWORDAsIDList; + LPSHChangeDWORDAsIDList = PSHChangeDWORDAsIDList; + PLPSHChangeDWORDAsIDList = ^LPSHChangeDWORDAsIDList; + + _SHChangeUpdateImageIDList = record + cb : USHORT; + iIconIndex : longint; + iCurIndex : longint; + uFlags : UINT; + dwProcessID : DWORD; + szName : array[0..(MAX_PATH)-1] of WCHAR; + cbZero : USHORT; + end; + SHChangeUpdateImageIDList = _SHChangeUpdateImageIDList; + TSHChangeUpdateImageIDList = _SHChangeUpdateImageIDList; + PSHChangeUpdateImageIDList = ^SHChangeUpdateImageIDList; + LPSHChangeUpdateImageIDList = PSHChangeUpdateImageIDList; + PLPSHChangeUpdateImageIDList = ^LPSHChangeUpdateImageIDList; + + _SHChangeProductKeyAsIDList = record + cb : USHORT; + wszProductKey : array[0..38] of WCHAR; + cbZero : USHORT; + end; + SHChangeProductKeyAsIDList = _SHChangeProductKeyAsIDList; + TSHChangeProductKeyAsIDList = _SHChangeProductKeyAsIDList; + PSHChangeProductKeyAsIDList = ^SHChangeProductKeyAsIDList; + LPSHChangeProductKeyAsIDList = PSHChangeProductKeyAsIDList; + PLPSHChangeProductKeyAsIDList = ^LPSHChangeProductKeyAsIDList; + + _SHDESCRIPTIONID = record + dwDescriptionId : DWORD; + clsid : CLSID; + end; + SHDESCRIPTIONID = _SHDESCRIPTIONID; + TSHDESCRIPTIONID = _SHDESCRIPTIONID; + PSHDESCRIPTIONID = ^SHDESCRIPTIONID; + LPSHDESCRIPTIONID = PSHDESCRIPTIONID; + PLPSHDESCRIPTIONID = ^LPSHDESCRIPTIONID; + + const + NUM_POINTS = 3; + { asd } + + type + + PAUTO_SCROLL_DATA = ^AUTO_SCROLL_DATA; + AUTO_SCROLL_DATA= record + iNextSample : longint; + dwLastScroll : DWORD; + bFull : BOOL; + pts : array[0..(NUM_POINTS)-1] of POINT; + dwTimes : array[0..(NUM_POINTS)-1] of DWORD; + end; + TAUTO_SCROLL_DATA = AUTO_SCROLL_DATA; + + PCABINETSTATE = ^CABINETSTATE; + CABINETSTATE = record + cLength : WORD; { NT: Show compressed volumes in a different colour } + nVersion : WORD; { NT: Do 8.3 name conversion, or not! } + flag0 : word; { NT: Administrators create comon groups } + fMenuEnumFilter : UINT; + end; + TCABINETSTATE = CABINETSTATE; + LPCABINETSTATE = PCABINETSTATE; + PLPCABINETSTATE = ^LPCABINETSTATE; + + + + FOLDERSettings = Packed Record + ViewMode : UINT; // View mode (FOLDERVIEWMODE values) + fFlags : UINT; // View options (FOLDERFLAGS bits) + end; + TFOLDERSettings = FOLDERSettings; + PFOLDERSettings = ^FOLDERSettings; + LPFOLDERSettings= PFOLDERSettings; + LPCFOLDERSettings= LPFOLDERSettings; + PSV2CVW2_PARAMS = ^TSV2CVW2_PARAMS; + TSV2CVW2_PARAMS = packed record // actually <pshpack8.h>") + cbSize : DWORD; + psvPrev : IShellView; + pfs : LPCFOLDERSETTINGS; + psbOwner : IShellBrowser; + prcView : PRECT; + pvid : PSHELLVIEWID; + hwndView : HWND; + end; + LPSV2CVW2_PARAMS = PSV2CVW2_PARAMS; + _SHELLDETAILS = record + fmt, + cxChar : longint; + str : TSTRRET; + end; + TShellDetails = _SHELLDETAILS; + SHELLDETAILS = _SHELLDETAILS; + PShellDetails = ^TShellDetails; + LPSHELLDETAILS = PSHELLDETAILS; + + TShellDetailsEx = record + Index: UINT; + Detail: TShellDetails; + end; + tagEXTRASEARCH = packed record + guidSearch : TGUID; + wszFriendlyName : array[0..80-1] of WideChar; + wszUrl : array[0..2084-1] of WideChar; + end; + EXTRASEARCH = TagEXTRASEARCH; + TEXTRASEARCH = TagEXTRASEARCH; + LPEXTRASEARCH = ^EXTRASEARCH; + PEXTRASEARCH = ^EXTRASEARCH; + + SHCOLSTATEF = DWORD; + PSHCOLSTATEF = ^SHCOLSTATEF; + TSHCOLSTATEF = SHCOLSTATEF; + + PLPITEMIDLIST = ^LPITEMIDLIST; + + PROPPRG = record + flPrg : WORD; + flPrgInit : WORD; + achTitle : array[0..(PIFNAMESIZE)-1] of CHAR; + achCmdLine : array[0..((PIFSTARTLOCSIZE+PIFPARAMSSIZE)+1)-1] of CHAR; + achWorkDir : array[0..(PIFDEFPATHSIZE)-1] of CHAR; + wHotKey : WORD; + achIconFile : array[0..(PIFDEFFILESIZE)-1] of CHAR; + wIconIndex : WORD; + dwEnhModeFlags : DWORD; + dwRealModeFlags : DWORD; + achOtherFile : array[0..(PIFDEFFILESIZE)-1] of CHAR; + achPIFFile : array[0..(PIFMAXFILEPATH)-1] of CHAR; + end; + TPROPPRG = PROPPRG; + PPPROPPRG = ^PPROPPRG; + PPROPPRG = PROPPRG; + + PLPPROPPRG = ^LPPROPPRG; + LPPROPPRG = PROPPRG; + + PLPCPROPPRG = ^LPCPROPPRG; + LPCPROPPRG = PROPPRG; + + _QCMINFO_IDMAP_PLACEMENT = record + id : UINT; + fFlags : UINT; + end; + QCMINFO_IDMAP_PLACEMENT = _QCMINFO_IDMAP_PLACEMENT; + TQCMINFO_IDMAP_PLACEMENT = _QCMINFO_IDMAP_PLACEMENT; + PQCMINFO_IDMAP_PLACEMENT = ^QCMINFO_IDMAP_PLACEMENT; + + PQCMINFO_IDMAP = ^_QCMINFO_IDMAP; + _QCMINFO_IDMAP = record + nMaxIds : UINT; + pIdList : array[0..0] of QCMINFO_IDMAP_PLACEMENT; + end; + QCMINFO_IDMAP = _QCMINFO_IDMAP; + TQCMINFO_IDMAP = _QCMINFO_IDMAP; + + _QCMINFO = record + hmenu : HMENU; + indexMenu : UINT; + idCmdFirst : UINT; + idCmdLast : UINT; + pIdMap : PQCMINFO_IDMAP; + end; + QCMINFO = _QCMINFO; + TQCMINFO = _QCMINFO; + PQCMINFO = ^QCMINFO; + + PLPQCMINFO = ^LPQCMINFO; + LPQCMINFO = QCMINFO; + + _TBINFO = record + cbuttons : UINT; + uFlags : UINT; + end; + TBINFO = _TBINFO; + TTBINFO = _TBINFO; + PTBINFO = ^TBINFO; + + _DETAILSINFO = record + pidl : LPCITEMIDLIST; + fmt : longint; + cxChar : longint; + str : STRRET; + iImage : longint; + end; + DETAILSINFO = _DETAILSINFO; + TDETAILSINFO = _DETAILSINFO; + PDETAILSINFO = ^DETAILSINFO; + + _SFVM_PROPPAGE_DATA = record + dwReserved : DWORD; + pfn : LPFNADDPROPSHEETPAGE; + lParam : LPARAM; + end; + SFVM_PROPPAGE_DATA = _SFVM_PROPPAGE_DATA; + TSFVM_PROPPAGE_DATA = _SFVM_PROPPAGE_DATA; + PSFVM_PROPPAGE_DATA = ^SFVM_PROPPAGE_DATA; + + _SFVM_HELPTOPIC_DATA = record + wszHelpFile : array[0..(MAX_PATH)-1] of WCHAR; + wszHelpTopic : array[0..(MAX_PATH)-1] of WCHAR; + end; + SFVM_HELPTOPIC_DATA = _SFVM_HELPTOPIC_DATA; + TSFVM_HELPTOPIC_DATA = _SFVM_HELPTOPIC_DATA; + PSFVM_HELPTOPIC_DATA = ^SFVM_HELPTOPIC_DATA; + + _SFV_CREATE = record + cbSize : UINT; + pshf : IShellFolder; + psvOuter : IShellView; + psfvcb : IShellFolderViewCB; + end; + SFV_CREATE = _SFV_CREATE; + TSFV_CREATE = _SFV_CREATE; + PSFV_CREATE = ^SFV_CREATE; + + _CSFV = record + cbSize : UINT; + pshf : IShellFolder; + psvOuter : IShellView; + pidl : LPCITEMIDLIST; + lEvents : LONG; + pfnCallback : LPFNVIEWCALLBACK; + fvm : FOLDERVIEWMODE; + end; + CSFV = _CSFV; + TCSFV = _CSFV; + PCSFV = ^CSFV; + LPCSFV = PCSFV; + PLPCSFV = ^LPCSFV; + + _SFV_SETITEMPOS = record + pidl : LPCITEMIDLIST; + pt : POINT; + end; + SFV_SETITEMPOS = _SFV_SETITEMPOS; + TSFV_SETITEMPOS = _SFV_SETITEMPOS; + PSFV_SETITEMPOS = ^SFV_SETITEMPOS; + LPSFV_SETITEMPOS = PSFV_SETITEMPOS; + PLPSFV_SETITEMPOS = ^LPSFV_SETITEMPOS; + + PSHELLSTATEA = ^SHELLSTATEA; + SHELLSTATEA = record + flag0 : longint; { No longer used, dead bit } + dwWin95Unused : DWORD; { Win95 only - no longer supported pszHiddenFileExts } + uWin95Unused : UINT; { Win95 only - no longer supported cbHiddenFileExts } + lParamSort : LONG; { Note: Not a typo! This is a persisted structure so we cannot use LPARAM } + iSortDirection : longint; { new for win2k. need notUsed var to calc the right size of ie4 struct } + version : UINT; { FIELD_OFFSET does not work on bit fields } + uNotUsed : UINT; { feel free to rename and use } + flag1 : word; { new for Whistler. } + end; {Indicates if the Whistler StartPanel mode is ON or OFF. } + LPSHELLSTATEA = PSHELLSTATEA; {Indicates if the Whistler StartPage on desktop is ON or OFF. } + PLPSHELLSTATEA = ^LPSHELLSTATEA; + TSHELLSTATEA = SHELLSTATEA; + LPSHELLSTATE = LPSHELLSTATEA; + + PSHELLSTATEW = ^SHELLSTATEW; + SHELLSTATEW = record + flag0 : longint; { Win95 only - no longer supported pszHiddenFileExts } + dwWin95Unused : DWORD; { Win95 only - no longer supported cbHiddenFileExts } + uWin95Unused : UINT; { Note: Not a typo! This is a persisted structure so we cannot use LPARAM } + lParamSort : LONG; { new for win2k. need notUsed var to calc the right size of ie4 struct } + iSortDirection : longint; { FIELD_OFFSET does not work on bit fields } + version : UINT; { feel free to rename and use } + uNotUsed : UINT; { new for Whistler. } + flag1 : word; {Indicates if the Whistler StartPage mode is ON or OFF. } + end; {Indicates if the Whistler StartPage on desktop is ON or OFF. } + LPSHELLSTATEW = PSHELLSTATEW; { If you need a new flag, steal a bit from from fSpareFlags. } + PLPSHELLSTATEW = ^LPSHELLSTATEW; + TSHELLSTATE = SHELLSTATEW; + + PSHELLFLAGSTATE = ^SHELLFLAGSTATE; + SHELLFLAGSTATE = record + flag0 : word; + end; + LPSHELLFLAGSTATE = PSHELLFLAGSTATE; + PLPSHELLFLAGSTATE = ^LPSHELLFLAGSTATE; + TSHELLFLAGSTATE = SHELLFLAGSTATE; + + PtagAAMENUFILENAME = ^tagAAMENUFILENAME; + tagAAMENUFILENAME = record + cbTotal : SHORT; + rgbReserved : array[0..11] of BYTE; + szFileName : array[0..0] of WCHAR; + end; + AASHELLMENUFILENAME = tagAAMENUFILENAME; + TAASHELLMENUFILENAME = tagAAMENUFILENAME; + PAASHELLMENUFILENAME = ^AASHELLMENUFILENAME; + LPAASHELLMENUFILENAME = PtagAAMENUFILENAME; + PLPAASHELLMENUFILENAME = ^LPAASHELLMENUFILENAME; + + + PtagAASHELLMENUITEM = ^tagAASHELLMENUITEM; + tagAASHELLMENUITEM = record + lpReserved1 : pointer; + iReserved : longint; + uiReserved : UINT; + lpName : LPAASHELLMENUFILENAME; { name of file } + psz : LPWSTR; { text to use if no file } + end; + AASHELLMENUITEM = tagAASHELLMENUITEM; + TAASHELLMENUITEM = tagAASHELLMENUITEM; + PAASHELLMENUITEM = ^AASHELLMENUITEM; + LPAASHELLMENUITEM = PtagAASHELLMENUITEM; + PLPAASHELLMENUITEM = ^LPAASHELLMENUITEM; + + FDE_OVERWRITE_RESPONSE = longint; + TFDE_OVERWRITE_RESPONSE = FDE_OVERWRITE_RESPONSE; + PFDE_OVERWRITE_RESPONSE = ^longint; + FDE_SHAREVIOLATION_RESPONSE = longint; + TFDE_SHAREVIOLATION_RESPONSE = FDE_SHAREVIOLATION_RESPONSE; + PFDE_SHAREVIOLATION_RESPONSE = ^FDE_SHAREVIOLATION_RESPONSE; + FILEOPENDIALOGOPTIONS = longint; + TFILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS; + PFILEOPENDIALOGOPTIONS = ^TFILEOPENDIALOGOPTIONS; + FDAP = longint; + TFDAP= FDAP; + PFDAP= ^FDAP; + _COMDLG_FILTERSPEC = packed record + pszName : LPCWSTR; + pszSpec : LPCWSTR; + end; + + COMDLG_FILTERSPEC = _COMDLG_FILTERSPEC; + TCOMDLG_FILTERSPEC = _COMDLG_FILTERSPEC; + PCOMDLG_FILTERSPEC = ^_COMDLG_FILTERSPEC; + + + IPersistFolder = Interface(IPersist) + ['{000214EA-0000-0000-C000-000000000046}'] + function Initialize (pild : LPCITEMIDLIST): HResult; StdCall; + end; + + IPersistFolder2 = Interface(IPersistFolder) + ['{1AC3D9F0-175C-11d1-95BE-00609797EA4F}'] + function GetCurFolder(Out ppidl : LPITEMIDLIST):HResult; StdCall; + end; + + IPersistIDList = Interface(IPersist) + ['{1079acfc-29bd-11d3-8e0d-00c04f6837d5}'] + function SetIdList(pid:LPCITEMIDLIST):HResult;StdCall; + function GetIdList(out pid:LPCITEMIDLIST):HResult;StdCall; + end; + + IEnumIDList = interface(IUnknown) + ['{000214F2-0000-0000-C000-000000000046}'] + function Next(celt: ULONG; out rgelt: PItemIDList; var pceltFetched: ULONG): HRESULT; stdcall; + function Skip(celt: ULONG): HRESULT; stdcall; function Reset: HRESULT; stdcall; + function Clone(out ppenum: IEnumIDList): HRESULT; stdcall; + end; + + IEnumExtraSearch = Interface(IUnknown) + ['{0E700BE1-9DB6-11d1-A1CE-00C04FD75D13}'] + function Next(celt: ULONG; out rgelt: EXTRASEARCH; var pceltFetched: ULONG): HRESULT; stdcall; + function Skip(celt: ULONG): HRESULT; stdcall; function Reset: HRESULT; stdcall; + function Clone(out ppenum: IEnumExtraSearch): HRESULT; stdcall; + end; + + IShellFolder = interface(IUnknown) + ['{000214E6-0000-0000-C000-000000000046}'] + function ParseDisplayName(hwndOwner: HWND; pbcReserved: Pointer; lpszDisplayName: POLESTR; out pchEaten: ULONG; out ppidl: PItemIDList; var dwAttributes: ULONG): HRESULT; stdcall; + function EnumObjects(hwndOwner: HWND; grfFlags: DWORD; out EnumIDList: IEnumIDList): HRESULT; stdcall; + function BindToObject(pidl: PItemIDList; pbcReserved: Pointer; const riid: TIID; out ppvOut): HRESULT; stdcall; + function BindToStorage(pidl: PItemIDList; pbcReserved: Pointer; const riid: TIID; out ppvObj): HRESULT; stdcall; + function CompareIDs(lParam: LPARAM; pidl1, pidl2: PItemIDList): HRESULT; stdcall; + function CreateViewObject(hwndOwner: HWND; const riid: TIID; out ppvOut): HRESULT; stdcall; + function GetAttributesOf(cidl: UINT; var apidl: PItemIDList; var rgfInOut: UINT): HRESULT; stdcall; + function GetUIObjectOf(hwndOwner: HWND; cidl: UINT; var apidl: PItemIDList; const riid: TIID; prgfInOut: Pointer; out ppvOut): HRESULT; stdcall; + function GetDisplayNameOf(pidl: PItemIDList; uFlags: DWORD; var lpName: TStrRet): HRESULT; stdcall; + function SetNameOf(hwndOwner: HWND; pidl: PItemIDList; lpszName: POLEStr; uFlags: DWORD; var ppidlOut: PItemIDList): HRESULT; stdcall; + end; + + IShellFolder2 = interface(IShellFolder) + ['{93F2F68C-1D1B-11d3-A30E-00C04F79ABD1}'] + function GetDefaultSearchGUID(out guid:TGUID):HResult;StdCall; + function EnumSearches(out ppenum:IEnumExtraSearch):HResult;StdCall; + function GetDefaultColumn(dwres:DWORD;psort :pulong; pdisplay:pulong):HResult;StdCall; + function GetDefaultColumnState(icolumn:UINT;pscflag:PSHCOLSTATEF):HResult;StdCall; + function GetDetailsEx(pidl:LPCITEMIDLIST;pscid:PSHCOLUMNID; pv : pOLEvariant):HResult;StdCall; + function GetDetailsOf(pidl:LPCITEMIDLIST;iColumn:UINT;psd:PSHELLDETAILS):HResult;StdCall; + function MapColumnToSCID(iColumn:UINT;pscid:PSHCOLUMNID):HResult;StdCall; + end; + + IAutoComplete = interface(IUnknown) + ['{00bb2762-6a77-11d0-a535-00c04fd7d062}'] + function Init(hwndEdit: HWND; punkACL: IUnknown; pwszRegKeyPath: LPCWSTR; pwszQuickComplete: LPCWSTR): HRESULT; stdcall; + function Enable(fEnable: BOOL): HRESULT; stdcall; + end; + + IShellView = Interface(IOleWindow) + ['{000214E3-0000-0000-C000-000000000046}'] + function TranslateAccelerator( pm :PMSG):HResult; StdCall; + function EnableModeless(fEnable : BOOL):HResult; StdCall; + function UIActivate(uState:UINT):HResult; StdCall; + function Refresh:HResult; StdCall; + function CreateViewWindow(psvPrevious:IShellView;pfs:LPCFOLDERSETTINGS;psb:IShellBrowser;prcview:prect;var ph:HWND):HResult;StdCall; + function DestroyViewWindow:HResult; StdCall; + function GetCurrentInfo(pfs: LPFOLDERSETTINGS):HResult; StdCall; + function AddPropertySheetPages(dwreserved : DWORD;pfn:pointer{LPFNSVADDPROPSHEETPAGE};lp:lparam):HResult; StdCall; + function SaveViewState:HResult; StdCall; + function SelectItem( pidlItem: LPCITEMIDLIST;uflags:TSVSIF):HResult; StdCall; + function GetItemObject(uitem:UINT;const riid:TGUID;out ppv :PPOinter):HResult;StdCall; + end; + + IShellView2 = Interface(IShellView) + ['{88E39E80-3578-11CF-AE69-08002B2E1262}'] + function GetView(var pvid:TSHELLVIEWID ;uview:ULONG):HResult;StdCall; + function CreateViewWindow2(lpParams:LPSV2CVW2_PARAMS):HResult;StdCall; + function HandleRename(pidlNew: LPCITEMIDLIST ):HResult;StdCall; + function SelectAndPositionItem(pidlItem:LPCITEMIDLIST ;uflags:UINT;ppt:PPOINT):HRESULT;STDCALL; + end; + + IFolderView = Interface(IUnknown) + ['{cde725b0-ccc9-4519-917e-325d72fab4ce}'] + function GetCurrentViewMode(pViewMode:PUINT):HResult; StdCall; + function SetCurrentViewMode(ViewMode:UINT):HResult; StdCall; + function GetFolder(const riid:TGUID;ppv:pointer):HResult; StdCall; + function Item(iItemIndex:longint;ppidl:LPITEMIDLIST):HResult; StdCall; + function ItemCount(uflags:uint;pcitems:plongint):HResult; StdCall; + function Items (uflags:uint;const id :TGUID;out ppv: pointer):HResult; StdCall; + function GetSelectionMarkedItem(piItem:pint):HResult; StdCall; + function GetFocussedItem(piItem:pint):HResult; StdCall; + function GetItemPosition(pidl:LPCITEMIDLIST;ppt:PPOINT):HResult; StdCall; + function GetSpacing(ppt:ppoint):HResult; StdCall; + function GetDefaultSpacing(ppt:ppoint):HResult; StdCall; + function GetAutoArrange:HResult; StdCall; + function SelectItem(iItem : longint;dwflags:Dword) :HResult; StdCall; + function SelectAndPositionItems(cild:uint;var apid: LPCITEMIDLIST ;apt:PPOINT;dwflags:DWord):HResult; StdCall; + end; + IFolderFilterSite = Interface(IUnknown) + ['{C0A651F5-B48B-11d2-B5ED-006097C686F6}'] + function SetFilter(punk:IUnknown):HResult; StdCall; + end; + IFolderFilter = Interface(IUnknown) + ['{9CC22886-DC8E-11d2-B1D0-00C04F8EEB3E}'] + function ShouldShow(Psf:IShellFolder;pidlfolder:LPCITEMIDLIST;pidlItem:LPCITEMIDLIST):HResult; StdCall; + function GetEnumFlags(Psf:IShellFolder;pidlfolder:LPCITEMIDLIST;var hwnd: hwnd;out pgrfflags:DWORD):HResult; StdCall; + end; + +//cpp_quote("#include <commctrl.h>") +//cpp_quote("typedef LPTBBUTTON LPTBBUTTONSB;") + + IShellBrowser = interface(IOleWindow) + ['{000214E2-0000-0000-C000-000000000046}'] + function InsertMenusSB(hmenuShared: HMenu; var menuWidths: TOleMenuGroupWidths): HResult;StdCall; + function SetMenuSB(hmenuShared: HMenu; holemenu: 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(var msg: TMsg; wID: Word): HResult;StdCall; + function BrowseObject(pidl:LPCITEMIDLIST;wFlags:UINT): HResult;StdCall; + function GetViewStateStream(grfMode :DWORD; out ppstrm :IStream): HResult;StdCall; + function GetControlWindow(id:UINT;var h:HWND): HResult;StdCall; + function SendCOntrolMsg(id:uint;umsg:UINT;wparam:wparam;lparam:lparam;pret:PLRESULT): HResult;StdCall; + function QueryActiveShellView(out ppsh :IShellView): HResult;StdCall; + function OnViewWindowActive(psh :IShellView): HResult;StdCall; + function SetToolBarItems(lpButtons:LPTBBUTTONSB;nButtons:UINT;uFlags:uint): HResult;StdCall; + end; + + const + CLSID_AutoComplete: TGUID = '{00BB2763-6A77-11D0-A535-00C04FD7D062}'; + + const + { IAutoComplete2 options } + ACO_NONE = 0; + ACO_AUTOSUGGEST = $1; + ACO_AUTOAPPEND = $2; + ACO_SEARCH = $4; + ACO_FILTERPREFIXES = $8; + ACO_USETAB = $10; + ACO_UPDOWNKEYDROPSLIST = $20; + ACO_RTLREADING = $40; + + type + IAutoComplete2 = interface(IAutoComplete) + ['{EAC04BC0-3791-11d2-BB95-0060977B464C}'] + function SetOptions(dwFlag: DWORD): HRESULT; stdcall; + function GetOptions(var dwFlag: DWORD): HRESULT; stdcall; + end; + + PCMINVOKECOMMANDINFO = ^TCMINVOKECOMMANDINFO; + TCMINVOKECOMMANDINFO = packed record + cbSize : DWORD; + fMask : DWORD; + hwnd : HWND; + lpVerb : LPCSTR; + lpParameters : LPCSTR; + lpDirectory : LPCSTR; + nShow : longint; + dwHotKey: DWORD; + hIcon : THANDLE; + end; + LPCMINVOKECOMMANDINFO = PCMINVOKECOMMANDINFO; + + IContextMenu = interface(IUnknown) + ['{000214E4-0000-0000-c000-000000000046}'] + function QueryContextMenu(hmenu:HMENU;indexMenu:UINT;idCmdFirst:UINT;idCmdLast:UINT;UFlags:uint):HRESULT;StdCall; + function InvokeCommand(var lpici : TCMINVOKECOMMANDINFO):HResult; StdCall; + function GetCommandString(idcmd:UINT_Ptr;uType:UINT;pwreserved:puint;pszName:LPStr;cchMax:uint):HResult;StdCall; + end; + IContextMenu2 = interface(IContextMenu) + ['{000214f4-0000-0000-c000-000000000046}'] + function HandleMenuMsg(uMsg:UINT;wParam:WPARAM;lParam:WPARAM):HResult;StdCall; + end; + IContextMenu3 = interface(IContextMenu2) + ['{bcfce0a0-ec17-11d0-8d10-00a0c90f2719}'] + function HandleMenuMsg2(uMsg:UINT;wParam:WPARAM;lParam:WPARAM;presult:PLRESULT):HResult;StdCall; + end; + IEXtractIconA = interface(IUNknown) + ['{000214eb-0000-0000-c000-000000000046}'] + function GetIconLocation(uFlags:UINT;szIconFIle:LPSTR;cchMax:UINT;var piIndex : longint; var pwflags:uint):HResult;StdCall; + function Extract(pszFile:LPCStr;nIconIndex:UINT;var phiconLarge:HICON;var phiconSmall:HICON;nIconSize:UINT):HResult;StdCall; + end; + + IEXtractIconW = interface(IUNknown) + ['{000214fa-0000-0000-c000-000000000046}'] + function GetIconLocation(uFlags:UINT;szIconFIle:LPWSTR;cchMax:UINT;var piIndex : longint; var pwflags:uint):HResult;StdCall; + function Extract(pszFile:LPCWStr;nIconIndex:UINT;var phiconLarge:HICON;var hiconSmall:HICON;nIconSize:UINT):HResult;StdCall; + end; + IEXtractIcon=IExtractIconA; + + SPINITF = DWORD; + EXPPS = UINT; + + IProfferService = interface (IUnknown) + ['{cb728b20-f786-11ce-92ad-00aa00a74cd0}'] + function ProfferService(const guid:TGUID;psp:IServiceProvider;var pdwcookie:DWORD):HRESULT;StdCall; + function RevokeService(dwCookie:DWORD):HRESULT;StdCall; + end; +{ + IPropertyUI = interface(IUnknown) + ['{757a7d9f-919a-4118-99d7-dbb208c8cc66}'] + function ParsePropertyName(pszName:LPCWSTR; pfmtid:pFMTID; ppid:pPROPID; pchEaten:pULONG):HRESULT;StdCall; + function GetCannonicalName(const fmtid:FMTID; pid:PROPID; pwszText:LPWSTR; cchText:DWORD):HRESULT;StdCall; + function GetDisplayName(const fmtid:FMTID; pid:PROPID; flags:PROPERTYUI_NAME_FLAGS; pwszText:LPWSTR; cchText:DWORD):HRESULT;StdCall; + function GetPropertyDescription(const fmtid:FMTID; pid:PROPID; pwszText:LPWSTR; cchText:DWORD):HRESULT;StdCall; + function GetDefaultWidth(const fmtid:FMTID; pid:PROPID; pcxChars:pULONG):HRESULT;StdCall; + function GetFlags(const fmtid:FMTID; pid:PROPID; pFlags:pPROPERTYUI_FLAGS):HRESULT;StdCall; + function FormatForDisplay(const fmtid:FMTID; pid:PROPID; pvar:pPROPVARIANT; flags:PROPERTYUI_FORMAT_FLAGS;wszText:LPWSTR;cchText:DWORD):HRESULT;StdCall; + function GetHelpInfo(const fmtid:FMTID; pid:PROPID; pwszHelpFile:LPWSTR; cch:DWORD; puHelpID:pUINT):HRESULT;StdCall; + end; +} + ICategoryProvider =interface(IUnknown) + ['{9af64809-5864-4c26-a720-c1f78c086ee3}'] + function CanCategorizeOnSCID(pscid:pSHCOLUMNID):HRESULT;StdCall; + function GetDefaultCategory(pguid:pGUID; pscid:pSHCOLUMNID):HRESULT;StdCall; + function GetCategoryForSCID(pscid:pSHCOLUMNID; pguid:pGUID):HRESULT;StdCall; + function EnumCategories(out penum:IEnumGUID):HRESULT;StdCall; + function GetCategoryName(pguid:pGUID; pszName:LPWSTR; cch:UINT):HRESULT;StdCall; + function CreateCategory(pguid:pGUID; riid:REFIID; ppv:Ppointer):HRESULT;StdCall; + end; + + ICategorizer =Interface(IUnknown) + ['{a3b14589-9174-49a8-89a3-06a1ae2b9ba7}'] + function GetDescription(pszDesc:LPWSTR; cch:UINT):HRESULT;StdCall; + function GetCategory(cidl:UINT; var apidl:LPCITEMIDLIST; rgCategoryIds:pDWORD):HRESULT;StdCall; + function GetCategoryInfo(dwCategoryId:DWORD; pci:pCATEGORY_INFO):HRESULT;StdCall; + function CompareCategory(csfFlags:CATSORT_FLAGS; dwCategoryId1:DWORD; dwCategoryId2:DWORD):HRESULT;StdCall; + end; + + IQueryInfo = Interface(IUnknown) + ['{00021500-0000-0000-c000-000000000046}'] + function GetInfoTip (dwFlags:DWord;var pwsztip:pwchar):HResult;StdCall; + function GetInfoFlags (var dwflags:dword):HResult;Stdcall; + end; + + 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; + + ITaskbarList2 = interface(ITaskbarList) + ['{602D4995-B13A-429b-A66E-1935E44F4317}'] + function MarkFullscreenWindow(hwnd: HWND; fFullscreen: BOOL): HResult; stdcall; + end; + +const + // enum THUMBBUTTONFLAGS + THBF_ENABLED = 0; + THBF_DISABLED = $1; + THBF_DISMISSONCLICK = $2; + THBF_NOBACKGROUND = $4; + THBF_HIDDEN = $8; + THBF_NONINTERACTIVE = $10; + +type + THUMBBUTTONFLAGS = DWord; + +const + // enum THUMBBUTTONMASK + THB_BITMAP = $1; + THB_ICON = $2; + THB_TOOLTIP = $4; + THB_FLAGS = $8; + +type + THUMBBUTTONMASK = DWord; + + THUMBBUTTON = packed record + dwMask: THUMBBUTTONMASK; + iId: UINT; + iBitmap: UINT; + hIcon: HICON; + szTip: array[0..259] of WCHAR; + dwFlags: THUMBBUTTONFLAGS; + end; + LPTHUMBBUTTON = ^THUMBBUTTON; + +const + THBN_CLICKED = $1800; + + // enum TBPFLAG + TBPF_NOPROGRESS = 0; + TBPF_INDETERMINATE = $1; + TBPF_NORMAL = $2; + TBPF_ERROR = $4; + TBPF_PAUSED = $8; + +type + TBPFLAG = DWord; + + ITaskBarList3 = interface(ITaskbarList2) + ['{ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf}'] + function SetProgressValue(hwnd: HWND; ullCompleted: ULONGLONG; ullTotal: ULONGLONG): HResult; stdcall; + function SetProgressState(hwnd: HWND; tbpFlags: TBPFLAG): HResult; stdcall; + function RegisterTab(hwndTab: HWND; hwndMDI: HWND): HResult; stdcall; + function UnregisterTab(hwndTab: HWND): HResult; stdcall; + function SetTabOrder(hwndTab: HWND; hwndInsertBefore: HWND): HResult; stdcall; + function SetTabActive(hwndTab: HWND; hwndMDI: HWND; dwReserved: DWORD): HResult; stdcall; + function ThumbBarAddButtons(hwnd: HWND; cButtons: UINT; pButton: LPTHUMBBUTTON): HResult; stdcall; + function ThumbBarUpdateButtons(hwnd: HWND; cButtons: UINT; pButton: LPTHUMBBUTTON): HResult; stdcall; + function ThumbBarSetImageList(hwnd: HWND; himl: HIMAGELIST): HResult; stdcall; + function SetOverlayIcon(hwnd: HWND; hIcon: HICON; pszDescription: LPCWSTR): HResult; stdcall; + function SetThumbnailTooltip(hwnd: HWND; pszTip: LPCWSTR): HResult; stdcall; + function SetThumbnailClip(hwnd: HWND; prcClip: PRECT): HResult; stdcall; + end; + +const + // enum STPFLAG + STPF_NONE = 0; + STPF_USEAPPTHUMBNAILALWAYS = $1; + STPF_USEAPPTHUMBNAILWHENACTIVE = $2; + STPF_USEAPPPEEKALWAYS = $4; + STPF_USEAPPPEEKWHENACTIVE = $8; + +type + STPFLAG = DWord; + + ITaskbarList4 = interface(ITaskbarList3) + ['{c43dc798-95d1-4bea-9030-bb99e2983a1a}'] + function SetTabProperties(hwndTab: HWND; stpFlags: STPFLAG): HResult; stdcall; + end; + +const + // GETPROPERTYSTOREFLAGS enum + GPS_DEFAULT = 0; + GPS_HANDLERPROPERTIESONLY = $1; + GPS_READWRITE = $2; + GPS_TEMPORARY = $4; + GPS_FASTPROPERTIESONLY = $8; + GPS_OPENSLOWITEM = $10; + GPS_DELAYCREATION = $20; + GPS_BESTEFFORT = $40; + GPS_NO_OPLOCK = $80; + GPS_MASK_VALID = $ff; + +type + GETPROPERTYSTOREFLAGS = DWord; + _tagpropertykey = packed record + fmtid: TGUID; + pid: DWORD; + end; + PROPERTYKEY = _tagpropertykey; + REFPROPERTYKEY = ^PROPERTYKEY; + REFPROPVARIANT = ^TPROPVARIANT; + + IPropertyStore = interface(IUnknown) + ['{886d8eeb-8cf2-4446-8d02-cdba1dbdcf99}'] + function GetCount(out cProps: DWORD): HResult; stdcall; + function GetAt(iProp: DWORD; out pkey: PROPERTYKEY): HResult; stdcall; + function GetValue(key: REFPROPERTYKEY; out pv: PROPVARIANT): HResult; stdcall; + function SetValue(key: REFPROPERTYKEY; propvar: REFPROPVARIANT): HResult; stdcall; + function Commit: HResult; stdcall; + end; + + IPropertyDescriptionList = interface(IUnknown) + ['{1f9fc1d0-c39b-4b26-817f-011967d3440e}'] + function GetCount(out pcElem: UINT): HResult; stdcall; + function GetAt(iElem: UINT; const riid: REFIID; out ppv): HResult; stdcall; + end; + + IShellLinkA = Interface(IUnknown) + ['{000214EE-0000-0000-C000-000000000046}'] + function GetPath(pszFile:LPSTR; cch:longint;var pfd:WIN32_FIND_DATA; fFlags:DWORD):HRESULT;StdCall; + function GetIDList(var ppidl:LPITEMIDLIST):HRESULT;StdCall; + function SetIDList(pidl:LPCITEMIDLIST):HRESULT;StdCall; + function GetDescription(pszName:LPSTR; cch:longint):HRESULT;StdCall; + function SetDescription(pszName:LPCSTR):HRESULT;StdCall; + function GetWorkingDirectory(pszDir:LPSTR; cch:longint):HRESULT;StdCall; + function SetWorkingDirectory(pszDir:LPCSTR):HRESULT;StdCall; + function GetArguments(pszArgs:LPSTR; cch:longint):HRESULT;StdCall; + function SetArguments(pszArgs:LPCSTR):HRESULT;StdCall; + function GetHotkey(var pwHotkey:WORD):HRESULT;StdCall; + function SetHotkey(wHotkey:WORD):HRESULT;StdCall; + function GetShowCmd(var piShowCmd:longint):HRESULT;StdCall; + function SetShowCmd(iShowCmd:longint):HRESULT;StdCall; + function GetIconLocation(pszIconPath:LPSTR; cch:longint;var iIcon:longint):HRESULT;StdCall; + function SetIconLocation(pszIconPath:LPCSTR; iIcon:longint):HRESULT;StdCall; + function SetRelativePath(pszPathRel:LPCSTR; dwReserved:DWORD):HRESULT;StdCall; + function Resolve(hwnd:HWND; fFlags:DWORD):HRESULT;StdCall; + function SetPath(pszFile:LPCSTR):HRESULT;StdCall; + end; + + IShellLinkW = interface (IUnknown) + ['{000214F9-0000-0000-C000-000000000046}'] + function GetPath(pszFile:LPWSTR; cch:longint; pfd:pWIN32_FIND_DATAW; fFlags:DWORD):HRESULT;StdCall; + function GetIDList(ppidl:pLPITEMIDLIST):HRESULT;StdCall; + function SetIDList(pidl:LPCITEMIDLIST):HRESULT;StdCall; + function GetDescription(pszName:LPWSTR; cch:longint):HRESULT;StdCall; + function SetDescription(pszName:LPCWSTR):HRESULT;StdCall; + function GetWorkingDirectory(pszDir:LPWSTR; cch:longint):HRESULT;StdCall; + function SetWorkingDirectory(pszDir:LPCWSTR):HRESULT;StdCall; + function GetArguments(pszArgs:LPWSTR; cch:longint):HRESULT;StdCall; + function SetArguments(pszArgs:LPCWSTR):HRESULT;StdCall; + function GetHotkey(pwHotkey:pWORD):HRESULT;StdCall; + function SetHotkey(wHotkey:WORD):HRESULT;StdCall; + function GetShowCmd(piShowCmd:plongint):HRESULT;StdCall; + function SetShowCmd(iShowCmd:longint):HRESULT;StdCall; + function GetIconLocation(pszIconPath:LPWSTR; cch:longint; piIcon:plongint):HRESULT;StdCall; + function SetIconLocation(pszIconPath:LPCWSTR; iIcon:longint):HRESULT;StdCall; + function SetRelativePath(pszPathRel:LPCWSTR; dwReserved:DWORD):HRESULT;StdCall; + function Resolve(hwnd:HWND; fFlags:DWORD):HRESULT;StdCall; + function SetPath(pszFile:LPCWSTR):HRESULT;StdCall; + end; + IShellLink = IShellLinkA; + + PIShellItem= ^IShellItem; + IShellItem = interface(IUnknown) + ['{43826d1e-e718-42ee-bc55-a1e261c37bfe}'] + function BindToHandler(pbc:IBindCTX;bhid:PGUID;RIID:PIID;ppv:ppointer):HResult;Stdcall; + function GetParent(ppsi:PISHellItem):HResult;Stdcall; + function GetDisplayName(sigdnname:SIGDN;ppszName:LPWSTR):HResult; Stdcall; + function GetAttributes(sfgaomask:SFGAOF;psfgaoAttribs:PSFGAOF):HResult;Stdcall; + function Compare(psi:IShellItem;hint:SICHINTF;piorder:PINT):HResult; Stdcall; + end; + + IEnumShellItems = interface(IUnknown) + ['{70629033-e363-4a28-a567-0db78006e6d7}'] + function Next(celt: ULONG; out rgelt: IShellItem; var pceltFetched: ULONG): HResult; stdcall; + function Skip(celt: ULONG): HResult; stdcall; + function Reset: HResult; stdcall; + function Clone(out ppenum: IEnumShellItems): HResult; stdcall; + end; + +const + // SIATTRIBFLAGS enum + SIATTRIBFLAGS_AND = $1; + SIATTRIBFLAGS_OR = $2; + SIATTRIBFLAGS_APPCOMPAT = $3; + SIATTRIBFLAGS_MASK = $3; + SIATTRIBFLAGS_ALLITEMS = $4000; + +type + SIATTRIBFLAGS = DWord; + IShellItemArray = interface(IUnknown) + ['{b63ea76d-1f85-456f-a19c-48159efa858b}'] + function BindToHandler(pbc: IBindCtx; const bhid: TGUID; const riid: REFIID; out ppvOut): HResult; stdcall; + function GetPropertyStore(flags: GETPROPERTYSTOREFLAGS; const riid: REFIID; out ppv): HResult; stdcall; + function GetPropertyDescriptionList(keyType: REFPROPERTYKEY; const riid: REFIID; out ppv): HResult; stdcall; + function GetAttributes(AttribFlags: SIATTRIBFLAGS; sfgaoMask: SFGAOF; var psfgaoAttribs: SFGAOF): HResult; stdcall; + function GetCount(var pdwNumItems: DWORD): HResult; stdcall; + function GetItemAt(dwIndex: DWORD; var ppsi: IShellItem): HResult; stdcall; + function EnumItems(var ppenumShellItems: IEnumShellItems): HResult; stdcall; + end; + + IModalWindow = Interface(IUnknown) + ['{b4db1657-70d7-485e-8e3e-6fcb5a5c1802}'] + function Show(hwndparent:HWND):HResult;StdCall; + end; + + IShellItemFilter = Interface(IUnknown) + ['{2659B475-EEB8-48b7-8F07-B378810F48CF}'] + function IncludeItem(psi:IShellItem):HResult;StdCall; + function GetEnumFlagsForItem(psi:IShellItem;pgrfflags :PSHCONTF):HRESULT;Stdcall; + end; + + IFileDialog = Interface; + IFileDialogEvents = Interface(IUnknown) + ['{973510db-7d7f-452b-8975-74a85828d354}'] + function OnFileOk (pfd:IFileDialog):HResult; Stdcall; + function OnFolderChanging (pfd:IFileDialog;psifolder:IShellItem):HResult; Stdcall; + function OnFolderChange (pfd:IFileDialog):HResult; Stdcall; + function OnSelectionChange(pfd:IFileDialog):HResult; Stdcall; + function OnShareViolation (pfd:IFileDialog;psi:IShellItem;pResponse :pFDE_SHAREVIOLATION_RESPONSE):HResult; Stdcall; + function OnTypeChange (pfd:IFileDialog):HResult; Stdcall; + function OnOverwrite (pfd:IFileDialog;psi:IShellItem;pResponse :pFDE_OVERWRITE_RESPONSE):HResult; Stdcall; + end; + + IFileDialog = Interface(IModalWindow) + ['{42f85136-db7e-439c-85f1-e4075d135fc8}'] + function SetFileTypes(cFileTypes:UINT;rgFilterSpec:pCOMDLG_FILTERSPEC):HRESULT;Stdcall; + function SetFileTypeIndex(iFileType:UINT):HRESULT;Stdcall; + function GetFileTypeIndex(piFileType:pUINT):HRESULT;Stdcall; + function Advise(pdfde:IFileDialogEvents;pdwcookie:PDWORD):HRESULT;Stdcall; + function unadvise(dwCookie:DWORD):HRESULT;Stdcall; + function SetOptions(fos:FILEOPENDIALOGOPTIONS):HRESULT;Stdcall; + function GetOptions(pfos:pFILEOPENDIALOGOPTIONS):HRESULT;Stdcall; + function SetDefaultFolder(psi:IShellItem):HRESULT;Stdcall; + function SetFolder(psi:IShellItem):HRESULT;Stdcall; + function Getfolder(ppsi:pIShellItem):HRESULT;Stdcall; + function GetCurrentSelection(ppsi:pIShellItem):HRESULT;Stdcall; + function SetFileName(pszName:LPCWSTR):HRESULT;Stdcall; + function GetFileName(pszName:pLPWSTR):HRESULT;Stdcall; + function SetTitle(pszTitle:LPCWSTR):HRESULT;Stdcall; + function SetOkButtonLabel(pszText:LPCWSTR):HRESULT;Stdcall; + function SetFileNameLabel(pszLabel:LPCWSTR):HRESULT;Stdcall; + function GetResult(ppsi:pIShellItem):HRESULT;Stdcall; + function AddPlace(psi:IShellItem;fdap:FDAP):HRESULT;Stdcall; + function SetDefaultExtension(pszDefaultExtension:LPCWSTR):HRESULT;Stdcall; + function Close(hr:HRESULT):HRESULT;Stdcall; + function SetClientGuid(GUID:PGUID):HRESULT;Stdcall; + function ClearClientData:HRESULT;Stdcall; + function SetFilter(pfilter:IShellItemFilter):HRESULT;Stdcall; + end; + + IFileOperationProgressSink = interface(IUnknown) + ['{04b0f1a7-9490-44bc-96e1-4296a31252e2}'] + function StartOperations: HResult; stdcall; + function FinishOperations(hrResult: HResult): HResult; stdcall; + function PreRenameItem(dwFlags: DWORD; psiItem: IShellItem; pszNewName: LPCWSTR): HResult; stdcall; + function PostRenameItem(dwFlags: DWORD; psiItem: IShellItem; pszNewName: LPCWSTR; hrRename: HRESULT; psiNewlyCreated: IShellItem): HResult; stdcall; + function PreMoveItem(dwFlags: DWORD; psiItem: IShellItem; psiDestinationFolder: IShellItem; pszNewName: LPCWSTR): HResult; stdcall; + function PostMoveItem(dwFlags: DWORD; psiItem: IShellItem; psiDestinationFolder: IShellItem; pszNewName: LPCWSTR; hrMove: HRESULT; psiNewlyCreated: IShellItem): HResult; stdcall; + function PreCopyItem(dwFlags: DWORD; psiItem: IShellItem; psiDestinationFolder: IShellItem; pszNewName: LPCWSTR): HResult; stdcall; + function PostCopyItem(dwFlags: DWORD; psiItem: IShellItem; psiDestinationFolder: IShellItem; pszNewName: LPCWSTR; hrCopy: HRESULT; psiNewlyCreated: IShellItem): HResult; stdcall; + function PreDeleteItem(dwFlags: DWORD; psiItem: IShellItem): HResult; stdcall; + function PostDeleteItem(dwFlags: DWORD; psiItem: IShellItem; hrDelete: HRESULT; psiNewlyCreated: IShellItem): HResult; stdcall; + function PreNewItem(dwFlags: DWORD; psiDestinationFolder: IShellItem; pszNewName: LPCWSTR): HResult; stdcall; + function PostNewItem(dwFlags: DWORD; psiDestinationFolder: IShellItem; pszNewName: LPCWSTR; pszTemplateName: LPCWSTR; dwFileAttributes: DWORD; hrNew: HRESULT; psiNewItem: IShellItem): HResult; stdcall; + function UpdateProgress(iWorkTotal: UINT; iWorkSoFar: UINT): HResult; stdcall; + function ResetTimer: HResult; stdcall; + function PauseTimer: HResult; stdcall; + function ResumeTimer: HResult; stdcall; + end; + + IFileSaveDialog = interface(IFileDialog) + ['{84bccd23-5fde-4cdb-aea4-af64b83d78ab}'] + function SetSaveAsItem(psi: IShellItem): HResult; stdcall; + function SetProperties(pStore: IPropertyStore): HResult; stdcall; + function SetCollectedProperties(pList: IPropertyDescriptionList; fAppendDefault: BOOL): HResult; stdcall; + function GetProperties(var ppStore: IPropertyStore): HResult; stdcall; + function ApplyProperties(psi: IShellItem; pStore: IPropertyStore; hwnd: HWND; pSink: IFileOperationProgressSink): HResult; stdcall; + end; + + IFileOpenDialog = interface(IFileDialog) + ['{d57c7288-d4ad-4768-be02-9d969532d960}'] + function GetResults(var ppenum: IShellItemArray): HResult; stdcall; + function GetSelectedItems(var ppsai: IShellItemArray): HResult; stdcall; + end; + +const + // CDCONTROLSTATEF enum + CDCS_INACTIVE = 0; + CDCS_ENABLED = $1; + CDCS_VISIBLE = $2; + CDCS_ENABLEDVISIBLE = $3; + +type + CDCONTROLSTATEF = DWord; + IFileDialogCustomize = interface(IUnknown) + ['{e6fdd21a-163f-4975-9c8c-a69f1ba37034}'] + function EnableOpenDropDown(dwIDCtl: DWORD): HResult; stdcall; + function AddMenu(dwIDCtl: DWORD; pszLabel: LPCWSTR): HResult; stdcall; + function AddPushButton(dwIDCtl: DWORD; pszLabel: LPCWSTR): HResult; stdcall; + function AddComboBox(dwIDCtl: DWORD): HResult; stdcall; + function AddRadioButtonList(dwIDCtl: DWORD): HResult; stdcall; + function AddCheckButton(dwIDCtl: DWORD; pszLabel: LPCWSTR; bChecked: BOOL): HResult; stdcall; + function AddEditBox(dwIDCtl: DWORD; pszText: LPCWSTR): HResult; stdcall; + function AddSeparator(dwIDCtl: DWORD): HResult; stdcall; + function AddText(dwIDCtl: DWORD; pszText: LPCWSTR): HResult; stdcall; + function SetControlLabel(dwIDCtl: DWORD; pszLabel: LPCWSTR): HResult; stdcall; + function GetControlState(dwIDCtl: DWORD; out pdwState: CDCONTROLSTATEF): HResult; stdcall; + function SetControlState(dwIDCtl: DWORD; dwState: CDCONTROLSTATEF): HResult; stdcall; + function GetEditBoxText(dwIDCtl: DWORD; out ppszText: WCHAR): HResult; stdcall; + function SetEditBoxText(dwIDCtl: DWORD; pszText: LPCWSTR): HResult; stdcall; + function GetCheckButtonState(dwIDCtl: DWORD; out pbChecked: BOOL): HResult; stdcall; + function SetCheckButtonState(dwIDCtl: DWORD; bChecked: BOOL): HResult; stdcall; + function AddControlItem(dwIDCtl: DWORD; dwIDItem: DWORD; pszLabel: LPCWSTR): HResult; stdcall; + function RemoveControlItem(dwIDCtl: DWORD; dwIDItem: DWORD): HResult; stdcall; + function RemoveAllControlItems(dwIDCtl: DWORD): HResult; stdcall; + function GetControlItemState(dwIDCtl: DWORD; dwIDItem: DWORD; out pdwState: CDCONTROLSTATEF): HResult; stdcall; + function SetControlItemState(dwIDCtl: DWORD; dwIDItem: DWORD; dwState: CDCONTROLSTATEF): HResult; stdcall; + function GetSelectedControlItem(dwIDCtl: DWORD; out pdwIDItem: DWORD): HResult; stdcall; + function SetSelectedControlItem(dwIDCtl: DWORD; dwIDItem: DWORD): HResult; stdcall; + function StartVisualGroup(dwIDCtl: DWORD; pszLabel: LPCWSTR): HResult; stdcall; + function EndVisualGroup: HResult; stdcall; + function MakeProminent(dwIDCtl: DWORD): HResult; stdcall; + function SetControlItemText(dwIDCtl: DWORD; dwIDItem: DWORD; pszLabel: LPCWSTR): HResult; stdcall; + end; + + IFileDialogControlEvents = interface(IUnknown) + ['{36116642-D713-4b97-9B83-7484A9D00433}'] + function OnItemSelected(pfdc: IFileDialogCustomize; dwIDCtl: DWORD; dwIDItem: DWORD): HResult; stdcall; + function OnButtonClicked(pfdc: IFileDialogCustomize; dwIDCtl: DWORD): HResult; stdcall; + function OnCheckButtonToggled(pfdc: IFileDialogCustomize; dwIDCtl: DWORD; bChecked: BOOL): HResult; stdcall; + function OnControlActivating(pfdc: IFileDialogCustomize; dwIDCtl: DWORD): HResult; stdcall; + end; + + IShellExtInit = Interface(IUnknown) + [IID_IShellExtInit] + function Initialize(pidlfolder: LPCITEMIDLIST; pdtobj : IDataObject;hkeyProgID : HKEY):HResult; stdcall; + end; + +function SHGetMalloc(out ppmalloc: IMalloc):HResult;StdCall; external 'shell32' name 'SHGetMalloc'; +function SHGetDesktopFolder(out ppshf:IShellFolder):HResult;StdCall; external 'shell32' name 'SHGetDesktopFolder'; + +function SHOpenFolderAndSelectItems(pidlFolder:LPCITEMIDLIST;cidl:UINT;var apidl: LPCITEMIDLIST; dwflags: DWORD):HResult;StdCall; external 'shell32' name 'SHOpenFolderAndSelectItems'; +//function SHCreateShellItem( pidlParent:LPCITEMIDLIST; psfparent:IShellFolder; pidl: LPCITEMIDLIST pidl; out ppsi: IShellItem):HResult;StdCall; external 'shell32' name 'SHCreateShellItem'; +function SHGetSpecialFolderLocation( hwnd:HWND; csidl:longint;out ppidl: LPITEMIDLIST):HResult;StdCall; external 'shell32' name 'SHGetSpecialFolderLocation'; +procedure SHFlushSFCache;StdCall; external 'shell32' name 'SHFlushSFCache'; +function SHCloneSpecialIDList(HWND:hwnd; csidl:longint;fcreate:BOOL):LPITEMIDLIST; StdCall; external 'shell32' name 'SHCloneSpecialIDList'; +function SHGetSpecialFolderPathA(HWND:hwnd;pszpath: LPSTR; csidl:Longint;fcreate:bool):bool;StdCall; external 'shell32' name 'SHGetSpecialFolderPathA'; +function SHGetSpecialFolderPath(HWND:hwnd;pszpath: LPSTR; csidl:Longint;fcreate:bool):bool;StdCall; external 'shell32' name 'SHGetSpecialFolderPathA'; +function SHGetSpecialFolderPathW(HWND:hwnd;pszpath: LPWSTR; csidl:Longint;fcreate:bool):bool;StdCall; external 'shell32' name 'SHGetSpecialFolderPathW'; +function SHGetFolderPathA(HWND:hwnd;csidl:longint;htoken:THandle;dwflags:dword;pszpath:lpstr):HResult;StdCall; external 'shell32' name 'SHGetFolderPathA'; +function SHGetFolderPath(HWND:hwnd;csidl:longint;htoken:THandle;dwflags:dword;pszpath:lpstr):HResult;StdCall; external 'shell32' name 'SHGetFolderPathA'; +function SHGetFolderPathW(HWND:hwnd;csidl:longint;htoken:THandle;dwflags:dword;pszpath:lpWstr):HResult;StdCall; external 'shell32' name 'SHGetFolderPathW'; +function SHGetFolderPathAndSubDirA(HWND:hwnd;csidl:longint;htoken:THandle;dwflags:dword;pszsubdir:LPCStr;pszpath:lpstr):HResult;StdCall; external 'shell32' name 'SHGetFolderPathAndSubDirA'; +function SHGetFolderPathAndSubDir(HWND:hwnd;csidl:longint;htoken:THandle;dwflags:dword;pszsubdir:LPCStr;pszpath:lpstr):HResult;StdCall; external 'shell32' name 'SHGetFolderPathAndSubDirA'; +function SHGetFolderPathAndSubDirW(HWND:hwnd;csidl:longint;htoken:THandle;dwflags:dword;pszsubdir:LPCWStr;pszpath:lpWstr):HResult; external 'shell32' name 'SHGetFolderPathAndSubDirW'; +function SHFolderLocation(HWND:hwnd;csidl:longint;htoken:THandle;dwflags:dword;var ppidl:LPITEMIDLIST):HRESULT;StdCall; external 'shell32' name 'SHFolderLocation'; + + +Const External_Library = 'shell32'; + + function SHAlloc(cb:SIZE_T):pointer;StdCall;external External_library name 'SHAlloc'; + procedure SHFree(pv:pointer);StdCall;external External_library name 'SHFree'; + function SHGetIconOverlayIndexA(pszIconPath:lpcstr; iIconIndex:Longint):Longint;StdCall;external External_library name 'SHGetIconOverlayIndexA'; + function SHGetIconOverlayIndexW(pszIconPath:lpcwstr; iIconIndex:Longint):Longint;StdCall;external External_library name 'SHGetIconOverlayIndexW'; + function SHGetPathFromIDListA(pidl:LPCITEMIDLIST; pszPath:LPStr):BOOL;StdCall;external External_library name 'SHGetPathFromIDListA'; + function SHGetPathFromIDListW(pidl:LPCITEMIDLIST; pszPath:LPWStr):BOOL;StdCall;external External_library name 'SHGetPathFromIDListW'; + function SHCreateDirectory(hwnd:HWND; pszPath:lpcwstr):Longint;StdCall;external External_library name 'SHCreateDirectory'; + function SHCreateDirectoryExA(hwnd:HWND; pszPath:lpcstr; psa:LPSECURITY_ATTRIBUTES):Longint;StdCall;external External_library name 'SHCreateDirectoryExA'; + function SHCreateDirectoryExW(hwnd:HWND; pszPath:lpcwstr; psa:LPSECURITY_ATTRIBUTES):Longint;StdCall;external External_library name 'SHCreateDirectoryExW'; +{ + function SHOpenFolderAndSelectItems(pidlFolder:LPCITEMIDLIST; cidl:UINT; var apidl:LPCITEMIDLIST; dwFlags:DWord):HRESULT;StdCall;external External_library name 'SHOpenFolderAndSelectItems'; + function SHCreateShellItem(pidlParent:LPCITEMIDLIST; psfParent:IShellFolder; pidl:LPCITEMIDLIST;out ppsi:IShellItem):HRESULT;StdCall;external External_library name 'SHCreateShellItem'; + function SHGetSpecialFolderLocation(hwnd:HWND; csidl:Longint; var ppidl:LPITEMIDLIST):HRESULT;StdCall;external External_library name 'SHGetSpecialFolderLocation'; + procedure SHFlushSFCache;StdCall;external External_library name 'SHFlushSFCache'; + function SHCloneSpecialIDList(hwnd:HWND; csidl:Longint; fCreate:BOOL):LPITEMIDLIST;StdCall;external External_library name 'SHCloneSpecialIDList'; + function SHGetSpecialFolderPathA(hwnd:HWND; pszPath:LPStr; csidl:Longint; fCreate:BOOL):BOOL;StdCall;external External_library name 'SHGetSpecialFolderPathA'; + function SHGetSpecialFolderPathW(hwnd:HWND; pszPath:LPWStr; csidl:Longint; fCreate:BOOL):BOOL;StdCall;external External_library name 'SHGetSpecialFolderPathW'; + function SHGetFolderLocation(hwnd:HWND; csidl:Longint; hToken:THANDLE; dwFlags:DWord;var ppidl:LPITEMIDLIST):HRESULT;StdCall;external External_library name 'SHGetFolderLocation'; +} + function SHGetSetFolderCustomSettingsA(pfcs:LPSHFOLDERCUSTOMSETTINGSA; pszPath:lpcstr; dwReadWrite:DWord):HRESULT;StdCall;external External_library name 'SHGetSetFolderCustomSettingsA'; + function SHGetSetFolderCustomSettingsW(pfcs:LPSHFOLDERCUSTOMSETTINGSW; pszPath:lpcwstr; dwReadWrite:DWord):HRESULT;StdCall;external External_library name 'SHGetSetFolderCustomSettingsW'; + function SHBrowseForFolderA(lpbi:LPBROWSEINFOA):LPITEMIDLIST;StdCall;external External_library name 'SHBrowseForFolderA'; + function SHBrowseForFolderW(lpbi:LPBROWSEINFOW):LPITEMIDLIST;StdCall;external External_library name 'SHBrowseForFolderW'; + function SHLoadInProc(const rclsid:Tguid):HRESULT;StdCall;external External_library name 'SHLoadInProc'; + function SHEnableServiceObject(const rclsid:Tguid; fEnable:BOOL):HRESULT;StdCall;external External_library name 'SHEnableServiceObject'; +// function SHGetDesktopFolder(out ppshf:IShellFolder):HRESULT;StdCall;external External_library name 'SHGetDesktopFolder'; + procedure SHChangeNotify(wEventId:LONG; uFlags:UINT; dwItem1:POINTER; dwItem2:POINTER);StdCall;external External_library name 'SHChangeNotify'; + procedure SHAddToRecentDocs(uFlags:UINT; pv:POINTER);StdCall;external External_library name 'SHAddToRecentDocs'; + function SHHandleUpdateImage(pidlExtra:LPCITEMIDLIST):Longint;StdCall;external External_library name 'SHHandleUpdateImage'; + procedure SHUpdateImageA(pszHashItem:lpcstr; iIndex:Longint; uFlags:UINT; iImageIndex:Longint);StdCall;external External_library name 'SHUpdateImageA'; + procedure SHUpdateImageW(pszHashItem:lpcwstr; iIndex:Longint; uFlags:UINT; iImageIndex:Longint);StdCall;external External_library name 'SHUpdateImageW'; + function SHChangeNotifyRegister(hwnd:HWND; fSources:Longint; fEvents:LONG; wMsg:UINT; cEntries:Longint; + pshcne:PSHChangeNotifyEntry):ULONG;StdCall;external External_library name 'SHChangeNotifyRegister'; + function SHChangeNotifyDeregister(ulID:ulong):BOOL;StdCall;external External_library name 'SHChangeNotifyDeregister'; + function SHChangeNotification_Lock(hChangeNotification:THANDLE; dwProcessId:DWord; var pppidl:PLPITEMIDLIST; plEvent:PLONG):THANDLE;StdCall;external External_library name 'SHChangeNotification_Lock'; + function SHChangeNotification_Unlock(hLock:THANDLE):BOOL;StdCall;external External_library name 'SHChangeNotification_Unlock'; + function SHGetRealIDL(psf:IShellFolder; pidlSimple:LPCITEMIDLIST; var ppidlReal:LPITEMIDLIST):HRESULT;StdCall;external External_library name 'SHGetRealIDL'; + function SHGetInstanceExplorer(out ppunk:IUnknown):HRESULT;StdCall;external External_library name 'SHGetInstanceExplorer'; + function SHGetDataFromIDListA(psf:IShellFolder; pidl:LPCITEMIDLIST; nFormat:Longint; pv:pointer; cb:Longint):HRESULT;StdCall;external External_library name 'SHGetDataFromIDListA'; + function SHGetDataFromIDListW(psf:IShellFolder; pidl:LPCITEMIDLIST; nFormat:Longint; pv:pointer; cb:Longint):HRESULT;StdCall;external External_library name 'SHGetDataFromIDListW'; + function RestartDialog(hwnd:HWND; lpPrompt:lpcwstr; dwReturn:DWord):Longint;StdCall;external External_library name 'RestartDialog'; + function RestartDialogEx(hwnd:HWND; lpPrompt:lpcwstr; dwReturn:DWord; dwReasonCode:DWord):Longint;StdCall;external External_library name 'RestartDialogEx'; + function SHCoCreateInstance(pszCLSID:lpcwstr; pclsid:PCLSID; pUnkOuter:IUnknown; riid:TREFIID; ppv:Ppointer):HRESULT;StdCall;external External_library name 'SHCoCreateInstance'; +// function CallCPLEntry16(hinst:HINSTANCE; lpfnEntry:TFARPROC16; hwndCPL:HWND; msg:UINT; lParam1:lparam; lParam2:lparam):LRESULT;StdCall;external External_library name 'CallCPLEntry16'; + function SHCreateStdEnumFmtEtc(cfmt:UINT; afmt:array of TFORMATETC; var ppenumFormatEtc:IEnumFORMATETC):HRESULT;StdCall;external External_library name 'SHCreateStdEnumFmtEtc'; + function SHDoDragDrop(hwnd:HWND; pdata:IDataObject; pdsrc:IDropSource; dwEffect:DWord; pdwEffect:PDWORD):HRESULT;StdCall;external External_library name 'SHDoDragDrop'; + function DAD_SetDragImage(him:HIMAGELIST; pptOffset:PPOINT):BOOL;StdCall;external External_library name 'DAD_SetDragImage'; + function DAD_DragEnterEx(hwndTarget:HWND; ptStart:TPOINT):BOOL;StdCall;external External_library name 'DAD_DragEnterEx'; + function DAD_DragEnterEx2(hwndTarget:HWND; ptStart:TPOINT; pdtObject:IDataObject):BOOL;StdCall;external External_library name 'DAD_DragEnterEx2'; + function DAD_ShowDragImage(fShow:BOOL):BOOL;StdCall;external External_library name 'DAD_ShowDragImage'; + function DAD_DragMove(pt:TPOINT):BOOL;StdCall;external External_library name 'DAD_DragMove'; + function DAD_DragLeave:BOOL;StdCall;external External_library name 'DAD_DragLeave'; + function DAD_AutoScroll(hwnd:HWND; pad:PAUTO_SCROLL_DATA; pptNow:PPOINT):BOOL;StdCall;external External_library name 'DAD_AutoScroll'; + function ReadCabinetState(lpState:LPCABINETSTATE; iSize:Longint):BOOL;StdCall;external External_library name 'ReadCabinetState'; + function WriteCabinetState(lpState:LPCABINETSTATE):BOOL;StdCall;external External_library name 'WriteCabinetState'; + function PathMakeUniqueName(pszUniqueName:LPWStr; cchMax:UINT; pszTemplate:lpcwstr; pszLongPlate:lpcwstr; pszDir:lpcwstr):BOOL;StdCall;external External_library name 'PathMakeUniqueName'; + procedure PathQualify(psz:LPWStr);StdCall;external External_library name 'PathQualify'; + function PathIsExe(pszPath:lpcwstr):BOOL;StdCall;external External_library name 'PathIsExe'; + function PathIsSlowA(pszFile:lpcstr; dwAttr:DWord):BOOL;StdCall;external External_library name 'PathIsSlowA'; + function PathIsSlowW(pszFile:lpcwstr; dwAttr:DWord):BOOL;StdCall;external External_library name 'PathIsSlowW'; + function PathCleanupSpec(pszDir:lpcwstr; pszSpec:LPWStr):Longint;StdCall;external External_library name 'PathCleanupSpec'; + function PathResolve(pszPath:LPWStr; dirs:array of lpcwstr; fFlags:UINT):Longint;StdCall;external External_library name 'PathResolve'; + function GetFileNameFromBrowse(hwnd:HWND; pszFilePath:LPWStr; cbFilePath:UINT; pszWorkingDir:lpcwstr; pszDefExt:lpcwstr; + pszFilters:lpcwstr; pszTitle:lpcwstr):BOOL;StdCall;external External_library name 'GetFileNameFromBrowse'; + function DriveType(iDrive:Longint):Longint;StdCall;external External_library name 'DriveType'; + function RealDriveType(iDrive:Longint; fOKToHitNet:BOOL):Longint;StdCall;external External_library name 'RealDriveType'; + function IsNetDrive(iDrive:Longint):Longint;StdCall;external External_library name 'IsNetDrive'; + function Shell_MergeMenus(hmDst:HMENU; hmSrc:HMENU; uInsert:UINT; uIDAdjust:UINT; uIDAdjustMax:UINT; + uFlags:ULONG):UINT;StdCall;external External_library name 'Shell_MergeMenus'; + function SHObjectProperties(hwnd:HWND; dwType:DWord; lpObject:lpcwstr; lpPage:lpcwstr):BOOL;StdCall;external External_library name 'SHObjectProperties'; + function SHFormatDrive(hwnd:HWND; drive:UINT; fmtID:UINT; options:UINT):DWord;StdCall;external External_library name 'SHFormatDrive'; + function ILClone(pidl:LPCITEMIDLIST):LPITEMIDLIST;StdCall;external External_library name 'ILClone'; + function ILGetNext(pidl:LPCITEMIDLIST):LPITEMIDLIST;StdCall;external External_library name 'ILGetNext'; + function ILGetSize(pidl:LPCITEMIDLIST):UINT;StdCall;external External_library name 'ILGetSize'; + function ILFindLastID(pidl:LPCITEMIDLIST):LPITEMIDLIST;StdCall;external External_library name 'ILFindLastID'; + function ILRemoveLastID(pidl:LPITEMIDLIST):BOOL;StdCall;external External_library name 'ILRemoveLastID'; + function ILAppendID(pidl:LPITEMIDLIST; pmkid:LPCSHITEMID; fAppend:BOOL):LPITEMIDLIST;StdCall;external External_library name 'ILAppendID'; + procedure ILFree(pidl:LPITEMIDLIST);StdCall;external External_library name 'ILFree'; + function ILCloneFirst(pidl:LPCITEMIDLIST):LPITEMIDLIST;StdCall;external External_library name 'ILCloneFirst'; + function ILIsEqual(pidl1:LPCITEMIDLIST; pidl2:LPCITEMIDLIST):BOOL;StdCall;external External_library name 'ILIsEqual'; + function ILIsParent(pidl1:LPCITEMIDLIST; pidl2:LPCITEMIDLIST; fImmediate:BOOL):BOOL;StdCall;external External_library name 'ILIsParent'; + function ILFindChild(pidlParent:LPCITEMIDLIST; pidlChild:LPCITEMIDLIST):LPITEMIDLIST;StdCall;external External_library name 'ILFindChild'; + function ILCombine(pidl1:LPCITEMIDLIST; pidl2:LPCITEMIDLIST):LPITEMIDLIST;StdCall;external External_library name 'ILCombine'; + function ILLoadFromStream(pstm:IStream; var pidl:LPITEMIDLIST):HRESULT;StdCall;external External_library name 'ILLoadFromStream'; + function ILSaveToStream(pstm:IStream; pidl:LPCITEMIDLIST):HRESULT;StdCall;external External_library name 'ILSaveToStream'; + function ILCreateFromPathA(pszPath:lpcstr):LPITEMIDLIST;StdCall;external External_library name 'ILCreateFromPathA'; + function ILCreateFromPathW(pszPath:lpcwstr):LPITEMIDLIST;StdCall;external External_library name 'ILCreateFromPathW'; + function ILCreateFromPath(pszPath:LPCTSTR):LPITEMIDLIST;StdCall;external External_library name 'ILCreateFromPath'; + function SHILCreateFromPath(szPath:lpcwstr;var ppidl:LPITEMIDLIST; rgfInOut:PDWORD):HRESULT;StdCall;external External_library name 'SHILCreateFromPath'; + function OpenRegStream(hkey:HKEY; pszSubkey:lpcwstr; pszValue:lpcwstr; grfMode:DWord):IStream;StdCall;external External_library name 'OpenRegStream'; + function SHFindFiles(pidlFolder:LPCITEMIDLIST; pidlSaveFile:LPCITEMIDLIST):BOOL;StdCall;external External_library name 'SHFindFiles'; + procedure PathGetShortPath(pszLongPath:LPWStr);StdCall;external External_library name 'PathGetShortPath'; + function PathYetAnotherMakeUniqueName(pszUniqueName:LPWStr; pszPath:lpcwstr; pszShort:lpcwstr; pszFileSpec:lpcwstr):BOOL;StdCall;external External_library name 'PathYetAnotherMakeUniqueName'; + function Win32DeleteFile(pszPath:lpcwstr):BOOL;StdCall;external External_library name 'Win32DeleteFile'; + function PathProcessCommand(lpSrc:lpcwstr; lpDest:LPWStr; iMax:Longint; dwFlags:DWord):LONG;StdCall;external External_library name 'PathProcessCommand'; + function SHRestricted(rest:TRESTRICTIONS):DWord;StdCall;external External_library name 'SHRestricted'; + function SignalFileOpen(pidl:LPCITEMIDLIST):BOOL;StdCall;external External_library name 'SignalFileOpen'; + function SHSimpleIDListFromPath(pszPath:lpcwstr):LPITEMIDLIST;StdCall;external External_library name 'SHSimpleIDListFromPath'; + function SHLoadOLE(lParam:lparam):HRESULT;StdCall;external External_library name 'SHLoadOLE'; + function SHStartNetConnectionDialogA(hwnd:HWND; pszRemoteName:lpcstr; dwType:DWord):HRESULT;StdCall;external External_library name 'SHStartNetConnectionDialogA'; + function SHStartNetConnectionDialogW(hwnd:HWND; pszRemoteName:lpcwstr; dwType:DWord):HRESULT;StdCall;external External_library name 'SHStartNetConnectionDialogW'; + function SHDefExtractIconA(pszIconFile:lpcstr; iIndex:Longint; uFlags:UINT; phiconLarge:PHICON; phiconSmall:PHICON; + nIconSize:UINT):HRESULT;StdCall;external External_library name 'SHDefExtractIconA'; + function SHDefExtractIconW(pszIconFile:lpcwstr; iIndex:Longint; uFlags:UINT; phiconLarge:PHICON; phiconSmall:PHICON; + nIconSize:UINT):HRESULT;StdCall;external External_library name 'SHDefExtractIconW'; + function Shell_GetImageLists(var phiml:HIMAGELIST; var phimlSmall:HIMAGELIST):BOOL;StdCall;external External_library name 'Shell_GetImageLists'; + function Shell_GetCachedImageIndex(pszIconPath:lpcwstr; iIconIndex:Longint; uIconFlags:UINT):Longint;StdCall;external External_library name 'Shell_GetCachedImageIndex'; + function SHValidateUNC(hwndOwner:HWND; pszFile:LPWStr; fConnect:UINT):BOOL;StdCall;external External_library name 'SHValidateUNC'; + function PifMgr_OpenProperties(pszApp:lpcwstr; pszPIF:lpcwstr; hInf:UINT; flOpt:UINT):THANDLE;StdCall;external External_library name 'PifMgr_OpenProperties'; + function PifMgr_GetProperties(hProps:THANDLE; pszGroup:lpcstr; lpProps:pointer; cbProps:Longint; flOpt:UINT):Longint;StdCall;external External_library name 'PifMgr_GetProperties'; + function PifMgr_SetProperties(hProps:THANDLE; pszGroup:lpcstr; lpProps:pointer; cbProps:Longint; flOpt:UINT):Longint;StdCall;external External_library name 'PifMgr_SetProperties'; + function PifMgr_CloseProperties(hProps:THANDLE; flOpt:UINT):THANDLE;StdCall;external External_library name 'PifMgr_CloseProperties'; + procedure SHSetInstanceExplorer(punk:IUnknown);StdCall;external External_library name 'SHSetInstanceExplorer'; + function IsUserAnAdmin:BOOL;StdCall;external External_library name 'IsUserAnAdmin'; + function SHShellFolderView_Message(hwndMain:HWND; uMsg:UINT; lParam:lparam):lresult;StdCall;external External_library name 'SHShellFolderView_Message'; + function SHCreateShellFolderView(pcsfv:PSFV_CREATE; out ppsv:IShellView):HRESULT;StdCall;external External_library name 'SHCreateShellFolderView'; + function CDefFolderMenu_Create2(pidlFolder:LPCITEMIDLIST; hwnd:HWND; cidl:UINT;var apidl:LPCITEMIDLIST; psf:IShellFolder; + lpfn:LPFNDFMCALLBACK; nKeys:UINT; ahkeyClsKeys:PHKEY; out ppcm:IContextMenu):HRESULT;StdCall;external External_library name 'CDefFolderMenu_Create2'; + function SHOpenPropSheetA(pszCaption:lpcstr; ahkeys:array of HKEY; cikeys:UINT; pclsidDefault:PCLSID; pdtobj:IDataObject; + psb:IShellBrowser; pStartPage:lpcstr):BOOL;StdCall;external External_library name 'SHOpenPropSheetA'; + function SHOpenPropSheetW(pszCaption:lpcwstr; ahkeys:array of HKEY; cikeys:UINT; pclsidDefault:PCLSID; pdtobj:IDataObject; + psb:IShellBrowser; pStartPage:lpcwstr):BOOL;StdCall;external External_library name 'SHOpenPropSheetW'; + function SHFind_InitMenuPopup(hmenu:HMENU; hwndOwner:HWND; idCmdFirst:UINT; idCmdLast:UINT):IContextMenu;StdCall;external External_library name 'SHFind_InitMenuPopup'; + function SHCreateShellFolderViewEx(pcsfv:LPCSFV; out ppsv:IShellView):HRESULT;StdCall;external External_library name 'SHCreateShellFolderViewEx'; + procedure SHGetSetSettings(lpss:LPSHELLSTATE; dwMask:DWord; bSet:BOOL);StdCall;external External_library name 'SHGetSetSettings'; + procedure SHGetSettings(lpsfs:LPSHELLFLAGSTATE; dwMask:DWord);StdCall;external External_library name 'SHGetSettings'; + function SHBindToParent(pidl:LPCITEMIDLIST; riid:TREFIID; ppv:Ppointer; var ppidlLast:LPCITEMIDLIST):HRESULT;StdCall;external External_library name 'SHBindToParent'; + function SHParseDisplayName(pszName:PCWSTR; pbc:IBindCtx; var ppidl:LPITEMIDLIST; sfgaoIn:TSFGAOF; psfgaoOut:PSFGAOF):HRESULT;StdCall;external External_library name 'SHParseDisplayName'; + function SHPathPrepareForWriteA(hwnd:HWND; punkEnableModless:IUnknown; pszPath:lpcstr; dwFlags:DWord):HRESULT;StdCall;external External_library name 'SHPathPrepareForWriteA'; + function SHPathPrepareForWriteW(hwnd:HWND; punkEnableModless:IUnknown; pszPath:lpcwstr; dwFlags:DWord):HRESULT;StdCall;external External_library name 'SHPathPrepareForWriteW'; +{ function SHPropStgCreate(psstg:IPropertySetStorage; fmtid:TREFFMTID; pclsid:PCLSID; grfFlags:DWord; grfMode:DWord; + dwDisposition:DWord; out ppstg:IPropertyStorage; puCodePage:PUINT):HRESULT;StdCall;external External_library name 'SHPropStgCreate'; + function SHPropStgReadMultiple(pps:IPropertyStorage; uCodePage:UINT; cpspec:ULONG; rgpspec:array of TPROPSPEC; rgvar:array of TPROPVARIANT):HRESULT;StdCall;external External_library name 'SHPropStgReadMultiple'; + function SHPropStgWriteMultiple(pps:IPropertyStorage; puCodePage:PUINT; cpspec:ULONG; rgpspec:array of TPROPSPEC; rgvar:array of TPROPVARIANT; + propidNameFirst:TPROPID):HRESULT;StdCall;external External_library name 'SHPropStgWriteMultiple'; +} + function SHCreateFileExtractIconA(pszFile:lpcstr; dwFileAttributes:DWord; riid:TREFIID; ppv:Ppointer):HRESULT;StdCall;external External_library name 'SHCreateFileExtractIconA'; + function SHCreateFileExtractIconW(pszFile:lpcwstr; dwFileAttributes:DWord; riid:TREFIID; ppv:Ppointer):HRESULT;StdCall;external External_library name 'SHCreateFileExtractIconW'; + function SHLimitInputEdit(hwndEdit:HWND; psf:IShellFolder):HRESULT;StdCall;external External_library name 'SHLimitInputEdit'; + function SHMultiFileProperties(pdtobj:IDataObject; dwFlags:DWord):HRESULT;StdCall;external External_library name 'SHMultiFileProperties'; +// function SHMapIDListToImageListIndexAsync(pts:IShellTaskScheduler; psf:IShellFolder; pidl:LPCITEMIDLIST; flags:UINT; pfn:TPFNASYNCICONTASKBALLBACK; +// pvData:pointer; pvHint:pointer; piIndex:plongint; piIndexSel:plongint):HRESULT;StdCall;external External_library name 'SHMapIDListToImageListIndexAsync'; + function SHMapPIDLToSystemImageListIndex(pshf:IShellFolder; pidl:LPCITEMIDLIST; piIndexSel:plongint):Longint;StdCall;external External_library name 'SHMapPIDLToSystemImageListIndex'; + +implementation + + +end. |