Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Also you can try my unit (Tested in Delphi 7):</p> <pre><code>{******************************************************************************* Windows 7 TaskBar Progress Unit File File Version: 0.0.0.3 https://github.com/tarampampam *******************************************************************************} unit Win7TaskBarProgressUnit; interface uses Windows, ActiveX; type ITaskbarList = interface(IUnknown) ['{56FDF342-FD6D-11D0-958A-006097C9A090}'] function HrInit: HRESULT; stdcall; function AddTab(hwnd: LongWord): HRESULT; stdcall; function DeleteTab(hwnd: LongWord): HRESULT; stdcall; function ActivateTab(hwnd: LongWord): HRESULT; stdcall; function SetActiveAlt(hwnd: LongWord): HRESULT; stdcall; end; ITaskbarList2 = interface(ITaskbarList) ['{602D4995-B13A-429B-A66E-1935E44F4317}'] function MarkFullscreenWindow(hwnd: LongWord; fFullscreen: LongBool): HRESULT; stdcall; end; ITaskbarList3 = interface(ITaskbarList2) ['{EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}'] procedure SetProgressValue(hwnd: LongWord; ullCompleted: UInt64; ullTotal: UInt64); stdcall; procedure SetProgressState(hwnd: LongWord; tbpFlags: Integer); stdcall; end; type TTaskBarProgressStyle = (tbpsNone, tbpsIndeterminate, tbpsNormal, tbpsError, tbpsPaused); TWin7TaskProgressBar = class glHandle: LongWord; glMin: Byte; glMax, glValue: Integer; glStyle: TTaskBarProgressStyle; glVisible, glMarquee: Boolean; glTaskBarInterface: ITaskbarList3; private procedure SetProgress(const Value: Integer); procedure SetMax(const Value: Integer); procedure SetStyle(const Style: TTaskBarProgressStyle); procedure SetVisible(const IsVisible: Boolean); procedure SetMarquee(const IsMarquee: Boolean); published constructor Create(const Handle: LongWord); property Max: Integer read glMax write SetMax default 100; property Min: Byte read glMin default 0; property Progress: Integer read glValue write SetProgress default 0; property Marquee: Boolean read glMarquee write SetMarquee default False; property Style: TTaskBarProgressStyle read glStyle write SetStyle default tbpsNone; property Visible: Boolean read glVisible write SetVisible default False; destructor Destroy; override; end; implementation procedure TWin7TaskProgressBar.SetMax(const Value: Integer); begin glMax := Value; SetProgress(glValue); end; procedure TWin7TaskProgressBar.SetProgress(const Value: Integer); begin if (glTaskBarInterface &lt;&gt; nil) and (glHandle &lt;&gt; 0) then begin glValue := Value; if not glMarquee then glTaskBarInterface.SetProgressValue(glHandle, UInt64(glValue), UInt64(glMax)); end; end; procedure TWin7TaskProgressBar.SetStyle(const Style: TTaskBarProgressStyle); const Flags: array[TTaskBarProgressStyle] of Cardinal = (0, 1, 2, 4, 8); begin if (glTaskBarInterface &lt;&gt; nil) and (glHandle &lt;&gt; 0) then glTaskBarInterface.SetProgressState(glHandle, Flags[Style]); glStyle := Style; end; procedure TWin7TaskProgressBar.SetVisible(const IsVisible: Boolean); begin if IsVisible then begin if (glStyle &lt;&gt; tbpsNormal) then SetStyle(tbpsNormal) end else SetStyle(tbpsNone); glVisible := IsVisible; end; procedure TWin7TaskProgressBar.SetMarquee(const IsMarquee: Boolean); begin if IsMarquee then SetStyle(tbpsIndeterminate) else begin SetStyle(tbpsNone); if glVisible then begin SetProgress(glValue); SetStyle(tbpsNormal); end; end; glMarquee := IsMarquee; end; constructor TWin7TaskProgressBar.Create(const Handle: LongWord); const CLSID_TaskbarList: TGUID = '{56FDF344-FD6D-11d0-958A-006097C9A090}'; var OSVersionInfo : TOSVersionInfo; begin OSVersionInfo.dwOSVersionInfoSize := sizeof(TOSVersionInfo); if (Handle &lt;&gt; 0) and GetVersionEx(OSVersionInfo) then if OSVersionInfo.dwMajorVersion &gt;= 6 then try glHandle := Handle; CoCreateInstance(CLSID_TaskbarList, nil, CLSCTX_INPROC, ITaskbarList3, glTaskBarInterface); if (glTaskBarInterface &lt;&gt; nil) then glTaskBarInterface.SetProgressState(glHandle, 0); glMin := 0; glMax := 100; glValue := 10; glStyle := tbpsNormal; SetStyle(glStyle); SetVisible(glVisible); except glTaskBarInterface := nil; end; end; destructor TWin7TaskProgressBar.Destroy; begin if (glTaskBarInterface &lt;&gt; nil) then begin glTaskBarInterface.SetProgressState(glHandle, 0); glTaskBarInterface := nil; end; end; end. </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload