[delphi技术]隐藏/显示任务栏
var h:THandle; //变量
h:=FindWindow(‘Shell_TrayWnd‘,nil);
ShowWindow(h,SW_hide);
2.显示任务条
h:=FindWindow(‘Shell_TrayWnd‘,nil);
ShowWindow(h,SW_SHOW);
3.怎样在Delphi中调用API函数使任务不在任务栏中显示出来
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
ShowWindow(Application.Handle, SW_HIDE);
PS.在 delphi 中如何找到任务栏的句柄?
hTray:=FindWindow(‘Shell_TrayWnd‘,nil);
ShowWindow(hTray,SW_HIDE);
至于类名 Shell_TraWnd,要用工具来找比较快,Delphi装好后会有一个Win32Sight,可以查找桌面、任务栏、任何应用程序窗体的类名。
4、自动隐藏任务栏和取消自动隐藏任务栏(隐藏与自动隐藏不同自动隐藏是鼠标离开时就隐藏,进入时就显示)
需要利用一个API函数:SHAppBarMessage
WINSHELLAPI UINT APIENTRY SHAppBarMessage( DWORD dwMessage,PAPPBARDATA pData);
APPBARDATA结构体
示例:
1、 设置任务栏自动隐藏或者取消自动隐藏
procedure TForm1.AutoHideTaskBar(bHide: BOOL);
const ABM_SETSTATE = 10 ; // 0x0000000a 必须的,因为Delphi中不存在;
var
apBar: APPBARDATA;
begin
apBar.cbSize := sizeof(apBar);
apBar.hWnd := FindWindow(‘Shell_TrayWnd‘, nil);
if apBar.hWnd >0 then
begin
if (bHide = TRUE) then
apBar.lParam := ABS_AUTOHIDE //自动隐藏
else
apBar.lParam := ABS_ALWAYSONTOP; //取消自动隐藏
SHAppBarMessage(ABM_SETSTATE, apBar); //设置任务栏自动隐藏
end;
end;
调用: AutoHideTaskBar(True); //设置为自动隐藏 或者 AutoHideTaskBar(False); //取消自动隐藏
注意: Delphi的dwMessage的参数中不存在ABM_SETSTATE,而windows的API中存在,,其值为0x0000000a ;
所以在此设置ABM_SETSTATE,并且传入即可。直接使用ABM_SETAUTOHIDEBAR代替ABM_SETSTATE,是不起作用的。
2、判断任务栏是否自动隐藏
function TForm1.IsTaskbarAutoHideOn : boolean;
var
ABData : TAppBarData;
begin
ABData.cbSize := sizeof(ABData);
Result := (SHAppBarMessage(ABM_GETSTATE, ABData) and ABS_AUTOHIDE) > 0;
end;
三、API函数SHAppBarMessage的说明:
WINSHELLAPI UINT APIENTRY SHAppBarMessage(
DWORD dwMessage, //消息名名
PAPPBARDATA pData //AppBarData结构指针
);参数说明:
dwMessage 可以为下列参数
ABM_ACTIVATE 通知系统一个 appbar 已经激活;
ABM_GETAUTOHIDEBAR 检索屏幕边缘的 appbar
ABM_GETSTATE 检索最顶层的Microsoft Windows任务栏的状态
ABM_GETTASKBARPOS 检索Windows任务栏的边界矩形
ABM_NEW 注册一个新的appbar,该系统并发送一消息给appbar
ABM_QUERYPOS appbar 大小和屏幕位置
ABM_REMOVE 取消注册一个 appbar,并从系统内部列表移出
ABM_SETAUTOHIDEBAR 在屏幕边缘注册或取消注册自动隐藏appbar
ABM_SETPOS 设置appbar 的大小和屏幕位置
//ABM_SETSTATE 设置appbar为最顶层,设置状态 Delphi中没有
ABM_WINDOWPOSCHANGED 当appbar得状态发送改变时向系统发送消息
pData 一个APPBARDATA结构体
APPBARDATA结构体,结构跟参数说明:
typedef struct _AppBarData { // abd
DWORD cbSize; // sizeof(APPBARDATA)
HWND hWnd; // handle of appbar 任务栏句柄、
UINT uCallbackMessage; // see below callback指针
UINT uEdge; // see below 边缘的位置s
RECT rc; // see below 矩形区域
LPARAM lParam; // see below 状态
ABS_AUTOHIDE; //自动隐藏ABS_ALWAYSONTOP;//取消自动隐藏
} APPBARDATA, *PAPPBARDATA;
2.================================================================
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/69655.html