vb 有关sendmessage和postmessage的问题。

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hwnd1 As Long, ByVal Hwnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_CHAR = &H102
Sub Macro1()
Dim hwnd, hwnd1 As Long
hwnd = FindWindow(vbNullString, "无标题 - 记事本")
hwnd1 = FindWindowEx(hwnd, 0, "edit", vbNullString)
SendMessage hwnd1, WM_CHAR, 65, 0
End Sub

在excel宏里打了这个代码,是想在记事本输出一个字符a的,但一运行,他就不行的输a直到记事本死掉,请问代码有什么问题,应该怎么样才能够只输出一个字符?

可以复制代码试一下,真的是这样,求大神解答为什么和解决方案!

Public   WM_CHAR = &H102这句运行不过啊。语法错误。

追问

你都没有打CONST.......

温馨提示:内容为网友见解,仅供参考
无其他回答

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

PostMessage和SendMessage的区别
一、主体不同 1、SendMessage:将指定的消息发送到一个或多个窗口。2、PostMessage:是Windows API(应用程序接口) 中的一个常用函数,用于将一条消息放入到消息队列中。二、特点不同 1、SendMessage:为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。2、PostMessage:将一个消息放入(寄送)到...

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

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

PostMessage和SendMessage的区别
PostMessage和SendMessage的主要区别在于它们的同步性、消息处理方式以及返回值。首先,从同步性来看,PostMessage是异步的,而SendMessage是同步的。这意味着当你调用PostMessage函数发送一个消息时,函数会立即返回,不管消息是否已经被目标窗口处理。与此相反,当你使用SendMessage发送消息时,函数会等待直到...

vb sendmessage函数问题
PostMessage Lib "user32"Alias "PostMessageA"(ByVal hwnd As Long,ByVal wMsg As Long,ByVal wParam As Long,lParam As Any)As Long Const WM_KEYDOWN = &H100 Const WM_KEYUP = &H101 Const WM_CHAR = &H102 Const VK_F1 = &H70Private Sub SendF1()'调用这个过程即可对目标窗体...

VB PostMessage或者SendMessage怎么发送一个组合键?
这个问题一开始也困扰了我好几个月,后来终于解决了,怪自己笨。搜索了很多资料,没找到解决方案,我的解决办法是:由于ctrl是公共的,无所谓窗口激活不激活,所以采用keybd_event先给他按住,然后再对某窗口句柄发送第二个键即可。当然,最后得松开它。

PostMessage和SendMessage的区别
PostMessage只把消息放入队列,不管其他程序是否处理都返回,然后继续执行,这是个异步消息投放函数。而SendMessage必须等待其他程序处理消息完了之后才返回,继续执行,这是个同步消息投放函数。而且,PostMessage的返回值表示PostMessage函数执行是否正确;而SendMessage的返回值表示其他程序处理消息后的返回值。

VB中sendmessage怎么加在定时器里面啊?各个大虾帮下~~~
As String,ByVal cch As Long)As Long Private Const WM_LBUTTONDOWN = &H201 Private Const MK_LBUTTON = &H1 Private Const WM_LBUTTONUP = &H202 Private Declare Function PostMessage Lib "user32"Alias "PostMessageA"(ByVal hwnd As Long,ByVal wMsg As Long,ByVal wParam As ...

VB 用SendMessage或PostMessage如何实现鼠标移动?
系统调用直接移动鼠标不是通过 WM_MOUSEMOVE WM_MOUSEMOVE 是鼠标移动以后发出的 应该用 Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long Dim x as Long Dim y as Long x = 0 y = 0 SetCursorPos x, y ...

相似回答