【11-15 问题求助】有无网络连接,判读天气界面显示的问题二
rainmeter吧
全部回复
仅看楼主
level 7
;加在非天气皮肤上的代码:
;+++++++++++++
;当开机时判断有无网络
[MS联网]
Measure=SysInfo
SysInfoType=INTERNET_CONNECTIVITY
SysInfoData=Best
;Disabled=0
IfCondition=
#CurrentSection#
=1
IfTrueAction=[!ActivateConfig "Weather" "Weather.ini"][!DisableMeasure
#CurrentSection#
]
IfCondition2=
#CurrentSection#
=-1
IfTrueAction2=[!DeactivateConfig "Weather" "Weather.ini"][!DisableMeasure
#CurrentSection#
]
;开机过程中,当电脑连接到互联网时返回 1,否则返回-1
[MS联网与否]
Measure=SysInfo
SysInfoType=INTERNET_CONNECTIVITY
SysInfoData=Best
OnChangeAction=[!EnableMeasure MS打开皮肤]
[MS打开皮肤]
Measure=Plugin
Plugin=SysInfo
SysInfoType=INTERNET_CONNECTIVITY
Disabled=1
IfCondition=
#CurrentSection#
=1
IfTrueAction=[!ActivateConfig "Weather" "Weather.ini"][!DisableMeasure
#CurrentSection#
]
IfCondition2=
#CurrentSection#
=-1
IfTrueAction2=[!DeactivateConfig "Weather" "Weather.ini"][!DisableMeasure
#CurrentSection#
]
;加在天气皮肤上的代码:
;+++++++++++++
;当开机时防止判断有无网络
[MS联网]
Measure=SysInfo
SysInfoType=INTERNET_CONNECTIVITY
SysInfoData=Best
;Disabled=0
IfCondition=
#CurrentSection#
=1
IfTrueAction=[!ActivateConfig "Weather" "Weather.ini"][!DisableMeasure
#CurrentSection#
]
IfCondition2=
#CurrentSection#
=-1
IfTrueAction2=[!DeactivateConfig "Weather" "Weather.ini"][!DisableMeasure
#CurrentSection#
]
经过多种断网和有网情况下的测试,以上代码都添加后,才能确保,开机情况下,是否断网;开机时有无网络,天气皮肤正常显示或隐藏。
现在出现的问题是有时关机时,弹出“内存溢出……”的报警提示。
2022年11月15日 00点11分 1
level 7
@somi 大神,帮忙看一下,是不是哪里的代码,一直在循环执行,没有结束,导致了内存溢出。我看了任务管理器的内存占有率在13%左右,也不算高。
2022年11月15日 00点11分 2
你将[MS联网与否]和[MS打开皮肤]加到别的皮肤里面去,不要加到想关闭打开的那个皮肤里
2022年11月15日 08点11分
作的(关闭或打开)皮肤不用加东西
2022年11月15日 08点11分
level 9
就加下面的到别的皮肤里就行了:
;开机过程中,当电脑连接到互联网时返回 1,否则返回-1
[MS联网与否]
Measure=SysInfo
SysInfoType=INTERNET_CONNECTIVITY
SysInfoData=Best
OnChangeAction=[!EnableMeasure MS打开皮肤]
[MS打开皮肤]
Measure=Plugin
Plugin=SysInfo
SysInfoType=INTERNET_CONNECTIVITY
Disabled=1
IfCondition=
#CurrentSection#
=1
IfTrueAction=[!ActivateConfig "Weather" "Weather.ini"][!DisableMeasure
#CurrentSection#
]
IfCondition2=
#CurrentSection#
=-1
IfTrueAction2=[!DeactivateConfig "Weather" "Weather.ini"][!DisableMeasure
#CurrentSection#
]
2022年11月15日 08点11分 3
上面的SysInfoData=Best那一行应该可以删除掉,因为这个是默认值,写不写也是Best
2022年11月15日 09点11分
level 9
你上面的 关闭皮肤的指令 !DeactivateConfig 写法好像不对,
用法应该是这样的
[!DeactivateConfig "
#RootConfig#
\提示"]
[!DeactivateConfig "
#CurrentConfig#
"]
上面是我的皮肤里用到的写法,其中

#RootConfig#
= Skins文件夹下包含当前皮肤的第一级子文件夹的名字,如 “天气”、“网络”等(例子中的“天气”和“网络”是Skins下的两个文件夹名)

#CurrentConfig#
= 当前皮肤的配置名,如 “系统\天气”(Skins下有系统这个文件夹,而系统文件夹里有天气这个文件夹)
2022年11月15日 08点11分 4
level 9
经过测试,关闭打开完全没问题,
如我有两皮肤:
skins\系统\网络\网络.ini
skins\TTTTTest\测试.ini
想在联网或断网时自动打开或关闭 测试.ini 皮肤
那么就在 skins\系统\网络 皮肤里加以下代码(不是在 TTTTTest 皮肤里加):
[MS联网与否]
Measure=SysInfo
SysInfoType=INTERNET_CONNECTIVITY
SysInfoData=Best
OnChangeAction=[!EnableMeasure MS打开皮肤]
[MS打开皮肤]
Measure=Plugin
Plugin=SysInfo
SysInfoType=INTERNET_CONNECTIVITY
Disabled=1
IfCondition=
#CurrentSection#
=1
IfTrueAction=[!ActivateConfig "TTTTTest" "测试.ini"][!DisableMeasure
#CurrentSection#
]
IfCondition2=
#CurrentSection#
=-1
IfTrueAction2=[!DeactivateConfig "TTTTTest"][!DisableMeasure
#CurrentSection#
]
2022年11月15日 09点11分 5
[MS打开皮肤]下面的两行删除掉,改成Measure=SysInfo,因为它已是从一个插件变成一个内置的功能了
2022年11月15日 09点11分
level 9
思路就是:
[MS联网与否]发生变化时,使得[MS打开皮肤]运行,
当[MS打开皮肤]=1时(联网),打开指定皮肤,
并禁用自己,当[MS打开皮肤]=-1时(断网),关闭指定皮肤,并禁用自己。
在[MS联网与否]的值未发生变化前,[MS打开皮肤]是不会运行的,
也就是那些关闭动作是不会自己运行的,只有断网或联网的那个时候,按条件运行一次,
也因此,上面的代码没有死循环,不会造成CPu或内存的额外占用
2022年11月15日 09点11分 6
level 7
问题是
如果开机状态突然断网,天气皮肤被关闭,这时电脑重启,这期间,网络恢复,开机后,天气皮肤并不能被激活,还处在关闭状态,除非手动刷新。
2022年11月15日 13点11分 7
level 7
如果有网状态下重启电脑,这时正好网络断开,开机后也无网络,这时的天气皮肤不会被关闭,除非手动刷新。
2022年11月15日 14点11分 8
level 7
这就是为啥要在天气皮肤里面加自身判断的原因,因开关机未进入桌面的状态下,网络连接的变化,无法激活MS联网与否。
2022年11月15日 14点11分 9
level 7
皮肤里面添加什么语句,能让皮肤开机后,自动更新一次,只需要更新一次,这样可以激活判断网络有无。现在的update=1000,只是刷新数据,皮肤自身没有更新。
2022年11月15日 14点11分 10
其实开机皮肤加载时就已经自动更新了一次了,之所以出现不能关闭皮肤,应该是因为操作皮肤比天气皮肤早打开了,操作皮肤打开--判断没有网络--关闭并没有打开的天气皮肤---随后天气皮肤自己打开--操作皮肤直到网络状态发生变化时才再次动作
2022年11月16日 10点11分
OnRefreshAction=,当皮肤加载或刷新时的动作
2022年11月16日 10点11分
level 9
如果这样的话,那就将上面那段加到别的皮肤的代码所做的动作一分为二,没网络时让天气皮肤干掉自己,联网时让别的皮肤打开它
别的皮肤加:
[MS联网与否]
Measure=SysInfo
SysInfoType=INTERNET_CONNECTIVITY
OnChangeAction=[!EnableMeasure MS打开皮肤]
[MS打开皮肤]
Measure=Plugin
Plugin=SysInfo
SysInfoType=INTERNET_CONNECTIVITY
Disabled=1
IfCondition=
#CurrentSection#
=1
IfTrueAction=[!ActivateConfig "TTTTTest" "测试.ini"][!DisableMeasure
#CurrentSection#
]
天气皮肤加:
[MS自动关闭]
Measure=SysInfo
SysInfoType=INTERNET_CONNECTIVITY
IfEqualValue=-1
IfEqualAction=[!DeactivateConfig "TTTTTest"]
2022年11月16日 05点11分 11
再次感谢解答。还有就是,皮肤在桌面上,不能自动同步更新信息,要手动刷新,比如墨迹天气网站上显示是12:00更新的,但桌面上还是上午9点, 皮肤里面的[Rainmeter] Update=1000 这段代码好像不能刷新天气数据,怎么才能够同步更新?
2022年11月18日 05点11分
@吉祥_如意_Love Update=1000那个是整合皮肤的更新频率,获取网上信息的是Measure=WebParser,下面带有UpdateRate=的就是天气信息更新频率,这个UpdateRate的值不宜设得太小,要不然有可能会被网站认为是恶意访问,一般设在5或10分钟或以上,应是可接受的(要换算成秒,即300、600,或更大)
2022年11月18日 06点11分
@吉祥_如意_Love 还有一个可能就是在显示天气信息的Meter里加了UpdateDivider=-1,即使信息有变化,所在Meter也是不会更新的
2022年11月18日 06点11分
level 7
@somi 大神帮忙看一下个问题:
我想把墨迹天气上的天气图片下载下来,按照网站上图片的名称下载到本地文件夹中,看看哪里有问题
+++++++++++
<li >
<span class="week">周五</span>
<span class="wea">多云</span>
<span class="weai">
<img
src="
"
alt="多云">
</span>
+++++++++++++
以上是墨迹天气天气的网页代码,
+++++++++++++
我写了以下内容来获取
+++++++++++++
[MeasureDay1Url];获取墨迹天气图标
Measure=Plugin
Plugin=WebParser.dll
URL=[Measure5Days]
StringIndex=1
Substitute=“https://h5tq.moji.com/tianqi/assets/images/weather/”:“” ;替换到前面的网址内容,只保留图片名称。
[MeasureDay1Icon];下载获取的墨迹天气图标
Measure=Plugin
Plugin=WebParser.dll
URL=[Measure5Days]
StringIndex=1
Header=Cache-Control: no-cache
Download=1
DownloadFile=
#MeasureDay1Url#
;现在就是这个天气图片的名称获取不到,例如w1.png。
2022年11月19日 05点11分 12
level 7
主要目的是让程序读取本地对应名称的天气图片,而不是用网站上的。
2022年11月19日 07点11分 13
level 7
就是不想用墨迹网站自带的天气图片,想换成自己本地的天气图片。
2022年11月19日 07点11分 14
level 9
看上面的意思,你是想将五天的天气图片都显示为电脑上对应的天气图片吧?
上面的[MeasureDay1Icon] 加了个Download=1,是用来下载图片的,
如果想获取字符,如"n01"或"多云"(n01.png中的n01),
假设你的 [Measure5Days] 获得的内容是:
***<img src="网址/no1.png" alt="多云">***<img src="网址/no2.png" alt="晴">***<img src="网址/no1.png" alt="多云">***。。。
那修改一下[Measure5Days]的RegExp正则表达式,
改成
RegExp=***<img src="网址/(.*).png" alt="多云">***<img src="网址/(.*).png" alt="晴">***<img src="网址/(.*).png" alt="多云">**
;获取的墨迹天气图标序号
[MeasureDay1Icon]
Measure=Plugin
Plugin=WebParser.dll
URL=[Measure5Days]
StringIndex=是第几个(.*)就写几
。。。
。。。
然后就是显示出来:
[MeterImage]
Meter=Image
MeasureName=MeasureDay1Icon
ImageName=图片所在文件夹\%1.png
大概是这样子吧,如果你的图片是以“多云”、“晴”等命名,那么
<img src="网址/(.*).png" alt="多云">
就要改成
<img src="网址/XXX.png" alt="(.*)">
别太贪心,这样的天气皮肤,天气预报信息获得三天就好,建议只取两天的信息,要不然到时网站源代码一变,改到你头痛
2022年11月19日 11点11分 15
somi大神再帮忙看一下后面的问题
2022年11月20日 16点11分
somi在吗?帮忙看一下下面的问题,谢谢
2022年11月21日 03点11分
1 2 尾页