[按鍵精靈手機版教程]控制元件實現抓抓獲取控制代碼的功能

[按鍵精靈手機版教程]控制元件實現抓抓獲取控制代碼的功能

金豬指令碼(原飛豬指令碼)以按鍵精靈教學為主,涉及UiBot,Python,Lua等指令碼程式語言,教學包括全自動辦公指令碼,遊戲輔助指令碼,引流指令碼,網頁尾本,安卓指令碼,IOS指令碼,註冊指令碼,點贊指令碼,閱讀指令碼以及網賺指令碼等各個領域。想製作指令碼和學習按鍵精靈的朋友可以新增按鍵精靈學習交流群:554127455 學習路上不再孤單,金豬指令碼伴你一同成長。

[按鍵精靈手機版教程]控制元件實現抓抓獲取控制代碼的功能

在論壇上看到了一個這樣的問題: 能不能新增一個類似 “抓抓” 抓控制代碼那樣的控制元件?

[按鍵精靈手機版教程]控制元件實現抓抓獲取控制代碼的功能

有了這個控制元件,咱們可以放在QUI介面上,讓使用者自己獲取視窗控制代碼,那麼,通用同步器這類的指令碼實現起來就輕鬆多了。

(ps:通用同步器是指能夠相容多種遊戲視窗鍵鼠同步功能,也就是說沒辦法預先知道視窗的類名,標題名去獲取視窗控制代碼,這個時候,抓抓控制代碼功能就很重要了。)

其實呢,“抓抓”抓控制代碼的功能,實現起來是很容易的,我們一起來操作看看。

[按鍵精靈手機版教程]控制元件實現抓抓獲取控制代碼的功能

[backcolor=rgb(46, 139, 87)]實現功能[backcolor=rgb(154, 205, 50)]

點選圖片控制元件之後滑鼠不鬆開,到了需要獲取控制代碼的視窗鬆開滑鼠,獲取視窗控制代碼顯示在標籤控制元件裡。(點選圖片控制元件之後,按住滑鼠左鍵游標形狀改變,鬆開滑鼠之後,游標恢復系統預設形狀。)

[backcolor=rgb(46, 139, 87)]思路&步驟[backcolor=rgb(154, 205, 50)]

1、 畫一個計時器。 時間間隔設定為200毫秒,有效設定為否( 即:Timer1.Enabled = false)

[按鍵精靈手機版教程]控制元件實現抓抓獲取控制代碼的功能

2、 在影象控制元件點選事件中: (影象控制元件中設定顯示影象為:游標2.jpg

[按鍵精靈手機版教程]控制元件實現抓抓獲取控制代碼的功能

)

①呼叫api修改游標形狀為:

[按鍵精靈手機版教程]控制元件實現抓抓獲取控制代碼的功能

②將影象控制元件顯示的影象改為:游標1.jpg

[按鍵精靈手機版教程]控制元件實現抓抓獲取控制代碼的功能

,點選之後就變為空的,就像是裡面的游標跑走了一樣。

③Timer1控制元件的Enabled屬性設定為 True ,啟動計時器。

3、 在計時器Timer事件中,使用 api函式GetAsyncKeyState 檢測上次按過的滑鼠鍵,如果滑鼠鬆開則 :

①使用 MousePoint 滑鼠指向視窗 命令獲取當前滑鼠指向的視窗控制代碼。

②將獲取到的視窗控制代碼顯示在標籤中。

③將游標形狀還原成系統預設形狀。

④將影象控制元件顯示的影象改為:游標2.jpg

[按鍵精靈手機版教程]控制元件實現抓抓獲取控制代碼的功能

最後將計時器 Enabled屬性 設定為 false,不可用。

▂_▂_▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂_▂_▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂__▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂_▂_▂_▂▂_▂▂_▂▂

[backcolor=rgb(46, 139, 87)]修改游標要使用的api函式[backcolor=rgb(154, 205, 50)]

函式SetSystemCursor函式功能該函式使一個應用程式定製系統游標。函式宣告Public Declare Function SetSystemCursor Lib "user32" Alias "SetSystemCursor" (ByVal hcur As Long, ByVal id As Long) As Long函式語法SetSystemCursor(hCur, id)引數說明hcur:替換的游標控制代碼。

id: 被替換的系統游標識別符號。

函式LoadCursorFromFile函式功能在一個指標檔案或一個動畫指標檔案(副檔名分別是.cur和.ani)的基礎上建立一個指標。

//白話解釋就是:獲取一個游標檔案的控制代碼函式宣告Public Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long函式語法LoadCursorFromFile("c:\變化.cur") //引號中為游標檔案所在地址

函式

SystemParametersInfo函式功能該函式使一個應用程式定製系統游標。函式宣告Public Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long)函式語法SystemParametersinfo(uiAction, uiParam,pvParam, fWinlni)引數說明uiAction: 該引數指定要查詢或設定的系統級。

本例子中,這個引數要取值為:SPI_SETCURSORS 功能:重置系統游標。將ulParam引數設 為0並且pvParam引數設為NULL。

ulParam: 與查詢或設定的系統引數有關。關於系統級引數的詳情。

pvParam: 與查詢或設定的系統引數有關。關於系統級引數的詳情。

fWinlni: 如果設定系統引數,則它用來指定是否更新使用者配置檔案(Profile)。亦或是否要將 WM_SETTINGCHANGE訊息廣播給所有頂層視窗,以通知它們新的變化內容。

本例子中,這個引數要取值為 :SPIF_SENDCHANGED 功能:在更新使用者配置檔案之後廣播訊息。

[backcolor=rgb(46, 139, 87)]判斷滑鼠左鍵按下的api函式[backcolor=rgb(154, 205, 50)]

函 數GetAsyncKeyState函式功能用來判斷函式呼叫時指定虛擬鍵的狀態。函式宣告Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer返回值GetAsyncKeyState 返回值等於1 說明鍵已經被按過並且當前是鬆開的狀態

GetAsyncKeyState 返回值等於0 說明鍵是鬆開的狀態

GetAsyncKeyState 返回值等於- 32767 說明鍵是按下的狀態

呼叫api函式之前,要先宣告,宣告部分程式碼如下:

Public Declare Function SetSystemCursor Lib “user32” Alias “SetSystemCursor” (ByVal hcur As Long, ByVal id As Long) As Long

Public Declare Function LoadCursorFromFile Lib “user32” Alias “LoadCursorFromFileA” (ByVal lpFileName As String) As Long

Public Declare Function SystemParametersInfo Lib “user32” Alias “SystemParametersInfoA” (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long)

Private Declare Function GetAsyncKeyState Lib “user32” (ByVal vKey As Long) As Integer

複製程式碼

[backcolor=rgb(46, 139, 87)]修改游標形狀-程式碼[backcolor=rgb(154, 205, 50)]

hCursor = LoadCursorFromFile(“c:\變化。cur”)‘獲取游標的控制代碼 //api載入游標檔案,不能直接載入按鍵附件中的檔案,需釋放到電腦碟符中

Call SetSystemCursor(hCursor, 32512) //設定游標形狀 32512是系統標準游標OCR_NORMAL的常數。

複製程式碼

[backcolor=rgb(46, 139, 87)]恢復游標形狀-程式碼[backcolor=rgb(154, 205, 50)]

SystemParametersInfo 87, 0, 0, 2

// 第一個 87是 SPI_SETCURSORS 的常數。第一個引數設定為SPI_SETCURSORS,第二個和第三個引數都設定為0。 第三個引數 2 是 SPIF_SENDCHANGED 的常數。

複製程式碼

[backcolor=rgb(46, 139, 87)]判斷滑鼠左鍵是否彈起[backcolor=rgb(154, 205, 50)]

LButton = GetAsyncKeyState(1) ’滑鼠左鍵狀態

If LButton =0 Then //如果滑鼠左鍵鬆開

//

End If

複製程式碼

▂_▂_▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂_▂_▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂__▂_▂_▂_▂_▂_▂▂_▂_▂▂_▂_▂▂_▂▂_▂_▂_▂▂_▂▂_▂▂

咱們的核心程式碼都分析完了,現在將這些程式碼組合起來,看看執行效果會是怎樣的。

[按鍵精靈手機版教程]控制元件實現抓抓獲取控制代碼的功能

[backcolor=rgb(46, 139, 87)]程式碼

[backcolor=rgb(46, 139, 87)]

Public Declare Function SetSystemCursor Lib “user32” Alias “SetSystemCursor” (ByVal hcur As Long, ByVal id As Long) As Long

Public Declare Function LoadCursorFromFile Lib “user32” Alias “LoadCursorFromFileA” (ByVal lpFileName As String) As Long

Public Declare Function SystemParametersInfo Lib “user32” Alias “SystemParametersInfoA” (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long)

Private Declare Function GetAsyncKeyState Lib “user32” (ByVal vKey As Long) As Integer

Event Form1。Timer1。Timer

LButton = GetAsyncKeyState(1) ‘滑鼠左鍵狀態

//RButton =GetAsyncKeyState(2) ’滑鼠右鍵狀態

If LButton =0 Then //如果滑鼠左鍵鬆開

hwnd=Plugin。Window。MousePoint()

Form1。Label1。Caption = hwnd

Form1。PictureBox1。Picture = “Attachment:\游標2。jpg” //影象控制元件影象改為游標2。jpg

SystemParametersInfo 87, 0, 0, 2 //還原游標形狀

Form1。Timer1。Enabled = False

End If

End Event

Event Form1。PictureBox1。Click

hCursor = LoadCursorFromFile(“c:\變化。cur”)‘獲取游標的控制代碼 //api載入游標檔案,不能直接載入按鍵附件中的檔案,需釋放到電腦碟符中

Call SetSystemCursor(hCursor, 32512) //設定游標形狀

Form1。Timer1。Enabled = True

Form1。PictureBox1。Picture=“Attachment:\游標1。jpg” //影象控制元件影象改為游標1。jpg

End Event

Event Form1。Load

PutAttachment “c:\”,“變化。cur” //釋放游標檔案

End Event

複製程式碼

[backcolor=rgb(46, 139, 87)]效果[backcolor=rgb(154, 205, 50)]

[按鍵精靈手機版教程]控制元件實現抓抓獲取控制代碼的功能

[按鍵精靈手機版教程]控制元件實現抓抓獲取控制代碼的功能