今天給大家帶來了一個API哦,不用外掛,也能實現後臺傳送訊息。通過呼叫API,把字串分割成一個一個字元,傳送到目標視窗。快看看,API的祕密寶劍吧~~
方法/步驟
API介紹:PostMessage
PostMessage是Windows API(應用程式介面) 中的一個常用函式,用於將一條訊息放入到訊息佇列中。該函式將一個訊息放入(寄送)到與指定視窗建立的執行緒相聯絡訊息佇列裡,不等待執行緒處理訊息就返回,是非同步訊息模式。
使用方法及引數:
宣告:
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
呼叫:
PostMessage hwnd, wMsg, wParam, lParam
其中:hwnd是指目標窗體的控制代碼,wMsg這裡使用引數&H102,代表直接傳送字串。wParam表示要傳送的內容,lParam這裡引用0。(當wMsg的引數為&H102的時候,最後一個引數lParam無效,故引用0即可)
不使用外掛,傳送訊息的具體實現
//宣告API
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
//直接傳送訊息:通過將字串分割成一個一個字元,傳送到目標窗體
Function SendString(hwnd,str)
For i = 1 To Len(str)
PostMessage hwnd, &H102, ASC(Mid(Str,i,1)), 0
Next
End Function
//呼叫函式SendString
SendString 目標窗體控制代碼,"加入按鍵學院實戰班,坐擁指令碼江山與美人~~~"
其中:關鍵的程式碼段為“PostMessage hwnd, &H102, ASC(Mid(Str,i,1)), 0”。“ASC(Mid(Str,i,1))”,先將字串中字元一個一個取出,轉化為ANSI值,傳送到目標窗體。
通過視窗外掛,也可以實現傳送訊息
按鍵精靈中自帶的窗體外掛:Find、Search、MousePoint等也可以實現查詢視窗控制代碼,然後實現傳送訊息。大家如果感興趣,也可以自己去試試哦~~
命令名稱:
Find 查詢視窗
命令功能:
查詢視窗類名或者標題
命令引數:
引數1 字串型,視窗類名
引數2 字串型,視窗標題
返 回 值:
整數型,視窗控制代碼
指令碼例子:
(8.x語法)
Call RunApp("notepad.exe")
Delay 1500 //0表示忽略
//下面這句是查詢視窗類名("Notepad")或者標題(0),返回找到的控制代碼Hwnd
Hwnd = Plugin.Window.Find("Notepad", 0) MsgBox "查詢到的父視窗控制代碼為:"& Hwnd
命令名稱:
Search 遍歷符合視窗
命令功能:
遍歷符合視窗標題的控制代碼儲存到數值串裡
命令引數:
引數1 字串型,視窗符合的標題
返 回 值:
字串型,控制代碼數值串
指令碼例子:
(8.x語法)
//下面這句是遍歷符合視窗標題("記事本")的控制代碼儲存到陣列(HwndEx)裡
HwndEx = Plugin.Window.Search("記事本")
MsgBox "查詢到符合的視窗控制代碼為:"& HwndEx
//下面這句用於分割字串,將獲得的控制代碼組分割
dim MyArray
MyArray = Split(HwndEx, " ")
If UBound(MyArray)>=0 Then
i=0
For UBound(MyArray)
//下面這句將字串轉換成數值
Msgbox "第 "& i+1 &" 個視窗控制代碼為:"&Clng(MyArray(i))
i=i+1
Next
End If
命令名稱:
MousePoint 滑鼠指向視窗
命令功能:
得到滑鼠指向的視窗控制代碼
命令引數:
無
返 回 值:
整數型,視窗控制代碼
指令碼例子:
(8.x語法)
//下面這句是得到滑鼠指向的視窗控制代碼 Hwnd0 = Plugin.Window.MousePoint()
MsgBox "得到滑鼠指向的視窗控制代碼為:"& Hwnd0