主题:sendmessage的问题
singlion
[专家分:690] 发布于 2008-07-09 17:01:00
我想使用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个回复)
沙发
tanchuhan [专家分:15140] 发布于 2008-07-09 18:08:00
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
板凳
singlion [专家分:690] 发布于 2008-07-09 18:13:00
这样是不出错了,但是我发现这样能做到的效果和我最初想要的不一样:
我想要的效果是:往某游戏窗口的编辑框中发送内容
这段代码的效果是:更改了游戏窗口的标题
瀑布汗!帮忙给个思路
3 楼
singlion [专家分:690] 发布于 2008-07-09 18:40:00
问题又回到“如何取得编辑框的句柄”了
4 楼
tanchuhan [专家分:15140] 发布于 2008-07-09 22:25:00
那个编辑框不是一个窗口,或者说不是一个普通窗口,它是不会理会WM_SETTEXT消息的.游戏内部自有其它通信方法
5 楼
singlion [专家分:690] 发布于 2008-07-10 12:22:00
没想到是这样,看来只能放弃了
6 楼
workhow [专家分:810] 发布于 2008-07-10 17:42:00
哈,我看懂了,想做问道外挂,有意思.加入这个外挂群2561900,我也是管理员.好好聊下.
7 楼
joforn [专家分:1460] 发布于 2008-07-10 22:26:00
WM_SETTEXT能修改窗体的文字是没错,但要注意Edit(VB中的TextBox也是此类控件)类控件是不处理这个消息的。而要改用EM_REPLACESEL消息来设置此类控件的文字。
8 楼
tanchuhan [专家分:15140] 发布于 2008-07-10 23:30:00
[quote]WM_SETTEXT能修改窗体的文字是没错,但要注意Edit(VB中的TextBox也是此类控件)类控件是不处理这个消息的。而要改用EM_REPLACESEL消息来设置此类控件的文字。[/quote]
NO,WM_SETTEXT是很多Windows标准控件都会处理的一条消息,并不仅仅是拿来设置窗体标题文字的
像button, edit之类的都是用这条消息来设置文字的
我来回复