2016-10-05 15 views
0

PROBLEM
Я использую плагин Process (https://docs.rainmeter.net/manual/plugins/process/), чтобы определить, какие службы работают в моей системе.
Мой выходной ток:
enter image description hereКак изменить счетчики или переменные на основе значения, которое возвращается плагин PROCESS?

Значения (вкл/выкл) изменить соответствующим образом, но я также хочу, чтобы изменить цвет текста на основе значения, возвращенного. Вот пример, который работает на моей системе (arrow.png имеет красный оттенок, когда значение меры принимаютс):
enter image description here

Согласно статье, что я читал на форумах Rainmeter (https://forum.rainmeter.net/viewtopic.php?t=3335), лучший подход был добавить цвет шрифта в качестве переменной, а затем изменить его следующим образом:

[Variables] 
indicatorText=255,255,255,100 

;___SQL SERVER___ 
    [measureSQL] 
    Measure=Plugin 
    Plugin=Process.dll 
    ProcessName=sqlservr.exe 
    StringIndex=1 
    Substitute="-1":"OFF","1":"ON" 

    [measureSQLindicator] 
    Measure=Calc 
    Formula=[measureSQL] 
    ;should change text color to green 
    IfAboveValue=0 
    IfAboveAction=!RainmeterSetVariable indicatorText 51,255,0 

    [styleTextRight] 
    StringCase=None 
    stringalign=Right 
    StringStyle=Bold 
    StringEffect=Shadow 
    FontEffectColor=0,0,0,20 
    FontColor=#indicatorText# 

;___SQL___ 
    [meterSQL] 
    Meter=String 
    MeasureName=measureSQL 
    MeterStyle=styleTextLeft 
    X=15 
    Y=40 
    W=97 
    H=60 
    Text="SQL Server" 

    [meterSQLValue] 
    Meter=String 
    MeasureName=measureSQL 
    MeterStyle=styleTextRight 
    X=195 
    Y=40 
    W=97 
    H=60 
    Text="%1" 

Я знаю, что «-1» и «1» возвращается плагином процесса являются строками и должны быть преобразованы к типу INT в порядке чтобы быть распознанным операторами if, но все, что я пробовал, не изменило цвет. (В том числе и этот код)

ВОПРОС
Как я могу сделать значение, возвращаемое плагиным Process («-1», «1») возвращают в виде целых чисел, так что они могут быть признаны моими, если заявления ?
Или есть лучший способ изменить цвет текста в Rainmeter?

+0

Дайте ему попробовать с 'Dynamic Variable' [ссылка] (https://docs.rainmeter.net/manual/variables/#DynamicVariables). Строковые типы обычно автоматически обнаруживаются и преобразуются по мере необходимости – thatsIch

ответ

1

Возможно, вы перешли от этого вопроса, но вот мой ответ.

Вы были на правильном пути. Проблема заключалась в том, что в measureSQL вы заменяли -1 и 1 на ON и OFF, которые AboveValue не могут измерить. Я удалил Substitute и AboveValue и заменил их IfCondition и двумя MeterStyle s. MeterStyle s заменяет необходимость в переменной, поэтому вам не нужно использовать DynamicVariable с.

[MeasureSQLStatus] 
Measure=Plugin 
Plugin=Process.dll 
ProcessName=sqlservr.exe 

[ToggleSQLStatusText] 
Measure=Calc 
Formula=[measureSQL] 
;should change text color to green 
IfCondition=MeasureSQLStatus > 0 

IfTrueAction=[!SetOption ProcessStatusText MeterStyle styleONText] 
IfFalseAction=[!SetOption ProcessStatusText MeterStyle styleOFFText] 

[StyleONText] 
FontColor=51,255,0,255 
Text="ON" 

[StyleOFFText] 
FontColor=255,255,255,100 
Text="OFF" 

[ProcessNameText] 
Meter=String 
MeasureName=measureSQL 
MeterStyle=styleTextLeft 
X=15 
Y=40 
W=97 
H=60 
Text="SQL Server" 

[ProcessStatusText] 
Meter=String 
StringCase=None 
stringalign=Right 
StringStyle=Bold 
StringEffect=Shadow 
FontEffectColor=0,0,0,20 

X=195 
Y=40 
W=97 
H=60 
+0

Спасибо за ответ! Я пробую попробовать, когда вернусь в офис завтра. – ITSUUUUUH

+0

Это работает отлично! Я обнаружил, что моя основная проблема в обновлении цвета текста заключалась в том, что я устанавливал константу в самом измерителе, и я не думаю, что он смог эффективно обновить это значение. – ITSUUUUUH