postmessage函数(VB PostMessage 函数的问题)

本文目录
- VB PostMessage 函数的问题
- vb中PostMessage怎么用
- 谁能告诉一下,VC++,PostMessage特点和详细说明
- PostMessage和SendMessage的区别
- PostMessage与PostMessageA的区别
- 求vb之PostMessage 的函数
- VB中SendMessage和postmessage的详细用法
- 求大神给说下postmessage()函数
VB PostMessage 函数的问题
函数原型
BOOLWINAPIPostMessage(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam);
参数说明
hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:
HWND_BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、 被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口
NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
返回值:如果函数调用成功,返回零,函数调用失败返回值小于零
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位置
谁能告诉一下,VC++,PostMessage特点和详细说明
SendMessage函数是阻塞的。PostMessage函数是非阻塞的。
PostMessage:
函数功能:该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回。消息队列里的消息通过调用GetMessage和PeekMessage取得。
函数原型:B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
参数
hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:
HWND.BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口。
NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样。
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
备注:需要以 HWND_BROADCAST方式通信的应用程序应当用函数 RegisterwindwosMessage来获得应用程序间通信的独特的消息。
如果发送一个低于WM_USER范围的消息给异步消息函数(PostMessage.SendNotifyMessage,SendMesssgeCallback),消息参数不能包含指针。否则,操作将会失败。函数将再接收线程处理消息之前返回,发送者将在内存被使用之前释放
PostMessage和SendMessage的区别
一、主体不同
1、SendMessage:将指定的消息发送到一个或多个窗口。
2、PostMessage:是Windows API(应用程序接口) 中的一个常用函数,用于将一条消息放入到消息队列中。
二、特点不同
1、SendMessage:为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。
2、PostMessage:将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。
三、规则不同
1、SendMessage:指定要接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
2、PostMessage:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、 被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口。
参考资料来源:百度百科-SendMessage
参考资料来源:百度百科-PostMessage
PostMessage与PostMessageA的区别
声明PostMessage函数的时候(其实很多很多API函数都是这样),有两种版本:A结尾的是ANSI版本,W结尾的是Unicode版本。一般用A结尾的。你声明的时候不是也写了: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么。可见PostMessage是我们为了方便起的名字,PostMessageA才是人家的原名。
求vb之PostMessage 的函数
要延迟几秒发送按键信息,可以用sleep函数。
使用前先声明API函数。
Private declare sub sleep lib“kernel32“(byval dwmilliseconds as long)
在发送键码前,调用一下Sleep:
Sleep(3000) ’延迟3秒
还可以使用keybd_event来发送键码,放入1个按钮且运行前打开一个记事本看效果。
Private Declare Sub keybd_event Lib “user32“ (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const VK_1 = &H31
Private Const VK_F1 = &H70
Private Const VK_TAB = &H9
Private Const KEYEVENTF_KEYUP = &H2
Private Declare Sub Sleep Lib “kernel32“ (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
AppActivate (“无标题 - 记事本“) ’激活记事本窗口
Sleep (3000) ’延迟3秒后按键
keybd_event VK_1, 0, 0, 0 ’按下数字1
Sleep (300)
keybd_event VK_F1, 0, 0, 0 ’按下F1
Sleep (300)
keybd_event VK_F1, 0, KEYEVENTF_KEYUP, 0
Sleep (300)
keybd_event VK_TAB, 0, 0, 0 ’按下Tab
End Sub
VB中SendMessage和postmessage的详细用法
SendMessage : 发送一个消息给操作系统,并且等待操作系统执行完这个消息。postmessage : 发送一个消息给操作系统,不等待操作系统执行完这个消息就立即返回执行下一条语句。 SendMessage 定义:Public Shared Sub SendMessage ( _ ByRef m As Message _ ) SendMessage 调用: Dim m As Message MessageWindow.SendMessage(m) postmessage 定义: Public Shared Sub PostMessage ( _ ByRef m As Message _ ) postmessage 调用: Dim m As Message MessageWindow.PostMessage(m) 它们的定义和调用格式是一样的,只是执行时的效果不一样,刚才我已经说过了。 参数的m含义: 是一个windows的消息结构体,用来描述传递的消息。 比如: Dim msg As Microsoft.WindowsCE.Forms.Message = _ Microsoft.WindowsCE.Forms.Message.Create(MsgWin.Hwnd, _ MsgWindow.WM_CUSTOMMSG, New IntPtr(e.X), New IntPtr(e.Y)) MessageWindow.SendMessage(msg)MsgWin.Hwnd :表示消息的句柄。MsgWindow.WM_CUSTOMMSG :表示消息的ID,就是一个唯一的消息的标识号,是一个整数。IntPtr(e.X) 和 New IntPtr(e.Y) : 消息的两个附加参数,这要根据具体的消息而论了。
求大神给说下postmessage()函数
我不懂,但从百度百科可以查到,你看一下,难道看不懂?
函数原型
1
BOOL WINAPI PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
参数说明
hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:
HWND_BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、 被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口
NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。

更多文章:
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026年10月11日 08:50
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00






