该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回。消息队列里的消息通过调用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位置
分享到:
相关推荐
在VB(Visual Basic)编程中,`PostMessage`是一个核心的API函数,它允许程序员向一个窗口发送消息,而不必等待该消息被处理。这个功能在处理多线程或者需要异步通信的情景中非常有用。在“VB PostMessage操作计算器...
在Visual Basic 6.0(VB6)中,我们可以利用API调用来实现更复杂的功能,例如本例中的`PostMessage`函数。 `PostMessage`是Windows API中的一员,它用于将消息放入指定窗口的消息队列,但不会等待该消息被处理,...
在VB(Visual Basic)编程中,`PostMessage`函数是一个非常关键的API调用,它允许程序员在应用程序之间发送消息,甚至是对非活动(后台)窗口执行操作,如模拟键盘和鼠标输入。这个功能在自动化测试、游戏挂机、数据...
利用 PostMessage 和 keybd_event 给其他程序发送消息的技术要点 本文主要介绍如何使用 PostMessage 和 keybd_event 函数将按键消息发送到其他应用程序,实现自动执行特定功能。这种技术在自动化测试、自动执行任务...
`PostMessage`函数就是这样的一个工具,它允许程序在目标窗口的message queue中放置一个消息,而不是立即处理它。这个功能在自动化测试、游戏外挂、远程控制软件等领域有广泛应用。在VC++(Microsoft Visual C++)...
PostMessage 函数的 VB 声明如下: Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 其中,hwnd 是...
本资源“后台模拟键盘输入postmessage.rar”显然关注的是如何在VB(Visual Basic)环境中实现这一功能。下面将详细阐述这个主题,以及相关的知识点。 首先,VB是一种面向对象的编程语言,由微软开发,广泛应用于...
PostMessage, PostMessageBynum, PostMessageBystring VB声明 Declare Function PostMessage& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As ...
内容索引:VB源码,系统相关,窗口管理 看到朋友用枚举法写的窗口管理器,功能不错,很强大 ,就是感觉用有点俗,而且有点乱,我改进了一下,使用PostMessage来获取当前的所有窗口信息,并列举出来,实现关闭、退出、...
`PostMessage`函数的VB声明如下: ```vb Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long ``` 其中...
在VB中,我们还可以使用`PostMessage`函数来发送键盘消息。`PostMessage`函数可以将指定的消息放入接收窗口的消息队列,等待被处理。例如,发送一个`WM_KEYDOWN`或`WM_KEYUP`消息,就可以模拟键盘的按下和释放。 ``...
PostMessage 函数是我们在 VB 中实现键盘模拟的主要函数。我们可以使用它来发送键盘消息给目标程序。例如,我们可以使用 WM_KEYDOWN 消息来模拟按下一个键,使用 WM_KEYUP 消息来模拟释放一个键。 wParam 参数的...
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 ' 使用FindWindow函数获取目标窗口的句柄 ...
下面是一段示例代码,展示了如何在VB中使用`PostMessage`函数来模拟按键事件: ```vb ' 声明 PostMessage 函数 Declare Function PostMessage Lib "user32" Alias "PostMessageA" ( _ ByVal hwnd As Long, _ ...
接下来,而不是使用`PostMessage`在VC中发送自定义消息,我们可以利用Windows API函数`SetWindowText`直接将消息文本设置为TextBox的文本。例如,当VC需要发送自定义消息MW_TAPI_DATACOME时,可以执行: ```cpp ...
在IT行业中,VB(Visual Basic)是一种常用的编程语言,它被广泛用于开发Windows应用程序。Web API则是一个用于构建HTTP服务的框架,常用于提供RESTful服务,允许客户端通过HTTP协议与服务器进行数据交互。本话题将...
6. **向窗口发送字符串**:借助`PostMessage`或`SendMessage`函数,开发者可以向其他窗口发送消息,包括文本数据。这对于跨程序通信和模拟用户输入非常实用。 7. **幽灵窗口**:幽灵窗口通常指的是不可见或几乎不...
例如,使用`FindWindow` API查找QQ主窗口,`SendMessage` API向指定窗口发送消息,或者`PostMessage` API模拟用户按下键盘输入文字。 接下来是消息钩子(Message Hook)。消息钩子允许程序监视和处理其他进程中的...