言
前天有個學員問“自己寫安卓按鍵的插件該學些什么?”
這個問題我解決起來也比較困難,因為我對按鍵插件也不精通,只會個皮毛,只能講一下基礎內容。
一、安卓按鍵插件是什么編程語言
安卓按鍵的插件是基于lua語言編寫的。
想要寫好一個插件,首先要學會lua的基本語法,這里推薦學習教程
https://www.runoob.com/lua/lua-tutorial.html
二、按鍵插件都包括什么內容
通常完整的插件是由3個文件組成的。
插件名.lua
插件名.info
插件名.html
①、lua文件
lua文件是插件的功能文件,插件包含的所有命令代碼都在這個文件里面,這個文件是必不可少的,而其他兩個文件是可以省略的。
②、info文件
info文件是給插件增加描述的,讓用戶能夠知道插件命令是干什么用的。
沒有info文件的插件:
有info文件的插件:
info文件增加為插件增加名稱,為命令增加名稱,還能在寫代碼時增加命令使用方法的描述。
雖然info文件在命令功能上沒有任何作用(有沒有info文件插件都能正常使用),但是info文件能讓插件看起來更完整,使用插件時查找命令更方便。
③、html文件
html文件是網頁文件,是詳細介紹插件每個命令的網頁,一般包括命令的功能,命令的參數介紹,返回值介紹,還有提供命令使用例子的代碼。
關于info文件和html文件的編寫,網上有現成的工具,另外就是可以參照現有插件的info文件和html文件,在其源文件上修改。
三、插件的存放位置
插件想要正常使用,必須要放在指定文件夾:
按鍵助手安裝目錄/plugin文件夾,只需要把lua文件、info文件、html文件復制到這個文件夾,然后刷新按鍵助手的插件列表就可以使用插件了。
四、插件的編寫
在熟悉了lua語言的基本語法后,就可以編寫插件了,首先說一下插件的基本格式:
在lua文件中,想要做一個按鍵能用的插件,就必須要是以 QMPlugin 作為前綴的函數,也就是告訴按鍵,這個lua函數是按鍵插件。
寫法有兩種
①、以QMplugin為前綴直接定義函數
function QMPlugin.new()
end
②、對現有的lua函數,直接通過等于號賦值給以QMplugin前綴的函數。
function new()
end
QMPlugin.new=new
說一下基本格式:
function QMPlugin.new()
local iRet, sRet=pcall(function()
--插件的功能區
--return 函數返回值
end)
if iRet==true then
return sRet
else
print(sRet)
return ""
end
end
代碼中pcall后面的函數是插件的核心功能。
local iRet, sRet=pcall(function()
--插件的功能區
end)
為啥要用pcall執行函數?
是為了對函數錯誤處理,可以保證即便插件函數出錯了,也不會引起按鍵異常,可以理解為插件的異常保護機制。
local iRet, sRet
定義兩個變量的作用:
iRet 存儲pcall執行的函數是否正常,類型布爾值
sRet 存儲函數的返回值(return)
后續在根據 iRet 的布爾值判斷是否輸出插件的返回值。
五、LuaAuxLib 按鍵精靈lua庫
按鍵精靈自帶lua庫的命令,這里我就不復制了,直接提供大家一個網址,大家自己去查看把。
https://blog.csdn.net/mr_oldcold/article/details/84328296
使用方法是在命令前面加上luaAuxLib前綴
function print(...)
LuaAuxLib.TracePrint(...)
end
六、怎么學習制作插件
①、熟悉lua的基本語法
②、參照現成的插件
插件分成加密插件(后綴 .luae)和非加密插件(后綴 .lua),對于沒有加密的插件,我可以直接打開源文件,比如file.lua 、shanhai.lua,只要不是luae后綴的文件,都可以使用文本打開。
參考別人的寫法,自己模仿去寫,遇到不會的功能可以在搜索lua相關的知識。
=正文完=
更多內容進主頁查看往期文章
豬腳本(原飛豬腳本)以按鍵精靈教學為主,涉及UiBot,Python,Lua等腳本編程語言,教學包括全自動辦公腳本,游戲輔助腳本,引流腳本,網頁腳本,安卓腳本,IOS腳本,注冊腳本,點贊腳本,閱讀腳本以及網賺腳本等各個領域。想學習按鍵精靈的朋友可以添加金豬腳本粉絲交流群:554127455 學習路上不再孤單,金豬腳本伴你一同成長.
1.什么是網頁元素特征字符串?
請參考網頁特征字符串詳解;
2.Html系列命令
2.1.HtmlSelect命令
1)HtmlSelect命令只能夠根據Select項的值來進行選擇,注意這里不是顯示在Select項上的文字,而是該項的value。
一個典型的下拉框HTML代碼如下:
<select name="city">
<option value="1">北京</option>
<option value="2">上海</option>
<option value="3">廣州</option>
</select>
這里如果要選擇上海,需要選擇值為2的項;
2)級聯的下拉列表組合。
在有的網頁中,會有幾個級聯的下拉列表,后一個下拉框會隨前一個框的值變化而發生變化,典型的有注冊頁面上的省份城市選擇,HtmlSelect命令能夠觸發Onchange事件,會導致后一個下拉框值發生變化,但是如果執行腳本太快,而導致后一個未能選中正確的值,可以在前一個HtmlSelect后加上適當的延時;
3)多選表單中的列表控件;有的列表支持多選,在有一些個求職網站中,職業是可以多選的,這時候可以用%將多個需要選擇的值連接起來傳遞給HtmlSelect命令實現多選;
2.2.HtmlExists命令
HtmlExists命令,能夠判斷指定特征的元素是否存在,并能夠返回具備該特征的元素的個數。這個命令能夠用來判斷某個元素是否存在,如果為0證明不存在;
2.3.HtmlGet命令
HtmlGet命令比較復雜,但是功能也非常強大,該命令具備兩個參數,第一個參數為獲取類型,目前支持的值如下所示:
序號 值 適用對象
1 text 得到指定元素的文本值,對應DOM屬性innerText
2 html 得到指定元素內部的HTML代碼,對應DOM屬性innerHTML
3 outerHtml 得到元素整體的HTML代碼,對應DOM屬性的outerHTML
4 value 得到元素的Value值,用于獲取表單元素內部的值
5 src 得到圖像元素的src屬性,用于IMG標簽對象
6 href 得到鏈接元素的鏈接地址,用于A標簽
7 …其他名稱 其他屬性,如果您使用的是合法的屬性名稱,就能夠返回對應的值。如何才是合法的屬性?請參閱HTML標準。
第二個參數為特征字符串,如果匹配多個,只能返回第一個元素的值;
例如,獲得淘寶貨物價格:
Plugin price=Web.HtmlGet("text","id:id_Price")
獲取某個表單文本的值
Plugin email=Web.HtmlGet("value","name:Email")
2.4.RunJS命令
RunJS命令提供了直接運行Javascript的功能,如果您對JS非常熟悉,就能夠極大的擴展WQM的功能。
RunJS命令支持兩中執行方式,第一個參數設置為0時,能夠執行一段沒有返回值的Javascript,
例如:
RunJS(0,"alert('hello');")
第一個參數設置為1時,能執行一段js并返回由return語句返回的值,返回值為字符串類型;
例如:返回Html文檔的title;
RunJS(1,"var t=document.title;return t;")
如果您分析到網頁中某個按鈕實際上就是執行了一個函數,例如
<input type="Button" … />
您就可以直接調用
RunJS(0,"dosomething();")
JQuery的支持,網頁按鍵精靈集成了Jquery1.3.2,為了不與其他JQ的庫發生沖突,使用了wqmjq來代替$操作符,如果您需要直接使用JQ來操作網頁,可使用wqmjq來執行Jquery語句:
RunJS(0,"wqmjq('#test').click();")
豬腳本(原飛豬腳本)以按鍵精靈教學為主,涉及UiBot,Python,Lua等腳本編程語言,教學包括全自動辦公腳本,游戲輔助腳本,引流腳本,網頁腳本,安卓腳本,IOS腳本,注冊腳本,點贊腳本,閱讀腳本以及網賺腳本等各個領域。想學習按鍵精靈的朋友可以添加金豬腳本粉絲交流群:554127455 學習路上不再孤單,金豬腳本伴你一同成長.
1.什么是網頁元素特征字符串?
請參考網頁特征字符串詳解;
2.Html系列命令
2.1.HtmlSelect命令
1)HtmlSelect命令只能夠根據Select項的值來進行選擇,注意這里不是顯示在Select項上的文字,而是該項的value。
一個典型的下拉框HTML代碼如下:
<select name="city">
<option value="1">北京</option>
<option value="2">上海</option>
<option value="3">廣州</option>
</select>
這里如果要選擇上海,需要選擇值為2的項;
2)級聯的下拉列表組合。
在有的網頁中,會有幾個級聯的下拉列表,后一個下拉框會隨前一個框的值變化而發生變化,典型的有注冊頁面上的省份城市選擇,HtmlSelect命令能夠觸發Onchange事件,會導致后一個下拉框值發生變化,但是如果執行腳本太快,而導致后一個未能選中正確的值,可以在前一個HtmlSelect后加上適當的延時;
3)多選表單中的列表控件;有的列表支持多選,在有一些個求職網站中,職業是可以多選的,這時候可以用%將多個需要選擇的值連接起來傳遞給HtmlSelect命令實現多選;
2.2.HtmlExists命令
HtmlExists命令,能夠判斷指定特征的元素是否存在,并能夠返回具備該特征的元素的個數。這個命令能夠用來判斷某個元素是否存在,如果為0證明不存在;
2.3.HtmlGet命令
HtmlGet命令比較復雜,但是功能也非常強大,該命令具備兩個參數,第一個參數為獲取類型,目前支持的值如下所示:
序號 值 適用對象
1 text 得到指定元素的文本值,對應DOM屬性innerText
2 html 得到指定元素內部的HTML代碼,對應DOM屬性innerHTML
3 outerHtml 得到元素整體的HTML代碼,對應DOM屬性的outerHTML
4 value 得到元素的Value值,用于獲取表單元素內部的值
5 src 得到圖像元素的src屬性,用于IMG標簽對象
6 href 得到鏈接元素的鏈接地址,用于A標簽
7 …其他名稱 其他屬性,如果您使用的是合法的屬性名稱,就能夠返回對應的值。如何才是合法的屬性?請參閱HTML標準。
第二個參數為特征字符串,如果匹配多個,只能返回第一個元素的值;
例如,獲得淘寶貨物價格:
Plugin price=Web.HtmlGet("text","id:id_Price")
獲取某個表單文本的值
Plugin email=Web.HtmlGet("value","name:Email")
2.4.RunJS命令
RunJS命令提供了直接運行Javascript的功能,如果您對JS非常熟悉,就能夠極大的擴展WQM的功能。
RunJS命令支持兩中執行方式,第一個參數設置為0時,能夠執行一段沒有返回值的Javascript,
例如:
RunJS(0,"alert('hello');")
第一個參數設置為1時,能執行一段js并返回由return語句返回的值,返回值為字符串類型;
例如:返回Html文檔的title;
RunJS(1,"var t=document.title;return t;")
如果您分析到網頁中某個按鈕實際上就是執行了一個函數,例如
<input type="Button" … />
您就可以直接調用
RunJS(0,"dosomething();")
JQuery的支持,網頁按鍵精靈集成了Jquery1.3.2,為了不與其他JQ的庫發生沖突,使用了wqmjq來代替$操作符,如果您需要直接使用JQ來操作網頁,可使用wqmjq來執行Jquery語句:
*請認真填寫需求信息,我們會在24小時內與您取得聯系。