標籤:conf 其他 variant top wait mod func write notepad
一、資料類型
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 "注釋"
按鍵精靈Q語言基礎