不用外掛也能用按鍵精靈後臺傳送訊息?

今天給大家帶來了一個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

相關問題答案