因?yàn)榫浔桥R時隨機(jī)分配的,所以每次雖然是打開同一個文件,但是分配到的一串?dāng)?shù)字卻是不一樣的。
所以我們要通過窗體的標(biāo)題欄來確定每次不同的句柄。
例如,我打開一個“新建 文本文檔 (5).txt”,打開,文本文檔的標(biāo)題欄是“新建 文本文檔 (5).txt - 記事本”,那么,我就通過“新建 文本文檔 (5).txt- 記事本”(注意:不是文件名)來查找這個文本文檔的句柄。
Hwnd = Plugin.Window.Find(0, "新建 文本文檔 (5).txt -記事本")Delay 2000
然后通過句柄對這個文檔進(jìn)行最大化操作
Plugin.Window.Min HwndDelay 2000
要對這個文本文檔進(jìn)行寫入,就要另外單擊文本區(qū)域,文本區(qū)域是這個窗體的一部分,有自己的句柄,我們稱之為“子句柄”。我們可以通過剛才找到的窗口句柄,類(抓抓里面獲?。?,來查找窗體里面的某一獨(dú)立部分的子句柄。然后對子句柄所標(biāo)識的窗體部分寫入文本。
HwndEx = Plugin.Window.FindEx(Hwnd, 0, "Edit",0)Delay 2000Call Plugin.Window.SendString(HwndEx, "hello,word,I amthe king") Delay 2000
“全部命令”--“插件命令”--“windows 窗口插件” 可找到以上函數(shù)
后臺:什么意思?
比如一個游戲,窗口最大化后,我們可以玩;但是我們把它最小化后,雖然我們看不見了,它還是沒有停止,它還在幕后(前臺后面)繼續(xù)運(yùn)行,這個就叫后臺。
又例如,我們挪動鼠標(biāo)雙擊我的電腦,這個過程可視;如果通過后臺執(zhí)行這個操作,我們雖然看不到鼠標(biāo)挪動的過程,但是也可以達(dá)到雙擊我的電腦的效果。
Hwnd = Plugin.Window.MousePoint()獲得當(dāng)前鼠標(biāo)所在窗體的句柄的命令Call Plugin.Bkgnd.LeftClick(Hwnd, 36, 98)在后臺單擊選中“我的電腦”,前提是執(zhí)行時候鼠標(biāo)要挪到桌面上。貌似按鍵精靈對鼠標(biāo)后臺雙擊單擊做得不好,有時不靈。

Hwnd = Plugin.Window.MousePoint()XY = Plugin.Bkgnd.FindColor(Hwnd, 0, 0, 1024, 768, "0201E1") '區(qū)域找色ZB = InStr(XY, "|")X = Clng(Left(XY, ZB - 1))Y = Clng(Right(XY, Len(XY) - ZB))MsgBox "x"&X&"y"& Y '彈出窗口,指定顏色如果找到,顯示他的點(diǎn)的坐標(biāo)
注意:插入語句默認(rèn)是X = Clng(Left(XY, ZB - 1)): Y = Clng(Right(XY,Len(XY) - ZB))這樣的要把冒號改掉,分2行。
獲得句柄的幾個函數(shù)。注意,如果不打開窗口,是無法獲得句柄的。標(biāo)題名也不能寫錯,寫錯也無法獲取。但是會有返回值。Hwnd = Plugin.Window.GetKeyFocusWnd() 獲得當(dāng)前激活的窗口句柄,激活的窗口鼠標(biāo)不一定在上面Hwnd = Plugin.Window.MousePoint() 獲得鼠標(biāo)當(dāng)前停留的窗口的句柄,當(dāng)前窗口狀態(tài)未必激活(被點(diǎn)選)Hwnd = Plugin.Window.Find(0, "無標(biāo)題 - 記事本")獲取窗口標(biāo)題欄為“無標(biāo)題 -記事本”的窗口的句柄
一般優(yōu)先使用Plugin.Window.Find,如果窗口標(biāo)題不固定,再考慮使用其他兩個函數(shù)
Hwnd = Plugin.Window.Find(0, "新建 文本文檔 (7).txt - 記事本")sRect = Plugin.Window.GetClientRect(Hwnd) '獲取窗口的4個坐標(biāo)myArray=Split(srect,"|") '分離出四個坐標(biāo)因?yàn)镾plit就是數(shù)組函數(shù),所myArray雖然沒有定義,也被默認(rèn)定義成了動態(tài)數(shù)組變量
MessageBox myArray(0) & "," &myArray(1) '顯示出變量起始點(diǎn)的坐標(biāo)a = CLng(myArray(0)) '將變量里的值從字符變?yōu)閿?shù)字類型,然后才能用moveTo函數(shù)b = CLng(myArray(1))MoveTo a, b
獲取窗口坐標(biāo)的目的:窗口的位置不固定,但是窗口內(nèi)的內(nèi)容相對于窗口的位置是固定的,“絕對坐標(biāo)”+“相對坐標(biāo)”,結(jié)合ifColor函數(shù),進(jìn)行判斷
KeyDown 就要記得 keyUp
截取一部分,才有共性。比如找圖,找游戲人物,不建議截取增個人,因?yàn)槿说拇┲b備是會變化的;可以截取臉部或者其他一部分。
抓抓工具,可以設(shè)定起始坐標(biāo),來獲得相對坐標(biāo)。
用戶自定義變量http://zy.anjian.com/index.php?action-viewnews-itemid-220用戶自定義變量,也就是說用戶可以輸入?yún)?shù)(在腳本屬性--其他),然后傳給程序執(zhí)行,提高程序靈活性。
UserVar TheKeyYouPress "你要按下的鍵" '注意最后的中文是固定格式,一定要有,不是注釋UserVar TheTimeYouWant "你要按幾次"
For TheTimeYouWantKeyPress TheKeyYouPress, 1Next
OCX界面(很雞肋的一個功能,效果也不好,建議直接用“用戶自定義變量”)利用VB對C:Program Files按鍵精靈9source自定義界面例子(VB6.0)VB-BIG-001QMacroUI.vbp修改制作界面,然后做成OCX文件。然后再按鍵精靈右側(cè) 腳本屬性--其他--設(shè)置界面 里面,把OCX文件包含進(jìn)來。主要原理:例如,VB設(shè)計(jì)界面的時候,文本框的名稱設(shè)置成TheKeyYouPress要和按鍵精靈腳本的自定義變量UserVarTheKeyYouPress "你要按下的鍵",兩個要一樣。http://www.aipai.com/c9/ODY9JSknImgnaiYp.html例子里面大致那樣,實(shí)際用按鍵精靈9用起來還有一定問題。例子里面改了很多地方,其實(shí)主要功能就是保存上次你輸入的參數(shù),一個將保存好的參數(shù)導(dǎo)出。
愛華網(wǎng)



