VB中sendmessage具体用法

比如我知道一个窗口里控件的句柄h1,类名是Button(是一个按钮),想用sendmessage函数发送一个Alt+D命令。SendMessage h2,wMsg,wParam,lParam
不知道后面3个参数如何用的?还有wMsg参数,如果发送给文本框他是 WM_SETTEXT,并且他还要定义Const WM_SETTEXT = &HC,不自带什么意思哦?那我如果是发送给按钮该怎么定义呢?请详细解答。

SendMessage
说明
调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum, SendMessageByString是该函数的“类型安全”声明形式
用法:
SendMessage 窗口句柄,消息标识符(也就是SendMessage需要做什么),消息标识符的反回值,消息标识符的反回值
返回值
Long,由具体的消息决定
参数表
参数 类型及说明
hwnd Long,要接收消息的那个窗口的句柄
wMsg Long,消息的标识符--取决定作用
wParam Long,具体取决于消息
lParam Any,具体取决于消息
SendMessage 用法大全
消息标识符 用途 wParam Long lParam Long 返回值
BM_CLICK=&HF5 向目标窗口发送Click指令 0 0 非零表示成功
EM_GETLINECOUNT = &HBA 获取目标窗口文本总行数 0 0 返回行数
EM_GETLINE= &HC4 将目标窗口的第wParam行的内容显示在lParam中 常数,第几行,第一行为0 String字符串数组

例1 多行TextBox中的快速处理功能在处理多行TextBox时我们经常会碰到以下几种情况:
希望了解多行TextBox中目前共有多少行文字。
想快速返回第N行的文字。

用SendMessage函数完成上面两个任务的方法非常简单,每个任务只需简单地发送一条消息给多行TextBox即可,两个消息分别为:EM_GETLINECOUNT、EM_GETLINE,其它参数和返回值见附表。
下面用一个简单的实例演示这两个功能:
新建工程,在Form1上添加三个TextBox(名称分别为Text1-3,将Text1的MultiLine属性置为True)和一个命令按钮

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const EM_GETLINECOUNT = &HBA
Const EM_GETLINE = &HC4
Private Sub Command1_Click()
Dim str(256) As Byte
str(1) = 1 '最大允许存放256个字符
'获取总行数,结果显示在文本框text2中
Text2 = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0)
'获取第3行的数据放在str中,转换为字符串后显示在文本框text3中
SendMessage Text1.hwnd, EM_GETLINE, 2, str(0)
Text3 = StrConv(str, vbUnicode)
End Sub

两点补充说明:在调用SendMessage获取第N行字符串时,lParam需要说明为字节数组,在调用完成后,再将字节数组转换为字符串;另外,调用前必须在lParam的前两个字节指明允许存放的最大长度,其中第一个字节为低位,第二个字节为高位,本例将高位(即str(1))置1.说明最大允许存放256个字符。
~~~~~~~`
我自己的笔记,你自己慢慢看吧。。
温馨提示:内容为网友见解,仅供参考
无其他回答

VB SendMessage概述
以下是改写后的文章内容,以HTML格式呈现:VB中的SendMessage函数是Windows API的一部分,用于在进程间发送消息。这个函数在扩展文本框的功能时非常实用,例如获取文本的行数、光标位置,以及指定行的文本。下面是一些相关声明和功能的实现:Public Declare Function SendMessage Lib "user32" Alias "SendMessa...

VB中sendmessage具体用法
调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum, SendMessageByString是该函数的“类型安全”声明形式 用法:SendMessage 窗口句柄,消息标识符(也就是SendMessage需要做什么),消息标识符的反回值,消息标识符的反回值 返回值 Long,由具体的...

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

VB SendMessage函数原型
VB中的SendMessage函数用于向指定窗口发送消息,其函数原型如下:LRESULT SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);这个函数的四个参数分别代表:hWnd: 发送消息的目标窗口句柄。如果设置为HWND_BROADCAST,则消息会被发送到所有顶层窗口,包括那些无效、不可见或非自身拥有的窗口,以...

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

VB中SendMessage的详细用法!
SendMessage函数功能描述:将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口过程,直到窗口过程处理完消息后才返回。参数:hWnd 窗口过程接收消息的窗口句柄。iparam指定附加消息的特定信息msg指定被发送的信息。

VB 中的sendmessage的用法 高手进
用API文本...把sendmessage函数插入进去!如下:Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 这是常数:Private Const WM_CLOSE = &H10 Pirvate sub command1)Click()Send...

问VB 中 sendmessage 函数 中的常用系统常量定义和说明
Function SendMessage Lib "user32"Alias "SendMessageA"(ByVal hwnd As Long,ByVal wMsg As Long,ByVal wParam As Long,lParam As Any)As Long 其中hwnd指定接受消息的窗口,参数wMsg指定消息值,参数wParam lParam分别定义传递到窗口的附加参数。而在Windows系统的很多消息中,有一些不仅仅是提供一...

vb 有关sendmessage
HT是HitTest缩写 HTCAPTION = 2是一个消息常量,你也可以自己定义名称。比如:点击标题栏=2,那么你调用sendmesage时就可以像下面这样写 Call SendMessage(hwnd,WM_NCLBUTTONDOWN,点击标题栏,0)

vb用sendmessage发送中文
你要发送的目标是一个文本框么?是的话就用SETTEXT,wParam填0,lParam填你那个中文串的变量。如果目标不是文本框,可能就要找其他的消息了。另外,这类操作有的可以不用SendMessage的,比如SetWindowText API封装了一种发送SETTEXT message的情况。

相似回答