不用插件也能用按鍵精靈後台發送消息

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

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場