肥龍 發表於 2008-12-25 22:51:19

vb中PostMessage怎麼用?

該函數將一個消息放入(寄送)到與指定視窗創建的執行緒相聯繫訊息佇列裡,不等待中的執行緒處理消息就返回。訊息佇列裡的消息通過調用GetMessage和PeekMessage取得。
函數原型:B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
參數
hWnd:其視窗程式接收消息的視窗的控制碼。可取有特定含義的兩個值:
HWND.BROADCAST:消息被寄送到系統的所有頂層視窗,包括無效或不可見的非自身擁有的視窗、被覆蓋的視窗和彈出式視窗。消息不被寄送到子窗口。
NULL:此函數的操作和調用參數dwThread設置為當前執行緒的識別字PostThreadMessage函數一樣。
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的資訊。
IParam:指定附加的消息特定的資訊。
返回值:如果函式呼叫成功,返回非零值:如果函式呼叫失敗,返回值是零。若想獲得更多的錯誤資訊,請調用GetLastError函數。
例:遊戲掛機,如果一個簡單的遊戲掛機只需要點擊滑鼠就可以,那我們就可以用VB做一個簡單的外掛,用SetCursorPos()等函數把滑鼠移動到指定的位置上點擊,但這樣的話,遊戲介面就一定要在前臺,但如果用postmessage()函數的話,就算是遊戲已經最小化了,仍然可以將滑鼠點擊事件發送到遊戲中,這就是postmessage的好處!試試下面的例子:
'API 聲明
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'常量聲明
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_MBUTTONDBLCLK = &H209
Private Const WM_MBUTTONDOWN = &H207
Private Const WM_MBUTTONUP = &H208
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205
Private Sub Command1_Click()
Dim lpClassName As String, lpWindowName As String,hWndX as Long
lpClassName = "這裡填寫遊戲視窗的類名"’用VB企業版自帶的SPY++工具可以查看遊戲視窗的類名和標題
lpWindowName = "這裡填寫遊戲視窗的標題"
hWndX = FindWindow(lpClassName, lpWindowName)'這一步獲得遊戲視窗的控制碼,發送消息時需要
Dim wMsg As Long, wParam As Long, lParam As Long, Rx As Long,xx as Integer,yy as Integer
xx=100'點擊的x座標
yy=100'點擊的y座標
wMsg = WM_LBUTTONDOWN'左鍵按下消息
wParam = 1
lParam =yy*65536+xx
Call PostMessage(hWndX, wMsg, wParam, lParam)’發送消息
Sleep 300
wMsg = WM_LBUTTONUP'左鍵抬起消息
wParam = 1
lParam = yy*65536+xx
Call PostMessage(hWndX, wMsg, wParam, lParam)’發送消息
End Sub
這個程式目的是實現遊戲裡的滑鼠按一下~~~~~~比如100.100位置
本貼來自ZDNetChina中文社區 http://bbs.zdnet.com.cn ,本貼地址:http://bbs.zdnet.com.cn/viewthread.php?tid=406460
頁: [1]
查看完整版本: vb中PostMessage怎麼用?