按鍵精靈Q語言基礎


一、數據類型
1.1數據類型
可以表示一切的類型variant
邏輯類型:boolean (true,false)
數學類型:
整數:byte(0-255),integer(-32768-32767),long(-21億-21億)
小數:single,double,currency(貨幣類型,包含4位小數,-922337203685477.5808-922337203685477.5807)
文字類型:string
時間類型:Date(Time)
其他類型:null(空)empty(已撤銷或未初始化)object(任何對象)

1.2類型轉換
"123"+"456"="123456"
"123"+456=579
true→-1 flase→0
命令:(強制轉換)
cbool,cbyte,cint,clong,csng,cdbl,ccur,cdate,cstr
數學類型轉布爾類型,非0為真

1.3數據的表示
邏輯類型:true,flase
數學類型:
整數:123456
小數:3.1415926
八進制:&o12345
十六進制:&H1A2B3(&H前綴)
E數:3.14E10
文字類型:“”
時間類型:
緊湊的數據,2014/6/5 22:25:00 TracePrint now()
格式化 ##之間填入 例:#1/1/2000 02:25:00#
特例:TracePrint cdate(1/1/2000 02:25:00)
命令:Hex轉十六進制 Oct轉八進制

二、語言規范
命名規則:
標識符必須唯一
標識符只允許由字母或漢字開頭
標識符由字母、漢字、數字、下划線組成
標識符含字母的情況下不區分大小寫
標識符最長允許255字符,中文不超過59個字
標識符不可以與關鍵字相同
語法與詞法:
注釋://后面,'后面,/*中間*/
定義:Dim定義變量,Dim aa(10)定義數組,Const定義常量
表達式:結果=表達式,+-*/
命令:call 命令名字(參數),命令名 參數,結果=命令名(參數)

運算符:
數學運算:+-*/\(整數除法)^ mod(余數)
文字運算:+ &(文字拼貼)
邏輯運算:=<> > < >= <= and與 or或 xor異或 eqv等價 imp蘊含
一元運算:-負數 not非
數組:Dim a(5) //和其他語言不一樣,有6個
a=array(0,1,2,3,5,8)
UBonund(a)+1獲得數組下標
動態數組:Dim a()
ReDim a(2) //之前數據清楚
ReDim Preserve a(5) //保留之前數據

三、語句
3.1結構化語句 上下行能產生關聯的語句被成為結構化語句。
順序結構 跳轉結構 選擇結構 循環結構

Rem 標記命令,可做注釋,也可以做Goto跳轉的標記
3.2If語句
If 1+1=2 Then
TracePrint "表達式成立"
Else
TracePrint "不成立"
End If
單行: If 1+1=2 Then TracePrint "表達式成立"
3.3Select語句 只執行一個case塊
Select Case 表達式
Case 值
語句塊
……
Case Else

End Select
3.4For語句
For 次數
語句塊
Next

For i=2 To 4 Step 1 不寫Step默認為1
語句塊
Next
3.5Do語句
Do
語句塊
Loop

Do While 條件表達式
語句塊
Loop

Do Util 條件
語句塊
Loop

Do
語句塊
Loop While 條件

Do
語句塊
Loop Util 條件

3.6命令的幾種寫法
標識符
標識符 參數1,參數2,……
Call 標識符(參數1,參數2,……)
Call 標識符()
標識符=標識符(參數1,參數2,……)
TracePrint 標識符(參數1,參數2,……)

3.7子過程
Sub 標識符(參數,參數...)
代碼塊
End Sub

3.8函數 //函數可以有返回值,子過程不可以
Function 標識符(參數,參數...)
代碼塊
End Function

四、前台
4.1前台鼠標命令
MoveTo 100,200 //把鼠標移動到(100,200)這個點上
MoveR 200,300 //之后,鼠標就被移到了(100+200,100+300)處,也就是坐標(300,400)處
LeftClick 5 //在當前鼠標的位置單擊鼠標左鍵5次
LeftDown 1 //在當前鼠標的位置按下鼠標左鍵
LeftUp 1 //在當前鼠標的位置彈起鼠標左鍵
LeftDoubleClick 5 //在當前鼠標的位置雙擊鼠標左鍵5次
RightClick 5
RightDown 1
RightUp 1
RightDoubleClick 5
MiddleClick 5 //在當前鼠標的位置單擊鼠標中鍵5次
MouseWheel 1 //把鼠標滾輪向上滾動1格
LockMouse //鎖定鼠標位置
UnlockMouse //解除鎖定鼠標位置
WaitClick //按任意鼠標鍵繼續 左鍵32769(按下) 右鍵32773(按下) 滾輪32777(按下)
GetLastClick //檢測上次按過的鼠標鍵 左鍵32770(彈起) 右鍵32774(彈起) 滾輪32778(彈起)
GetCursorPos mx,my //把當前鼠標位置的x和y坐標放在變量mx和my中
GetCursorShape // 得到當前鼠標的形狀特征
SetSimMode //設置模擬方式(0普通|1硬件|2超級)
4.1前台鍵盤命令
KeyPress 65,1 //65是A鍵的按鍵碼,上面的語句表示按A鍵1次
KeyDown 65,1 // 鍵盤按住A鍵1次
KeyUp 65,1 //松開A鍵1次
Key=WaitKey()
Key=GetLastKey() //檢測上次按鍵
4.2前台找圖命令
FindPic //在屏幕區域查找指定相似度的圖片
FindPic 左上角x坐標,左上角y坐標,右下角x,右下角y,bmp格式圖片路徑,相似度,返回x,返回y
If intX>=0 Then
代碼
End If
路徑: 24位位圖
絕對路徑 c:\Windows\notepad.exe
相對路徑 .\當前路徑 ..\上一級
附件 Attachment:\
分辨率 Plugin.Sys.GetScRX Plugin.Sys.GetScRY

透明色找圖
等圖找多圖
Function 找多圖(圖片路徑)
圖片=Split(圖片路徑,"|")
For i=0 To ubound(圖片)
FindPic 0,0,Plugin.Sys.GetScRX-1,Plugin.Sys.GetScRY-1,"Attachment:\"& 圖片路徑,1,intX,intY
If IntX>=0 Then
找多圖 = i+1
Exit For
End If
Next
End Function
4.3前台顏色命令
cr1=GetPixelColor(x,y) 得到指定點顏色
FindColor 0,0,800,600,"0000FF",x,y 找色
FindCenterColor //在屏幕區域從中心開始查找指定的顏色
FindColorEx 0,0,800,600,"0000FF",查找方式,0.8,x,y //在屏幕區域模糊查找指定的顏色,//查找方式。0為從上往下,從左往右找;1為從中心往外圍找
4.4其他命令
Delay 延遲多少毫秒
MsgBox 彈出對話框
InputBox 彈出窗口,返回輸入
TracePrint 調試輸出
SayString 輸入文字
PutAttachment 把當前腳本包含的附件展開到指定的路徑下
RunApp "notepad.exe" 啟動一個程序或者打開一個文件
ExitScript 腳本退出運行
RestartScript 重新啟動腳本運行
4.5窗口
窗口句柄=Plugin.Window.Find("Notepad", 0) //查找窗口類名("Notepad")或者標題(0),返回找到的句柄Hwnd
窗口句柄=Plugin.Window.Search("記事本") //遍歷符合窗口標題("記事本")的句柄保存到數組(HwndEx)里
窗口句柄=Plugin.Window.Foreground() //得到當前最前面的窗口句柄
窗口句柄=Plugin.Window.MousePoint() //下面這句是得到鼠標指向的窗口句柄
Call Plugin.Window.Active(窗口句柄) //激活窗口
Call Plugin.Window.Max(窗口句柄) //最大化
Call Plugin.Window.Min(窗口句柄) //最小化
Call Plugin.Window.Restore(窗口句柄) //還原窗口
Call Plugin.Window.Close(窗口句柄) //關閉窗口
Call Plugin.Window.Show(窗口句柄) //顯示窗口
Call Plugin.Window.Hide(窗口句柄) //隱藏窗口
Call Plugin.Window.Top(窗口句柄,0) //置頂或取消置前,0=(置前),1=(取消置前)
Call Plugin.Window.Move(窗口句柄,橫坐標,縱坐標) //移動窗口
Call Plugin.Window.Size(窗口句柄,寬度,高度) //改變窗口大小
窗口標題=Plugin.Window.GetText(窗口句柄) //得到標題
Call Plugin.Window.SetText(窗口句柄,"新標題") //設置標題
窗口類名=Plugin.Window.GetClass(窗口句柄) //得到類名
文件路徑=Plugin.Window.GetExePath(窗口句柄) //得到程序文件路徑
窗口矩形=Plugin.Window.GetWindowRect(窗口句柄) //得到窗口所在屏幕的矩形
客戶區矩形=Plugin.Window.GetClientRect(窗口句柄) //得到窗口客戶區所在屏幕的矩形
Call Plugin.Window.SetClentSize(窗口句柄,寬度,高度) //改變窗口客戶區大小
Call Plugin.Window.SendString(窗口句柄,輸入文本) //為指定窗口輸入字符串

五、后台
前台操作,就是直接模擬設備向操作系統發送動作,由操作系統報告給窗口,這種方式的一個明顯的特點就是他與我們平時操作鍵盤鼠標幾乎一模一樣,會對整個系統都產生影響,而且穩定性不佳,因為我們沒法確定系統是否將消失投遞到我們希望投遞到的窗口中。
后台操作是模擬系統直接向目標窗口發送消息,穩定、高效、不影響前台操作。
//鍵盤模擬
Call Plugin.Bkgnd.KeyPress(Hwnd, 65)
Call Plugin.Bkgnd.KeyDown(Hwnd, 65)
Call Plugin.Bkgnd.KeyUp(Hwnd, 65)
//鼠標模擬
Call Plugin.Bkgnd.LeftClick(Hwnd,10, 10) //坐標
Call Plugin.Bkgnd.RightClick(Hwnd,10, 10)
Call Plugin.Bkgnd.MiddleClick(Hwnd,10, 10)
Call Plugin.Bkgnd.LeftDoubleClick(Hwnd,10, 10)
Call Plugin.Bkgnd.LeftDown(Hwnd, 10, 10)
Call Plugin.Bkgnd.LeftUp(Hwnd,10, 10)
Call Plugin.Bkgnd.RightDown(Hwnd, 10, 10)
Call Plugin.Bkgnd.RightUp(Hwnd, 10, 10)
Call Plugin.Bkgnd.MoveTo(Hwnd, 10, 10)
//找圖找色
XY = Plugin.Bkgnd.FindColor(Hwnd, 0, 0, 1024, 768, "0000FF")
GetColor = Plugin.Bkgnd.GetPixelColor(Hwnd, 0, 0) //得到指定點顏色
XY = Plugin.Bkgnd.FindColorEx(Hwnd, 0, 0, 1024, 768, "0000FF", 0, 0.9) //模糊找色
XY = Plugin.Bkgnd.FindCenterColor(Hwnd, 0, 0, 1024, 768, "0000FF") //中心找色
XY = Plugin.Bkgnd.FindPic(Hwnd, 0, 0, 1024, 768, "C:\PIC.bmp", 查找方向, 0.9) //查找方向:0: 從左到右,從上到下1: 從左到右,從下到上2: 從右到左,從上到下 3: 從右到左,從下到上
XY = Plugin.Bkgnd.FindMultiPic(Hwnd, 0, 0, 1024, 768, "C:\pic1.bmp|D:\pic2.bmp", 0, 0.9) //區域找多圖
iCoord = Plugin.Bkgnd.FindWordShape(Hwnd,0,0,1024,768,"我的電腦", "宋體", 字號, 查找方向, 1.0) //區域找字
iCoord = Plugin.Bkgnd.FindColorBlock(Hwnd,0,0,1024,768,"0000FF",顏色塊寬度, 顏色塊高度, 查找方向, 1.0) //區域找色塊

六、文件
Call Plugin.File.WriteINI("小節名", "鍵名", "鍵值", "C:\Config.ini")
鍵值 = Plugin.File.ReadINI("小節名", "鍵名", "C:\Config.ini")
Text = Plugin.File.ReadFileEx("C:\Config.txt") //讀出文本內容
Call Plugin.File.WriteFileEx("C:\Config.txt", "內容")
Call Plugin.File.CopyFile("C:\Config.ini", "D:\Config.ini")
Call Plugin.File.DeleteFile("C:\Config.ini")
Call Plugin.File.MoveFile("D:\Config.ini", "C:\Config.ini")
Call Plugin.File.ReNameFile("C:\Config.ini", "C:\Config.txt")
IsFile = Plugin.File.IsFileExist("C:\Config.ini")
Call Plugin.File.CreateFolder("C:\Plugin")
Call Plugin.File.DeleteFolder("C:\Plugin")

七、交互
用戶自定義變量 小精靈會顯示並可修改
UserVar var1=30 "當HP<多少%時,使用紅葯" //格式: UserVar {變量}={默認值} {注釋}
UserVar var2="內容" "文本"
UserVar va3=DropList{"第一項標題":"第一項值"|"第二項標題":"第二項值"}=默認選項 "注釋"
UserVar va4=DropList{"第一項標題":111|"第二項標題":222}=1 "注釋"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM