发表回复 
xp系统如何让任务栏托盘区一行显示日期和时间
2011-05-19, 00 : 15
xp系统如何让任务栏托盘区一行显示日期和时间
[i=s] 本帖最后由 hitman 于 2011-9-2 20:54 编辑 [/i]


网友说PowerPro软件不用代码就可以实现任务栏一行显示日期和时间,非常方便。
为了证明PP可以做的,ahk也能做。特意写了下面ahk脚本(我的机器是xp系统)。
1楼、2楼是测试版。
5楼是发布版。

4楼是原理。

[b]最新运行版本,不需要安装Autohotkey,见9楼附件。

没啥难度,主要技术有三个:1、注册表操作。2、不重启系统刷新注册表。3、每日0时更新日期。

[/b]摘自:http://blog.csdn.net/liuyukuan/archive/2...30982.aspx[Image: 552ca88ajw1dhbsrjskw0j.jpg]

农历的形式如 [Image: 552ca88ajw1dhgc9n0i7ij.jpg]


FormatTime, TimeString,, LongDate ;关于农历信息的显示,下文将予以讨论 http://ahk.5d6d.com/viewthread.php?tid=3730&highlight=%C5%A9%C0%FA
RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\International, sTimeFormat, tt H:mmConfuseds
RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\International, s1159, %TimeString%
RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\International, s2359, %TimeString%
SendMessage, 0x1A,,,, ahk_id 0xFFFF ; 0x1A is WM_SETTINGCHANGE 不重启Explorer或电脑直接应用修改的注册表项
return

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-05-19, 07 : 02
设置判别午夜12点自动更新日期的逻辑
[i=s] 本帖最后由 hitman 于 2011-5-22 22:59 编辑 [/i]

注意,没有做成自动每天更新,所以必须每天运行一次才能保证日期是最新的。
对于像我这样每天都必须启动一个ahk脚本的人来说无所谓
当然你可以做个定时,每日0时更新一下啊
自动每天0时更新:

Loop {
粘贴楼上的代码
Sleep (((24 - A_Hour)* 60-A_Min)*60- A_Sec) * 1000
}



另外,没有设置恢复功能,如需恢复自己到 控制面板 区域和语言选项 自定义 时间 常规里 AM符号 PM符号 手动修改即可

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-05-19, 08 : 15
 
虽然我已经不用explore很久了.......不过这这个错.........

另外呢 也用过一段时间的powerpro 还是挺不错的.....有点像有界面的AHK......不过帮助太弱了点....自己写代码有点麻烦
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-05-22, 17 : 05
 
[i=s] 本帖最后由 hitman 于 2011-5-22 17:08 编辑 [/i]

在注册表键值HKEY_CURRENT_USER\Control Panel\International下找到字符串“Locale”.字符串“Locale”的值有两种:

  一种是“00000409”表示12小时制;

  另一种是“00000804”表示24小时制。

  同时还可看到另外3个字符串:“s1159”表示上午的信息,其默认值是“AM”;“s2359”表示下午显示的信息,其默认值是“PM”;“sTimeFormat”表​示时间显示格式“HH∶MM∶SS TT”,其中“HH”表示小时的格式为两位,如“8∶30”将表示为“08∶30”,一个“H”将不会出现因显示不足两位时补零的现像,“TT”表示时间后面将再显示信息​。

  在修改过程中应注意一点是字符串“s1159”或“s2359”值的内容有长度限制,其最长可用5个汉字,即10个字符,如果超长的话,那么任务时间的位置将会多出一片空​白,连时间都不显示了。

  怎么样,现在就马上试一试。按上面的方法把“s1159”的值改成“我爱猫咪”,把“s2359”的值改成“猫咪爱我”,重新运行Windows,改变上下午时间,看看会​出现什么?

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-05-22, 22 : 21
在托盘时间处显示日期,星期
[i=s] 本帖最后由 hitman 于 2011-5-22 23:09 编辑 [/i]

;托盘一行显示日期和时间发布版:
;作者:sunwind 1576157@qq.com 2011年5月22日
OnExit, UnDo
;先备份注册表原有信息,方便在退出脚本时恢复原来设置
RegRead, _sLongDate, HKEY_CURRENT_USER, Control Panel\International, sLongDate
RegRead, _sTimeFormat, HKEY_CURRENT_USER, Control Panel\International, sTimeFormat
RegRead, _s1159, HKEY_CURRENT_USER, Control Panel\International,s1159
RegRead, _s2359, HKEY_CURRENT_USER, Control Panel\International,s2359

Loop {
FormatTime, TimeString,, LongDate
;~ TimeString:=Date_GetLunarDate(A_Now) ;~ 显示农历需要 System.ahk及Date.ahk函数支持。 http://ahk.5d6d.com/thread-3730-1-1.html

RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\International, sTimeFormat, tt H:mmConfuseds
RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\International, s1159, %TimeString%
RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\International, s2359, %TimeString%
SendMessage, 0x1A,,,, ahk_id 0xFFFF ; 0x1A is WM_SETTINGCHANGE 不重启直接应用刚才对注册表的修改
Sleep (((24 - A_Hour)* 60-A_Min)*60- A_Sec) * 1000 ;如不退出脚本那么每日0点再一次运行
;~ Sleep, (((60 - A_Min) * 60) - A_Sec) * 1000 这个是整点处理的算法
}

;退出脚本恢复原来的设置
UnDo:
RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\International, sLongDate, %_sLongDate%
RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\International, sTimeFormat, %_sTimeFormat%
RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\International, s1159, %_s1159%
RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\International, s2359, %_s2359%
SendMessage, 0x1A,,,, ahk_id 0xFFFF ; 0x1A is WM_SETTINGCHANGE 不重启直接应用刚才对注册表的修改
ExitApp

源代码含农历显示相关库,如需要请下载:[attach]1687[/attach]


附件
.rar  xp系统_任务栏托盘一行显示时间及日期.rar (大小: 4.45 KB / 下载: 64)

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-05-22, 23 : 29
 
测试了一下,好象有错误。
其实我只要托盘区一行内显示时间和星期(我知道拉宽可以,但不好看),别的不要。能改成这样的代码吗?
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-05-23, 16 : 28
通过注册表自动启动脚本
[i=s] 本帖最后由 hitman 于 2011-5-23 16:29 编辑 [/i]

上面代码可以增加自动启动功能:
RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Run, Date_Time, %A_ScriptFullPath%

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-05-23, 16 : 30
 
6# 初学者2009
有错误?是什么错误?

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-08-31, 00 : 35
一行显示时间及日期
[i=s] 本帖最后由 hitman 于 2011-9-3 14:56 编辑 [/i]

如有需要请下载附件吧。由于有些人没有Ahk经验,所以写了一个vbs的启动快捷方式。
增加了天气显示,感谢okey3m
农历显示功能,感谢 health901
窗口控制热键,感谢 aurelian
注册表定位,感谢yonken
鼠标控制音量,感谢konlon

【热键说明】
显示日期信息——按住鼠标左键后 按右键
显示天气情况——按住鼠标左键后 按住 w 键
退出本程序——按住鼠标左键后 按 End 键
重启本程序——按住鼠标左键后 按 r 键
显示自定义区域和语言选项——按住鼠标左键后 按 Tab 键
显示日期和时间 属性窗口——双击时间区域
调声音大小工具——Capslock+滚动滚轮,将鼠标滚轮向后旋转(朝向你自己)降低音量,不用打开音量控制界面即可调整的。
查询任意天农历工具——按住鼠标左键后 按 n 键(1900年至2100年)
注册表自动定位工具——按住鼠标左键后 按 t 键,比如可输入 HKEY_CURRENT_USER\Control Panel\International 定位到本程序所利用的注册表项

窗口控制的热键
ALT+右键单击窗口任意位置 最小化窗口
ALT+左键点住窗口任意位置 拖拽窗口
ALT+中键单击窗口任意位置 关闭窗口
ALT+左键双击 切换最大化和普通状态
【特别说明】
本程序写了以下注册表项,为了能自动启动。
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"DateTimeInLine"="某路径\启动一行显示时间及日期.VBS"
已知问题:运行本程序后 资源管理器中的 文件 创建日期 修改日期 等信息 后面会多显示当前日期.
编程语言:AutoHotkey
AutoHotkey_L.exe是用来运行.ahkl扩展名的脚本程序的。
作者:刘玉宽
日期:2011-08-31
QQ:1576157


附件
.rar  XP托盘区一行显示时间及日期v2.1.rar (大小: 367.11 KB / 下载: 328)

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-08-31, 10 : 00
 
我最需要的是显示 秒.......
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-09-04, 21 : 18
 
10# ddandyy
代码: (全选)
programName = 托盘一行显示日期和时间(秒)
programVersion = 3.0
programFullName = %programName% v%programVersion%
programAuthor = hitman(1576157@qq.com)
;#NoTrayIcon
#NoEnv
#SingleInstance,Force
#Persistent
TimeFormatTemplate := "HH.mm.ss"
RegRead, SavedTimeFormat, HKEY_CURRENT_USER, Control Panel\International, sTimeFormat
if SavedTimeFormat <> %TimeFormatTemplate%
{
   SavedTimeFormat := TimeFormatTemplate
   RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\International, sTimeFormat, %SavedTimeFormat%
   SendMessage, 0x1A,,, TrayClockWClass1, ahk_class Shell_TrayWnd  ;WM_WININICHANGE
}
OnExit, SubExit
SetTimer, WatchTime, 1000
Return

WatchTime:

FormatTime, TimeString,,yyyy年M月d日 dddd H:mm:ss ;此行是带秒的
   RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\International, sTimeFormat, %TimeString%
   SendMessage, 0x1A,,, TrayClockWClass1, ahk_class Shell_TrayWnd
   Return
  
SubExit:
if A_ExitReason not in Logoff,Shutdown,Close,Error ; Avoid spaces around the comma in this line.
{
    MsgBox, 4,一行显示时间及日期,你确定要关闭应用程序?
    IfMsgBox, No
        return
}
   RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\International, sTimeFormat, %SavedTimeFormat%
   SendMessage, 0x1A,,, TrayClockWClass1, ahk_class Shell_TrayWnd
   ExitApp

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢hitman
2011-09-28, 00 : 47
 
这个有点DT了呢。。

直接用CHKen Tray Clock比你这个好太多了
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-10-05, 21 : 34
 
嘻嘻,我的可以再完善,开源且不会被杀毒软件杀掉。

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-10-05, 22 : 56
定时通知代码例子
#persistent

TargetTime = 1400 ; run at 2pm, which is 1400.


StringLeft, TargetDateTime, A_Now, 8 ; Put just YYYYMMDD into the variable.
TargetDateTime = %TargetDateTime%%TargetTime%
TimeUntilTarget = %TargetDateTime%
TimeUntilTarget -= %A_Now%, seconds
if TimeUntilTarget < 0
{
MsgBox The target time is already past!
ExitApp
}
TimeUntilTarget *= 1000 ; Convert to milliseconds.
SetTimer, Timer1, %TimeUntilTarget%
return

Timer1:
SetTimer, Timer1, off ; i.e. perform this subroutine only once.
; In case you want to be warned before it happens, in case it changes the
; active window or otherwise disrupts what the user is working on:
SplashTexton,,, It's about to happen.
Sleep, 3000
SplashTextOff
; And here perform whatever action you wanted scheduled:
; ...
return

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-10-19, 20 : 35
 
为何不直接compile 为 EXE檔 ? 要用 vbs 去行 ahk?
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-10-31, 12 : 14
 
[size=12pt]发现一个异常情况[size=12pt], [/size][size=12pt]在文件的"修改期日"中[/size][size=12pt], [/size][size=12pt]日子是能正确显示[/size][size=12pt], [/size][size=12pt]但时间部分变为当前时间,有否改善方法[/size][size=12pt]??[/size][/size]


附件 缩略图
   
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-10-31, 14 : 52
 
:sleepy:

还是像我一样 用BBlean 吧
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-11-01, 21 : 08
 
15# kenlam
exe文件可能被杀毒软件杀掉,也不便于修改编辑源文件。

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-11-01, 21 : 10
 
16# kenlam

9楼 的已知问题中已经提到此不足。

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-11-01, 21 : 10
 
17# ddandyy
我也用BBlean一直没花时间折腾呢,以后多向你请教BBlean

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合