如何编程实现关闭、显示windows任务栏上的时钟(88分)

  • 主题发起人 主题发起人 weitm
  • 开始时间 开始时间
W

weitm

Unregistered / Unconfirmed
GUEST, unregistred user!
如何编程实现关闭、显示windows任务栏最右边的时钟,要代码.
 
你要代码我要分,注意关闭之后,必须重新启动系统才能重新打开时钟!
procedure DisableStartMenu;
var
Handle, ChildHandle, SecLayerH: HWND;
clsName: pchar;
begin
getmem(clsName, 255);
Handle := FindWindow('Shell_TrayWnd', nil);
if Handle <> 0 then
begin
ChildHandle := GetWindow(Handle, GW_Child);
while ChildHandle <> 0 do
begin
GetClassName(ChildHandle, clsName, 255);
if string(clsName) = 'TrayNotifyWnd' then
begin
SecLayerH := GetWindow(ChildHandle, GW_CHILD);
while SecLayerH <> 0 do
begin
GetClassName(SecLayerH, clsName, 255);
if string(clsName) = 'TrayClockWClass' then
begin
PostMessage(SecLayerH, WM_SYSCOMMAND, SC_CLOSE, 0);
end;
SecLayerH := GetWindow(SecLayerH, GW_HWNDNEXT);
end;
end;
ChildHandle := GetWindow(ChildHandle, GW_HWNDNEXT);
end;
end;
freemem(clsName, 255);
end;
 
没答全呢(显示?)!
 
哎呀,你不会自己修改一下吗?
调用如下:
/// ShowTrayClock(sw_show);///显示
/// ShowTrayClock(sw_hide);///隐藏
procedure ShowTrayClock(b:integer);
var
Handle, ChildHandle, SecLayerH: HWND;
clsName: pchar;
begin
getmem(clsName, 255);
Handle := FindWindow('Shell_TrayWnd', nil);
if Handle <> 0 then
begin
ChildHandle := GetWindow(Handle, GW_Child);
while ChildHandle <> 0 do
begin
GetClassName(ChildHandle, clsName, 255);
if string(clsName) = 'TrayNotifyWnd' then
begin
SecLayerH := GetWindow(ChildHandle, GW_CHILD);
while SecLayerH <> 0 do
begin
GetClassName(SecLayerH, clsName, 255);
if string(clsName) = 'TrayClockWClass' then
begin
ShowWindow(SecLayerH, b);
end;
SecLayerH := GetWindow(SecLayerH, GW_HWNDNEXT);
end;
end;
ChildHandle := GetWindow(ChildHandle, GW_HWNDNEXT);
end;
end;
freemem(clsName, 255);
end;
 
嘻嘻,不多写几个字就想轻易拿分!
 
我Kao,代码都测试过了,没有问题。
 
写给Kingron:
你并没有完全答对。我的要求是象“开始-设置-任务栏和开始菜单中的
‘口显示时间’ 一样实现真正关闭或显示时钟。”并不是隐藏。
因为隐藏后有两个缺点:1时钟区域没有瞬间消除;2鼠标移动至刚消失的
时钟空白区域照样显示提示的日期和时间,甚至双击可打开修改时间界面。
望君再好好考虑一下。
如表现好,我可以再追加58分。
嘻嘻.
 
哎呀,简单啊,你用Spy++查看一下就知道了,Windows的任务栏的属性
只不过是改变了他的窗口的大小而已!所以啊,你只要给他发送一个消息
把他的窗口的大小由原来的改成0,0大小的窗口就可以了,具体的数据请自己
用Spy++查看吧。很简单的。
 
写给Kingron:
也许是我的机器笨呀。我已经隐藏并改变了时钟对象的窗口大小。现在我上面所
说的鼠标移动到时钟上面出现提示、甚至双击出现调整时区界面症状都没有了。可是
原来的时钟空白区域还是不能瞬间自动消失。我没辙了。Help Me!!!
 
这么几天都没有人出来说话。我也不想拖了。算了,给Kingron 加上88大元.好在
此时此刻我已经基本解决了问题。
 
后退
顶部