mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-25 16:01:32 +02:00
* patch from Paul, fixes 17958, newer Vista/W7 interfaces for dialogs.
git-svn-id: trunk@16353 -
This commit is contained in:
parent
a8deeaa168
commit
485bc5a5b2
@ -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);
|
||||||
@ -2015,6 +2018,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 +2203,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 +2282,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]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user