您的位置首页生活快答

VB中sendmessage具体用法

VB中sendmessage具体用法

的有关信息介绍如下:

VB中sendmessage具体用法

相同类名就不能一个一个读了 要一起读出句柄 然后发送到每个句柄 看哪个是你想要的

FindWindowEx 函数可根据类名查找窗口得到句柄,你可以用 SendMessage 给该控件发送消息来执行各种操作。但是,如果该控件是 Windows 标准控件或者由标准控件扩展而来的,比如 Edit 类可以通过发送 WM_GETTEXT 获取文字,同时其他类似的比如 Delphi 的 TEdit 控件同样也可以获取。而有些非微软标准第三方控件,他们大多扩展了功能,对原来的消息肯定是不响应的,而是使用他们自定义的消息或者函数来设置数据,自定义结构体保存数据,那么你无从获知获取该控件内容的方法。

---- 1. 在Visual Basic 中 开 始 一 个 新 的 工 程, 采 用 缺 省 的 方 法 建 立Form1。

---- 2. 将 如 下 常 量 和 声 明 语 句 添 加 到Form1 的 通 用 声 明 部 分 中( 注 意 该 声 明 语 句 需 要 书 写 在 一 行 内):

---- Private Declare Function SendMessage Lib user32 Alias SendMessageA (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long

---- Const SB_LINERIGHT = 1

---- Const SB_LINELEFT = 0

---- Const WM_HSCROLL = &H114

---- 3. 在Form1 上 添 加 一 个 文 本 框 控 件, 采 用 缺 省 的 方 法 建 立Text1。 将 其MultiLine 属 性 设 置 为True,ScroolBars 属 性 设 置 为3-Both。

---- 4. 在Form1 上 添 加 一 个 命 令 按 钮 控 件, 采 用 缺 省 的 方 法 建 立Command1。

---- 将 其Caption 属 性 设 置 为“ 左”。

---- 5. 将 如 下 代 码 添 加 到Command1 的 单 击 事 件 中:

Private Sub Command1_Click()

Dim X As Long

X = SendMessage(Text1.hwnd, WM_HSCROLL,

SB_LINELEFT, ByVal 0&)

End Sub

---- 6. 在Form1 上 添 加 第 二 个 命 令 按 钮 控 件, 采 用 缺 省 的 方 法 建 立Command2。

---- 将 其Caption 属 性 设 置 为“ 右”。

---- 7. 将 如 下 代 码 添 加 到Command2 的 单 击 事 件 中:

Private Sub Command2_Click()

Dim X As Long

X = SendMessage(Text1.hwnd, WM_HSCROLL,

SB_LINERIGHT, ByVal 0&)

End Sub

---- 按 下F5 键 来 执 行 该 程 序。 在 文 本 框 控 件 中 键 入 一 些 文 本, 如 图1。 单 击 左 命 令 按 钮, 文 本 将 被 往 左 滚 动 一 个 字 符, 如 图2。 单 击 右 命 令 按 钮, 文 本 将 被 往 右 滚 动 一 个 字 符 的 位 置, 如 图3。

同求。。。

Word2003编辑框不是Edit控件,所以不能用FindWindow和FindWindowEX获取Word窗口的句柄来发送文本。你可以用以下办法发送文本:

Private Sub Command1_Click()

Dim i As Long

Dim Word, doc

Set Word = GetObject(, word.application)

Word.Selection.TypeText Text:=0000

Set doc = Nothing

Set Word = Nothing

End Sub

这样机械的转换不是编程的好方法,实际上VB.NET内部函数已经支持大量的API,很多情况下无需引用API了