vb中PostMessage怎么用?

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位置
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-03-15
第1,你定义了没有,
2,你没加扫描码,后面不能为0
PostMessage
hwnd,
MakeKeyLpar(VK_A,
WM_KEYDOWN)
PostMessage
hwnd,
WM_UP,
VK_A,
MakeKeyLpar(VK_A,
WM_KEYup)
最好你能发出来看看,源码
第2个回答  2019-05-28
首先VK_A定义没有?另外发送字符A请用WM_CHAR.不懂的补充

vb中PostMessage怎么用?
例:游戏挂机,如果一个简单的游戏挂机只需要点击鼠标就可以,那我们就可以用VB做一个简单的外挂,用SetCursorPos()等函数把鼠标移动到指定的位置上点击,但这样的话,游戏界面就一定要在前台,但如果用postmessage()函数的话,就算是游戏已经最小化了,仍然可以将鼠标点击事件发送到游戏中,这就是postmessage的好...

VB中SendMessage和postmessage的详细用法。
SendMessage : 发送一个消息给操作系统,并且等待操作系统执行完这个消息。postmessage : 发送一个消息给操作系统,不等待操作系统执行完这个消息就立即返回执行下一条语句。 SendMessage 定义:Public Shared Sub SendMessage ( _ ByRef m As Message _ ) SendMessage 调用: Dim m As Message...

vb 怎么向一个窗口句柄发送一个回车键,就是按回车一次,但是呢,不能...
用API函数:sendmessage向窗口发送一个WM_KEYDOWN和WM_KEYUP详细就可以了。

VB Postmessage发送字符串问题
postmessage 向文本框发送 WM_SETTEXT 是成功不了的 PostMessage 功能:将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回。消息队列里的消息通过调用GetMessage和PeekMessage取得。所以你用PostMessage 向记事本程序中 文本框的句柄 发送 WM_SETTEXT以后,这个WM_SE...

vb postmessage 中 怎么向某窗口发送 ctrl+F
如果那个窗口是前台窗口的话,可以这样做,用keybd_event函数来模拟键盘 === 仔细研究了下这个问题,向后台发送单键可以,发送组合键只能发送alt+x这种,ctrl的shift的都不行 alt+V的发法:Private Sub Command4_Click()SendMessage Command2.hWnd, BM_CLICK, 0, 0 End Sub Private Sub Text1_Key...

如何在VB中用PostMessage向指定窗口发送带有修饰键的组合键?
PostMessage hwnd, WM_CHAR, Asc("A"), 0 ' 发送一个 A 字符 对于非普通字符按键,如功能键、方向键等,要用 WM_KEYDOWN、WM_KEYUP 消息,如下:PostMessage hWndMsg, WM_KEYDOWN, VK_ESCAPE, &H00010001 ' 模拟按下 Esc 键 PostMessage hWndMsg, WM_KEYUP, VK_ESCAPE, &HC...

VB PostMessage 函数的问题
函数原型 BOOLWINAPIPostMessage(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam);参数说明 hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:HWND_BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、 被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口 NULL:此...

VB Postmessage发送字符串问题
已经取得了假设的目标窗口句柄(HWND),窗口,然后使用PostMessage发送消息的普通字符键直接最简单的WM_CHAR消息如下:PostMessage的HWND,WM_CHAR,ASC(“A”;),0'字符 发送的非普通字符键如功能键,箭头键使用WM_KEYDOWN,WM_KEYUP消息如下:PostMessage的hWndMsg WM_KEYDOWN,VK_ESCAPE&H00010001'...

VB postmessage发送后台Tab
我的 网上找了很多,很多人都说游戏屏蔽了POSTMESSAGE但是还是可以发送Tab求一个可以后台发送Tab的源码,VB的。纯属兴趣,这个TAB让我很不爽,知道的帮帮忙!先谢了!送上100分。好像是模拟... 网上找了很多,很多人都说游戏屏蔽了POSTMESSAGE但是还是可以发送Tab求一个可以后台发送Tab的源码,VB的。纯属兴趣,这个TAB让...

VB postmessage 鼠标单击位置
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long '这个是设置鼠标的位置!Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '延时 Const MOUSEEVENTF_LEFTDOWN = &H2 '模拟鼠标左键按下消息 Const MOUSEEVENTF_LE...

相似回答