天下网吧 >> 网吧天地 >> 天下码农 >> 桌面开发 >> VBS >> 正文

Delphi2010中Windows7新的taskbar功能的使

Windows7正式版已经用了很久了,MSDN上面正式版Windows7已经发布很久了。

发现Windows7的TaskBar很漂亮,也有很多功能。例如IE下载的时候可以看到进度,可以叠加图标等等特效。

Delphi2010也发布很久了,Delphi2010号称支持Windows7的新增API,那么看看有没有TaskBar相关的API。

一提到Taskbar相关,首先就想到ITaskBarList不同版本接口。到shlobj单元一看,果然增加了ITaskbarList3、ITaskbarList4两个新版本的接口。

老办法CreateComObject(CLSID_TaskbarList)就行了。返回的是一个ITaskBarList接口。看具体的操作系统,返回的是你操作系统所能支持的最高版本的ITaskBarList。

先来看进度条:

设计一个窗口

1.jpg

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ShlObj, ActiveX, ComObj, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    GroupBox1: TGroupBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox1: TCheckBox;
    CheckBox4: TCheckBox;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
    { Private declarations }
    FPos : Int64;
    FMax : Int64;
    FTaskBarList : ITaskbarList4;
    function SetProgressState():Integer;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  Timer1.Enabled := not CheckBox1.Checked;
  // 不定的时候设了State就不能再设Value,否则会冲掉。
  SetProgressState();
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FTaskBarList := CreateComObject(CLSID_TaskbarList)  as ITaskbarList4;
  FPos := 0;
  FMax := 200;
  SetProgressState();
end;

function TForm1.SetProgressState: Integer;
begin
  Result := TBPF_NOPROGRESS;
  if CheckBox1.Checked then
    Result  := Result or TBPF_INDETERMINATE;
  if CheckBox2.Checked then
    Result  := Result or TBPF_NORMAL;
  if CheckBox3.Checked then
    Result  := Result or TBPF_ERROR;
  if CheckBox4.Checked then
    Result  := Result or TBPF_PAUSED;
  FTaskBarList.SetProgressState(Handle, Result);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if (FPos < FMAX) then
     Inc(FPos, 10)
  else
     FPos := 0;
  FTaskBarList.SetProgressValue(Handle, FPos, FMax);
end;

end.

本文来源:有个鼠窝BLOG 作者:有个鼠窝

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行