回 帖 发 新 帖 刷新版面

主题:sendmessage的问题

我想使用sendmessage往另一个程序中的编辑框中输入内容
模块中
Public Const WM_SETTEXT = 12
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)

窗体中
Dim i As Long
Dim s As String
s = "Hello"
i = SendMessage(asktao_hwnd, WM_SETTEXT, 0, ByVal s)
'asktao_hwnd是在之前获得的游戏窗口的句柄,已经证明有效(使用FlashWindow时能看到效果)
但是执行这些代码时出现错误:

实时错误49
DLL调用约定错误

回复列表 (共8个回复)

沙发



Private Const WM_SETTEXT = 12
Private Declare Function SendMessage Lib "user32" Alias "[color=0000FF]SendMessageW[/color]" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, [color=0000FF]lParam As Long[/color]) As Long

Private Sub Command1_Click()
Dim i As Long
Dim s As String
s = "Hello"
i = SendMessage(Text1.hwnd, WM_SETTEXT, 0, [color=0000FF]ByVal StrPtr(s)[/color])
End Sub





--------------------------------------------------------------------------------------



Private Const WM_SETTEXT = 12
Private Declare Function SendMessage Lib "user32" Alias "[color=00FFFF]SendMessageA[/color]" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, [color=00FFFF]ByVal lParam As String[/color]) As Long

Private Sub Command1_Click()
Dim i As Long
Dim s As String
s = "Hello"
i = SendMessage(Text1.hwnd, WM_SETTEXT, 0, [color=00FFFF]s[/color])
End Sub

板凳

这样是不出错了,但是我发现这样能做到的效果和我最初想要的不一样:
我想要的效果是:往某游戏窗口的编辑框中发送内容
这段代码的效果是:更改了游戏窗口的标题

瀑布汗!帮忙给个思路

3 楼

问题又回到“如何取得编辑框的句柄”了

4 楼

那个编辑框不是一个窗口,或者说不是一个普通窗口,它是不会理会WM_SETTEXT消息的.游戏内部自有其它通信方法

5 楼

没想到是这样,看来只能放弃了

6 楼

哈,我看懂了,想做问道外挂,有意思.加入这个外挂群2561900,我也是管理员.好好聊下.

7 楼

WM_SETTEXT能修改窗体的文字是没错,但要注意Edit(VB中的TextBox也是此类控件)类控件是不处理这个消息的。而要改用EM_REPLACESEL消息来设置此类控件的文字。

8 楼

[quote]WM_SETTEXT能修改窗体的文字是没错,但要注意Edit(VB中的TextBox也是此类控件)类控件是不处理这个消息的。而要改用EM_REPLACESEL消息来设置此类控件的文字。[/quote]
NO,WM_SETTEXT是很多Windows标准控件都会处理的一条消息,并不仅仅是拿来设置窗体标题文字的
像button, edit之类的都是用这条消息来设置文字的

我来回复

您尚未登录,请登录后再回复。点此登录或注册