如何使用Delphi 7在状态/任务栏按钮上显示进度?
发布时间:2020-12-15 10:09:35 所属栏目:大数据 来源:网络整理
导读:如果您在 Windows 7下复制文件,您将看到一个进度条中复制的进度显示在应用程序的状态或任务栏按钮中. 可以使用Delphi 7实现吗? 我有一些漫长的操作,这将非常适合展示它的进步. 使用Total Commander的副本样品 . 解决方法 使用 ITaskbarList3 接口,特别是 Se
如果您在
Windows 7下复制文件,您将看到一个进度条中复制的进度显示在应用程序的状态或任务栏按钮中.
可以使用Delphi 7实现吗? 我有一些漫长的操作,这将非常适合展示它的进步. 使用Total Commander的副本样品 . 解决方法
使用
ITaskbarList3 接口,特别是
SetProgressState 和
SetProgressValue 方法.使用指定CLSID_TaskbarList和IID_ITaskbarList3的CoCreateInstance()来访问接口.
例如: type 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; THUMBBUTTON = record dwMask: DWORD; iId: UINT; iBitmap: UINT; hIcon: HICON; szTip: packed array[0..259] of WCHAR; dwFlags: DWORD; end; TThumbButton = THUMBBUTTON; PThumbButton = ^TThumbButton; ITaskbarList3 = interface(ITaskbarList2) ['{EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}'] function SetProgressValue(hwnd: HWND; ullCompleted: ULONGLONG; ullTotal: ULONGLONG): HRESULT; stdcall; function SetProgressState(hwnd: HWND; tbpFlags: Integer): 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; tbatFlags: Integer): HRESULT; stdcall; function ThumbBarAddButtons(hwnd: HWND; cButtons: UINT; pButton: PThumbButton): HRESULT; stdcall; function ThumbBarUpdateButtons(hwnd: HWND; cButtons: UINT; pButton: PThumbButton): 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; var prcClip: TRect): HRESULT; stdcall; end; const CLSID_TaskbarList: TGUID = '{56FDF344-FD6D-11d0-958A-006097C9A090}'; TBPF_NOPROGRESS = 0; TBPF_INDETERMINATE = $1; TBPF_NORMAL = $2; TBPF_ERROR = $4; TBPF_PAUSED = $8; var TBL: ITaskbarList3; I: Integer; begin CoCreateInstance(CLSID_TaskbarList,nil,CLSCTX_INPROC,ITaskbarList3,TBL); if (TBL <> nil) then TBL.SetProgressState(Application.Handle,TBPF_INDETERMINATE); try for I := 0 to 100 do begin if (TBL <> nil) then TBL.SetProgressValue(Application.Handle,I,100); Sleep(1000); end; finally if (TBL <> nil) then TBL.SetProgressState(Application.Handle,TBPF_NOPROGRESS); end; end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |