|
   
- UID
- 6274
- 帖子
- 2360
- 主题
- 227
- 精华
- 18
- 坛币
- 2865 UB
- 热心
- 6 UF
- 在线时间
- 2201 小时
- 注册时间
- 2006-5-5
- 最后登录
- 2010-7-31

|
老K交代的任务完成不了,接受BS~,下面放出已完成部份的源码...,哪位大大继续搞  - unit Unit_main;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls,ShellAPI,Registry,ShlObj,CommCtrl,ComObj;
- type
- TForm1 = class(TForm)
- Button1: TButton;
- Button2: TButton;
- Button3: TButton;
- Button4: TButton;
- Button5: TButton;
- Button6: TButton;
- Button7: TButton;
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure Button3Click(Sender: TObject);
- procedure Button4Click(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure Button5Click(Sender: TObject);
- procedure Button6Click(Sender: TObject);
- procedure Button7Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- Wnd:array[0..4] of THandle;
- implementation
- {$R *.dfm}
- function IsTaskbarAutoHideOn : Boolean; //判断是否自动隐藏
- var
- ABData : TAppBarData;
- begin
- ABData.cbSize := SizeOf (ABData);
- result := (SHAppBarMessage (ABM_GETSTATE, ABData) and ABS_AUTOHIDE) > 0
- end;
- procedure LockTaskbar(Lock: Boolean); //锁任务栏
- Var
- Reg:TRegistry;
- Begin
- Reg:=TRegistry.Create;
- try
- Reg.RootKey := HKEY_LOCAL_MACHINE;
- if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', True) then
- begin
- if Lock then
- Reg.WriteInteger('TaskBarSizeMove',0) //锁
- else
- Reg.WriteInteger('TaskBarSizeMove',1); //解
- Reg.CloseKey;
- end;
- except
- Reg.Free;
- end;
- SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST+SHCNF_FLUSH,nil,nil);
- end;
- procedure GetHandles; //得到任务栏句柄
- begin
- //得到Tray Bar的窗口句柄;
- Wnd[0]:=FindWindow('ShellTrayWnd',nil);
- //得到开始按钮的窗口句柄;
- Wnd[1]:=FindWindow('Shell_TrayWnd',nil);
- Wnd[1]:=FindWindowEx(Wnd[1],HWND(0),'Button',nil);
- //得到应用程序切换区的窗口句柄;
- Wnd[2]:=FindWindow('Shell_TrayWnd',nil);
- Wnd[2]:=FindWindowEx(Wnd[2],HWND(0),'ReBarWindow32',nil);
- //得到任务栏通知区的窗口句柄;
- Wnd[3]:=FindWindow('Shell_TrayWnd',nil);
- Wnd[3]:=FindWindowEx(Wnd[3],HWND(0),'TrayNotifyWnd',nil);
- //得到任务栏时钟的窗口句柄;
- Wnd[4]:=FindWindow('Shell_TrayWnd',nil);
- Wnd[4]:=FindWindowEx(Wnd[4],HWND(0),'TrayNotifyWnd',nil);
- Wnd[4]:=FindWindowEx(Wnd[4],HWND(0),'TrayCLockWClass',nil);
- end;
- procedure EnableOrDisable(Lock:Boolean;I:Integer); //禁用或启用任务栏
- begin
- GetHandles;
- if Lock then
- case i of
- 0: EnableWindow(Wnd[0], False);
- 1: EnableWindow(Wnd[1], False);
- 2: EnableWindow(Wnd[2], False);
- 3: EnableWindow(Wnd[3], False);
- 4: EnableWindow(Wnd[4], False);
- end
- else
- case i of
- 0: EnableWindow(Wnd[0], True);
- 1: EnableWindow(Wnd[1], True);
- 2: EnableWindow(Wnd[2], True);
- 3: EnableWindow(Wnd[3], True);
- 4: EnableWindow(Wnd[4], True);
- end;
- end;
- procedure HideOrShow(Lock:Boolean;I:Integer); //隐藏或显示任务栏
- begin
- GetHandles;
- if Lock then
- case i of
- 0: ShowWindow(Wnd[0],SW_HIDE);
- 1: ShowWindow(Wnd[1],SW_HIDE);
- 2: ShowWindow(Wnd[2],SW_HIDE);
- 3: ShowWindow(Wnd[3],SW_HIDE);
- 4: ShowWindow(Wnd[4],SW_HIDE);
- end
- else
- case i of
- 0: ShowWindow(Wnd[0],SW_Show);
- 1: ShowWindow(Wnd[1],SW_Show);
- 2: ShowWindow(Wnd[2],SW_Show);
- 3: ShowWindow(Wnd[3],SW_Show);
- 4: ShowWindow(Wnd[4],SW_Show);
- end;
- end;
- Procedure SetWallPaper(StrFile: String; Style: Integer); //更改桌布
- Var DT: IActiveDesktop;
- WPO: TWallpaperOpt;
- WS: WideString;
- Begin
- DT := CreateComObject(CLSID_ActiveDesktop) As IActiveDesktop;
- WS := StrFile;
- Case Style Of
- 0: WPO.dwStyle := WPSTYLE_CENTER; {居中}
- 1: WPO.dwStyle := WPSTYLE_TILE; {平铺}
- 2: WPO.dwStyle := WPSTYLE_STRETCH; {拉伸}
- Else WPO.dwStyle := WPSTYLE_CENTER;
- End;
- WPO.dwSize := SizeOf(WPO);
- DT.SetWallpaperOptions(WPO, 0);
- DT.SetWallPaper(PwideChar(WS), 0);
- DT.ApplyChanges(AD_APPLY_ALL);
- End;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- ShowWindow(FindWindow('Shell_TrayWnd',nil),SW_HIDE);
- end;
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- ShowWindow(FindWindow('Shell_TrayWnd',nil),SW_SHOW);
- //SetTaskbarAutoHide(3);
- end;
- procedure TForm1.Button3Click(Sender: TObject);
- begin
- LockTaskbar(True);
- end;
- procedure TForm1.Button4Click(Sender: TObject);
- begin
- LockTaskbar(False);
- end;
- procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
- var i:Integer;
- begin
- for i:=0 to 4 do
- begin
- EnableWindow(Wnd[i],True);
- ShowWindow(Wnd[i],SW_Show);
- end;
- end;
- procedure TForm1.Button5Click(Sender: TObject);
- begin
- HideOrShow(true,4);
- end;
- procedure TForm1.Button6Click(Sender: TObject);
- begin
- HideOrShow(false,4);
- end;
- procedure TForm1.Button7Click(Sender: TObject); //隱藏圖標
- var
- wnd:HWND;
- begin
- Wnd := GetDesktopWindow;
- Wnd := FindWindowEx(Wnd, 0, 'Progman', nil);
- Wnd := FindWindowEx(Wnd, 0, 'SHELLDLL_DefView', nil);
- Wnd := FindWindowEx(Wnd, 0, 'SysListView32', nil);
- SendMessage(wnd, LVM_DELETEALLITEMS, 0, 0);
- SetWallPaper('',0);
- end;
- end.
复制代码 |

|