Browse Source

--- Merging r16037 into '.':
U packages/paszlib/src/zipper.pp
--- Merging r16041 into '.':
U packages/winunits-base/Makefile.fpc
A packages/winunits-base/src/nb30.pp
U packages/winunits-base/src/buildwinutilsbase.pp
D packages/winunits-base/src/Nb30.pp
U packages/winunits-base/Makefile
--- Merging r16337 into '.':
U packages/winunits-base/src/shlobj.pp
--- Merging r16338 into '.':
U packages/winunits-base/src/commctrl.pp
G packages/winunits-base/src/shlobj.pp
--- Merging r16353 into '.':
G packages/winunits-base/src/shlobj.pp
--- Merging r16357 into '.':
G packages/winunits-base/src/shlobj.pp

# revisions: 16037,16041,16337,16338,16353,16357
------------------------------------------------------------------------
r16037 | joost | 2010-09-23 21:07:35 +0200 (Thu, 23 Sep 2010) | 1 line
Changed paths:
M /trunk/packages/paszlib/src/zipper.pp

* Override virtual constructor instead of adding a static one so that it is actually called. Fixes problems on non-Windows
------------------------------------------------------------------------
------------------------------------------------------------------------
r16041 | marco | 2010-09-25 14:57:33 +0200 (Sat, 25 Sep 2010) | 2 lines
Changed paths:
M /trunk/packages/winunits-base/Makefile
M /trunk/packages/winunits-base/Makefile.fpc
D /trunk/packages/winunits-base/src/Nb30.pp
M /trunk/packages/winunits-base/src/buildwinutilsbase.pp
A /trunk/packages/winunits-base/src/nb30.pp (from /trunk/packages/winunits-base/src/Nb30.pp:16040)

* renamed nb30 header to lowercase and added makefiles.

------------------------------------------------------------------------
------------------------------------------------------------------------
r16337 | marco | 2010-11-13 19:02:53 +0100 (Sat, 13 Nov 2010) | 1 line
Changed paths:
M /trunk/packages/winunits-base/src/shlobj.pp

* Copied TaskDialog headers from Lazarus' win32extra at Paul's request.
------------------------------------------------------------------------
------------------------------------------------------------------------
r16338 | marco | 2010-11-13 19:32:11 +0100 (Sat, 13 Nov 2010) | 1 line
Changed paths:
M /trunk/packages/winunits-base/src/commctrl.pp
M /trunk/packages/winunits-base/src/shlobj.pp

* moved taskdialog to commctrl
------------------------------------------------------------------------
------------------------------------------------------------------------
r16353 | marco | 2010-11-17 14:07:43 +0100 (Wed, 17 Nov 2010) | 2 lines
Changed paths:
M /trunk/packages/winunits-base/src/shlobj.pp

* patch from Paul, fixes 17958, newer Vista/W7 interfaces for dialogs.

------------------------------------------------------------------------
------------------------------------------------------------------------
r16357 | paul | 2010-11-18 02:47:12 +0100 (Thu, 18 Nov 2010) | 1 line
Changed paths:
M /trunk/packages/winunits-base/src/shlobj.pp

shlobj: add more SHARD_ constants
------------------------------------------------------------------------

git-svn-id: branches/fixes_2_4@16378 -

marco 14 years ago
parent
commit
e28efffa82

+ 1 - 1
.gitattributes

@@ -5183,7 +5183,6 @@ packages/winceunits/src/ws2bth.pp svneol=native#text/plain
 packages/winunits-base/Makefile svneol=native#text/plain
 packages/winunits-base/Makefile svneol=native#text/plain
 packages/winunits-base/Makefile.fpc svneol=native#text/plain
 packages/winunits-base/Makefile.fpc svneol=native#text/plain
 packages/winunits-base/fpmake.pp svneol=native#text/plain
 packages/winunits-base/fpmake.pp svneol=native#text/plain
-packages/winunits-base/src/Nb30.pp svneol=native#text/plain
 packages/winunits-base/src/activex.pp svneol=native#text/plain
 packages/winunits-base/src/activex.pp svneol=native#text/plain
 packages/winunits-base/src/buildwinutilsbase.pp svneol=native#text/plain
 packages/winunits-base/src/buildwinutilsbase.pp svneol=native#text/plain
 packages/winunits-base/src/comconst.pp svneol=native#text/plain
 packages/winunits-base/src/comconst.pp svneol=native#text/plain
@@ -5199,6 +5198,7 @@ packages/winunits-base/src/imm.pas svneol=native#text/plain
 packages/winunits-base/src/imm_dyn.pas svneol=native#text/plain
 packages/winunits-base/src/imm_dyn.pas svneol=native#text/plain
 packages/winunits-base/src/mmsystem.pp svneol=native#text/plain
 packages/winunits-base/src/mmsystem.pp svneol=native#text/plain
 packages/winunits-base/src/multimon.pp svneol=native#text/plain
 packages/winunits-base/src/multimon.pp svneol=native#text/plain
+packages/winunits-base/src/nb30.pp svneol=native#text/plain
 packages/winunits-base/src/ole2.pp svneol=native#text/plain
 packages/winunits-base/src/ole2.pp svneol=native#text/plain
 packages/winunits-base/src/oleserver.pp svneol=native#text/plain
 packages/winunits-base/src/oleserver.pp svneol=native#text/plain
 packages/winunits-base/src/richedit.pp svneol=native#text/plain
 packages/winunits-base/src/richedit.pp svneol=native#text/plain

+ 4 - 2
packages/paszlib/src/zipper.pp

@@ -265,7 +265,7 @@ Type
   Protected
   Protected
     Property HdrPos : Longint Read FHeaderPos Write FheaderPos;
     Property HdrPos : Longint Read FHeaderPos Write FheaderPos;
   Public
   Public
-    constructor Create;
+    constructor Create(ACollection: TCollection); override;
     function IsDirectory: Boolean;
     function IsDirectory: Boolean;
     function IsLink: Boolean;
     function IsLink: Boolean;
     Procedure Assign(Source : TPersistent); override;
     Procedure Assign(Source : TPersistent); override;
@@ -1974,13 +1974,15 @@ begin
     Result:=FDiskFileName;
     Result:=FDiskFileName;
 end;
 end;
 
 
-constructor TZipFileEntry.Create;
+constructor TZipFileEntry.Create(ACollection: TCollection);
+
 begin
 begin
 {$IFDEF UNIX}
 {$IFDEF UNIX}
   FOS := OS_UNIX;
   FOS := OS_UNIX;
 {$ELSE}
 {$ELSE}
   FOS := OS_FAT;
   FOS := OS_FAT;
 {$ENDIF}
 {$ENDIF}
+  inherited create(ACollection);
 end;
 end;
 
 
 function TZipFileEntry.IsDirectory: Boolean;
 function TZipFileEntry.IsDirectory: Boolean;

+ 61 - 61
packages/winunits-base/Makefile

@@ -450,187 +450,187 @@ ifeq ($(FULL_TARGET),mipsel-linux)
 override TARGET_UNITS+=buildwinutilsbase
 override TARGET_UNITS+=buildwinutilsbase
 endif
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-haiku)
 ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-emx)
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-nativent)
 ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
 ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),arm-darwin)
 ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),arm-wince)
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),arm-gba)
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),arm-nds)
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),avr-embedded)
 ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
 ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
 ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
 ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 endif
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_RSTS+=jwawintype comconst
 override TARGET_RSTS+=jwawintype comconst

+ 1 - 1
packages/winunits-base/Makefile.fpc

@@ -12,7 +12,7 @@ packages=fcl-registry fcl-base
 [target]
 [target]
 units=buildwinutilsbase
 units=buildwinutilsbase
 implicitunits=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver \
 implicitunits=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver \
-	shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn
+	shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn nb30
 
 
 examples=examples
 examples=examples
 
 

+ 1 - 1
packages/winunits-base/src/buildwinutilsbase.pp

@@ -24,7 +24,7 @@ uses
     flatsb, winver, mmsystem, comconst, commctrl, comobj, commdlg,
     flatsb, winver, mmsystem, comconst, commctrl, comobj, commdlg,
     ole2, activex, shellapi, shlobj, oleserver,  shfolder, richedit,
     ole2, activex, shellapi, shlobj, oleserver,  shfolder, richedit,
     imagehlp, wininet, uxtheme, dwmapi, multimon, htmlhelp, winutils,
     imagehlp, wininet, uxtheme, dwmapi, multimon, htmlhelp, winutils,
-    comserv, winspool, imm, imm_dyn;
+    comserv, winspool, imm, imm_dyn, nb30;
 
 
 implementation
 implementation
 
 

+ 195 - 0
packages/winunits-base/src/commctrl.pp

@@ -9922,6 +9922,152 @@ Function LoadIconWithScaleDown( hinst:HINST; pszName:LPCWStr;cx:cint;cy:cint;var
 function DrawShadowText(hdc:HDC;pszText:LPCWSTR;cch:UINT;prc:PRECT;dwFlags:DWORD;crText:COLORREF;crShadow:COLORREF;ixOffset:cint;iyOffset:cint):cint; stdcall; external commctrldll name 'DrawShadowText';
 function DrawShadowText(hdc:HDC;pszText:LPCWSTR;cch:UINT;prc:PRECT;dwFlags:DWORD;crText:COLORREF;crShadow:COLORREF;ixOffset:cint;iyOffset:cint):cint; stdcall; external commctrldll name 'DrawShadowText';
 {$ENDIF}
 {$ENDIF}
 
 
+// ===================== Task Dialog =========================
+
+Type
+  PFTASKDIALOGCALLBACK = function(hwnd: HWND; msg: UINT; wParam: WPARAM; lParam: LPARAM; lpRefData: LONG_PTR): HRESULT; stdcall;
+
+  // _TASKDIALOG_FLAGS enum
+const
+  TDF_ENABLE_HYPERLINKS               = $0001;
+  TDF_USE_HICON_MAIN                  = $0002;
+  TDF_USE_HICON_FOOTER                = $0004;
+  TDF_ALLOW_DIALOG_CANCELLATION       = $0008;
+  TDF_USE_COMMAND_LINKS               = $0010;
+  TDF_USE_COMMAND_LINKS_NO_ICON       = $0020;
+  TDF_EXPAND_FOOTER_AREA              = $0040;
+  TDF_EXPANDED_BY_DEFAULT             = $0080;
+  TDF_VERIFICATION_FLAG_CHECKED       = $0100;
+  TDF_SHOW_PROGRESS_BAR               = $0200;
+  TDF_SHOW_MARQUEE_PROGRESS_BAR       = $0400;
+  TDF_CALLBACK_TIMER                  = $0800;
+  TDF_POSITION_RELATIVE_TO_WINDOW     = $1000;
+  TDF_RTL_LAYOUT                      = $2000;
+  TDF_NO_DEFAULT_RADIO_BUTTON         = $4000;
+  TDF_CAN_BE_MINIMIZED                = $8000;
+
+type
+  TASKDIALOG_FLAGS = Integer;                         // Note: _TASKDIALOG_FLAGS is an int
+
+  // _TASKDIALOG_MESSAGES enum
+const
+  TDM_NAVIGATE_PAGE                   = WM_USER+101;
+  TDM_CLICK_BUTTON                    = WM_USER+102; // wParam = Button ID
+  TDM_SET_MARQUEE_PROGRESS_BAR        = WM_USER+103; // wParam = 0 (nonMarque) wParam != 0 (Marquee)
+  TDM_SET_PROGRESS_BAR_STATE          = WM_USER+104; // wParam = new progress state
+  TDM_SET_PROGRESS_BAR_RANGE          = WM_USER+105; // lParam = MAKELPARAM(nMinRange, nMaxRange)
+  TDM_SET_PROGRESS_BAR_POS            = WM_USER+106; // wParam = new position
+  TDM_SET_PROGRESS_BAR_MARQUEE        = WM_USER+107; // wParam = 0 (stop marquee), wParam != 0 (start marquee), lparam = speed (milliseconds between repaints)
+  TDM_SET_ELEMENT_TEXT                = WM_USER+108; // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR)
+  TDM_CLICK_RADIO_BUTTON              = WM_USER+110; // wParam = Radio Button ID
+  TDM_ENABLE_BUTTON                   = WM_USER+111; // lParam = 0 (disable), lParam != 0 (enable), wParam = Button ID
+  TDM_ENABLE_RADIO_BUTTON             = WM_USER+112; // lParam = 0 (disable), lParam != 0 (enable), wParam = Radio Button ID
+  TDM_CLICK_VERIFICATION              = WM_USER+113; // wParam = 0 (unchecked), 1 (checked), lParam = 1 (set key focus)
+  TDM_UPDATE_ELEMENT_TEXT             = WM_USER+114; // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR)
+  TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = WM_USER+115; // wParam = Button ID, lParam = 0 (elevation not required), lParam != 0 (elevation required)
+  TDM_UPDATE_ICON                     = WM_USER+116; // wParam = icon element (TASKDIALOG_ICON_ELEMENTS), lParam = new icon (hIcon if TDF_USE_HICON_* was set, PCWSTR otherwise)
+
+  // _TASKDIALOG_NOTIFICATIONS enum
+const
+  TDN_CREATED                         = 0;
+  TDN_NAVIGATED                       = 1;
+  TDN_BUTTON_CLICKED                  = 2;            // wParam = Button ID
+  TDN_HYPERLINK_CLICKED               = 3;            // lParam = (LPCWSTR)pszHREF
+  TDN_TIMER                           = 4;            // wParam = Milliseconds since dialog created or timer reset
+  TDN_DESTROYED                       = 5;
+  TDN_RADIO_BUTTON_CLICKED            = 6;            // wParam = Radio Button ID
+  TDN_DIALOG_CONSTRUCTED              = 7;
+  TDN_VERIFICATION_CLICKED            = 8;             // wParam = 1 if checkbox checked, 0 if not, lParam is unused and always 0
+  TDN_HELP                            = 9;
+  TDN_EXPANDO_BUTTON_CLICKED          = 10;           // wParam = 0 (dialog is now collapsed), wParam != 0 (dialog is now expanded)
+
+type
+  _TASKDIALOG_BUTTON = packed record
+      nButtonID: Integer;
+      pszButtonText: PCWSTR;
+  end;
+  TASKDIALOG_BUTTON = _TASKDIALOG_BUTTON;
+  TTASKDIALOG_BUTTON = TASKDIALOG_BUTTON;
+  PTASKDIALOG_BUTTON = ^TASKDIALOG_BUTTON;
+
+  // _TASKDIALOG_ELEMENTS enum
+const
+  TDE_CONTENT              = 0;
+  TDE_EXPANDED_INFORMATION = 1;
+  TDE_FOOTER               = 2;
+  TDE_MAIN_INSTRUCTION     = 3;
+
+  // _TASKDIALOG_ICON_ELEMENTS enum
+  TDIE_ICON_MAIN   = 0;
+  TDIE_ICON_FOOTER = 1;
+
+  TD_WARNING_ICON         = MAKEINTRESOURCEW(Word(-1));
+  TD_ERROR_ICON           = MAKEINTRESOURCEW(Word(-2));
+  TD_INFORMATION_ICON     = MAKEINTRESOURCEW(Word(-3));
+  TD_SHIELD_ICON          = MAKEINTRESOURCEW(Word(-4));
+  TD_SHIELD_GRADIENT_ICON = MAKEINTRESOURCEW(Word(-5));
+  TD_SHIELD_WARNING_ICON  = MAKEINTRESOURCEW(Word(-6));
+  TD_SHIELD_ERROR_ICON    = MAKEINTRESOURCEW(Word(-7));
+  TD_SHIELD_OK_ICON       = MAKEINTRESOURCEW(Word(-8));
+  TD_SHIELD_GRAY_ICON     = MAKEINTRESOURCEW(Word(-9));
+
+  // _TASKDIALOG_COMMON_BUTTON_FLAGS enum
+  TDCBF_OK_BUTTON            = $0001; // selected control return value IDOK
+  TDCBF_YES_BUTTON           = $0002; // selected control return value IDYES
+  TDCBF_NO_BUTTON            = $0004; // selected control return value IDNO
+  TDCBF_CANCEL_BUTTON        = $0008; // selected control return value IDCANCEL
+  TDCBF_RETRY_BUTTON         = $0010; // selected control return value IDRETRY
+  TDCBF_CLOSE_BUTTON         = $0020; // selected control return value IDCLOSE
+
+type
+  TASKDIALOG_COMMON_BUTTON_FLAGS = Integer;           // Note: _TASKDIALOG_COMMON_BUTTON_FLAGS is an int
+
+  _TASKDIALOGCONFIG = packed record
+    cbSize: UINT;
+    hwndParent: HWND;
+    hInstance: HINST;                                 // used for MAKEINTRESOURCE() strings
+    dwFlags: TASKDIALOG_FLAGS;                        // TASKDIALOG_FLAGS (TDF_XXX) flags
+    dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS;  // TASKDIALOG_COMMON_BUTTON (TDCBF_XXX) flags
+    pszWindowTitle: PCWSTR;                           // string or MAKEINTRESOURCE()
+    case PtrInt of
+      0: (hMainIcon: HICON);
+      1: (
+        pszMainIcon: PCWSTR;
+        pszMainInstruction: PCWSTR;
+        pszContent: PCWSTR;
+        cButtons: UINT;
+        pButtons: PTASKDIALOG_BUTTON;
+        nDefaultButton: Integer;
+        cRadioButtons: UINT;
+        pRadioButtons: PTASKDIALOG_BUTTON;
+        nDefaultRadioButton: Integer;
+        pszVerificationText: PCWSTR;
+        pszExpandedInformation: PCWSTR;
+        pszExpandedControlText: PCWSTR;
+        pszCollapsedControlText: PCWSTR;
+        case PtrInt of
+          0: (hFooterIcon: HICON);
+          1: (
+            pszFooterIcon: PCWSTR;
+            pszFooter: PCWSTR;
+            pfCallback: PFTASKDIALOGCALLBACK;
+            lpCallbackData: LONG_PTR;
+            cxWidth: UINT;                                // width of the Task Dialog's client area in DLU's. If 0, Task Dialog will calculate the ideal width.
+          );
+      );
+  end;
+  TASKDIALOGCONFIG = _TASKDIALOGCONFIG;
+  PTASKDIALOGCONFIG = ^TASKDIALOGCONFIG;
+  TTASKDIALOGCONFIG = TASKDIALOGCONFIG;
+
+var
+  TaskDialogIndirect: function(const pTaskConfig: PTASKDIALOGCONFIG; pnButton: PInteger; pnRadioButton: PInteger; pfVerificationFlagChecked: PBOOL): HRESULT; stdcall;
+  TaskDialog: function(hwndParent: HWND; hInstance: HINST; pszWindowTitle: PCWSTR; pszMainInstruction: PCWSTR; pszContent: PCWSTR;
+      dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS; pszIcon: PCWSTR; pnButton: PInteger): HRESULT; stdcall;
+
+
+// ==================== End TaskDialog =======================
+
 
 
 IMPLEMENTATION
 IMPLEMENTATION
 
 
@@ -13552,4 +13698,53 @@ begin
  Result:=HFONT(SendMessage(hdp, DTM_GETMCFONT, 0, 0));
  Result:=HFONT(SendMessage(hdp, DTM_GETMCFONT, 0, 0));
 end;
 end;
 
 
+const
+  comctl32lib = 'comctl32.dll';
+
+var
+  comctl32handle: THandle = 0;
+
+function _TaskDialogIndirect(const pTaskConfig: PTASKDIALOGCONFIG; pnButton: PInteger; pnRadioButton: PInteger; pfVerificationFlagChecked: PBOOL): HRESULT; stdcall;
+begin
+  Result := E_NOTIMPL;
+end;
+
+function _TaskDialog(hwndParent: HWND; hInstance: HINST; pszWindowTitle: PCWSTR; pszMainInstruction: PCWSTR; pszContent: PCWSTR;
+    dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS; pszIcon: PCWSTR; pnButton: PInteger): HRESULT; stdcall;
+begin
+  Result := E_NOTIMPL;
+end;
+
+procedure Initialize;
+var
+  p: Pointer;
+begin
+  // Defaults
+  Pointer(TaskDialogIndirect) := @_TaskDialogIndirect;
+  Pointer(TaskDialog) := @_TaskDialog;
+
+  comctl32handle := LoadLibrary(comctl32lib);
+  if comctl32handle <> 0 then
+  begin
+    p := GetProcAddress(comctl32handle, 'TaskDialogIndirect');
+    if p <> nil
+    then Pointer(TaskDialogIndirect) := p;
+
+    p := GetProcAddress(comctl32handle, 'TaskDialog');
+    if p <> nil
+    then Pointer(TaskDialog) := p;
+  end;
+end;
+
+procedure Finalize;
+begin
+  if comctl32handle <> 0 then
+    FreeLibrary(comctl32handle);
+  comctl32handle := 0;
+end;
+
+initialization
+  Initialize;
+Finalization
+  Finalize;  
 End.
 End.

+ 0 - 0
packages/winunits-base/src/Nb30.pp → packages/winunits-base/src/nb30.pp


+ 252 - 3
packages/winunits-base/src/shlobj.pp

@@ -198,6 +198,9 @@ Const
    CLSID_PersistPropset                : TGUID = '{fb8f0821-0164-101b-84ed-08002b2ec713}';
    CLSID_PersistPropset                : TGUID = '{fb8f0821-0164-101b-84ed-08002b2ec713}';
    CLSID_ConvertVBX                    : TGUID = '{fb8f0822-0164-101b-84ed-08002b2ec713}';
    CLSID_ConvertVBX                    : TGUID = '{fb8f0822-0164-101b-84ed-08002b2ec713}';
    CLSID_InternetShortcut              : TGUID = '{fbf23b40-e3f0-101b-8488-00aa003e56f8}';
    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
 Const
   SV2GV_CURRENTVIEW  = DWORD(-1);
   SV2GV_CURRENTVIEW  = DWORD(-1);
@@ -516,9 +519,14 @@ Const
   QITIPF_USESLOWTIP       = $00000008;  // Flag says it's OK to take a long time generating tip
   QITIPF_USESLOWTIP       = $00000008;  // Flag says it's OK to take a long time generating tip
   QIF_CACHED          = $00000001;
   QIF_CACHED          = $00000001;
   QIF_DONTEXPANDFOLDER= $00000002;
   QIF_DONTEXPANDFOLDER= $00000002;
-  SHARD_PIDL          = DWord($00000001);
-  SHARD_PATHA         = DWord($00000002);
-  SHARD_PATHW         = DWord($00000003);
+  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_VERIFYEXISTS            = $0001;
   PRF_TRYPROGRAMEXTENSIONS    = ($0002 or PRF_VERIFYEXISTS);
   PRF_TRYPROGRAMEXTENSIONS    = ($0002 or PRF_VERIFYEXISTS);
   PRF_FIRSTDIRDEF             = $0004;
   PRF_FIRSTDIRDEF             = $0004;
@@ -2015,6 +2023,135 @@ Type
         function GetInfoTip (dwFlags:DWord;var pwsztip:pwchar):HResult;StdCall;
         function GetInfoTip (dwFlags:DWord;var pwsztip:pwchar):HResult;StdCall;
         function GetInfoFlags (var dwflags:dword):HResult;Stdcall;
         function GetInfoFlags (var dwflags:dword):HResult;Stdcall;
         end;
         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)
     IShellLinkA  = Interface(IUnknown)
         ['{000214EE-0000-0000-C000-000000000046}']
         ['{000214EE-0000-0000-C000-000000000046}']
@@ -2071,6 +2208,35 @@ Type
                function Compare(psi:IShellItem;hint:SICHINTF;piorder:PINT):HResult; Stdcall;
                function Compare(psi:IShellItem;hint:SICHINTF;piorder:PINT):HResult; Stdcall;
                end;
                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)
     IModalWindow = Interface(IUnknown)
 	             ['{b4db1657-70d7-485e-8e3e-6fcb5a5c1802}']
 	             ['{b4db1657-70d7-485e-8e3e-6fcb5a5c1802}']
 				   function Show(hwndparent:HWND):HResult;StdCall;
 				   function Show(hwndparent:HWND):HResult;StdCall;
@@ -2121,7 +2287,88 @@ Type
 		    function SetFilter(pfilter:IShellItemFilter):HRESULT;Stdcall;
 		    function SetFilter(pfilter:IShellItemFilter):HRESULT;Stdcall;
 		  end;
 		  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)
     IShellExtInit = Interface(IUnknown)
           [IID_IShellExtInit]
           [IID_IShellExtInit]
@@ -2295,4 +2542,6 @@ Const External_Library = 'shell32';
   function SHMapPIDLToSystemImageListIndex(pshf:IShellFolder; pidl:LPCITEMIDLIST; piIndexSel:plongint):Longint;StdCall;external External_library name 'SHMapPIDLToSystemImageListIndex';
   function SHMapPIDLToSystemImageListIndex(pshf:IShellFolder; pidl:LPCITEMIDLIST; piIndexSel:plongint):Longint;StdCall;external External_library name 'SHMapPIDLToSystemImageListIndex';
 
 
 implementation
 implementation
+
+
 end.
 end.