按键精灵PC版代码示例
<p>将以下代码复制到脚本代码的顶部,替换<code>RParamUrl</code>为你的获取参数API网址。<code>MiaoCode</code>保存喵码,喵码通常由用户提供。</p>
<pre><code class="language-vb">DimEnv RParamUrl, MiaoCode, RParamJson
//获取参数API网址
RParamUrl = &quot;http://miaotixing.com/rparam?rp=rp-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&amp;code=&quot;
//喵码,通常由用户输入提供
MiaoCode = &quot;txxxxxx&quot;
//API返回的数据
RParamJson = &quot;{}&quot;
//拉取参数数据到变量RParamJson。需要注意:参数有缓存,缓存失效后才能拿到用户填写的最新参数。
Function LoadRParam()
ApiUrl = RParamUrl &amp; MiaoCode &amp; &quot;&amp;type=json&quot;
Set objXML = CreateObject(&quot;Microsoft.XMLHTTP&quot;)
objXML.Open &quot;Get&quot;, ApiUrl, False
objXML.send
//TracePrint &quot;RParam API 网址:&quot; &amp; ApiUrl
//TracePrint &quot;RParam API 返回:&quot; &amp; objXML.responseText
RParamJson = objXML.responseText
Set objXML = Nothing
End Function
//读取参数key的值,如果key不存在则返回defValue
Function RParam(key, defValue)
Set jsonData = CreateObject(&quot;MSScriptControl.ScriptControl&quot;)
jsonData.Language = &quot;JScript&quot;
jsonData.AddCode &quot;var data = &quot; &amp; RParamJson &amp; &quot;;&quot;
If jsonData.Eval(&quot;data.&quot; &amp; key &amp; &quot; !== undefined&quot;) Then
RParam = jsonData.Eval(&quot;data.&quot; &amp; key)
Else
RParam = defValue
End If
Set jsonData = Nothing
End Function</code></pre>
<p>拉取参数时,通过<code>Call LoadRParam()</code>方式,参数数据会保存到变量RParamJson,供后面读取参数时候使用。
读取参数时,通过<code>RParam(key, defValue)</code>方式读取指定key的参数;特殊情况下我们会担心指定key的参数获取失败而影响脚本运行,比如发布新版时候不慎删除某个有用的key,而defValue参数的作用是发现key参数不存在时,以defValue值作为参数值返回。</p>
<pre><code class="language-vb">//拉取参数
Call LoadRParam()
//返回key为submited_at的参数值,如果不存在该参数,则返回0
TracePrint &quot;submited_at : &quot; &amp; RParam(&quot;submited_at&quot;, 0)
//返回key为key1的参数值,如果不存在该参数,则返回123
TracePrint &quot;key1 : &quot; &amp; RParam(&quot;key1&quot;, 123)</code></pre>
<p>如果脚本有界面,希望获取到的新参数同步修改界面,可以把新参数回写到界面。
例如,窗口Form1有一个名为InputBox1的输入框,希望该输入框的内容与参数key1参数同步。</p>
<pre><code class="language-vb">//返回key为key1的参数值,如果不存在该参数,则返回 Form1.InputBox1.Text 的内容
//最终返回的内容又更新到 Form1.InputBox1.Text
Form1.InputBox1.Text = RParam(&quot;key1&quot;, Form1.InputBox1.Text)</code></pre>