标题:新手请教sendmessage的用法
只看楼主
b13690976754
Rank: 1
等 级:新手上路
威 望:2
帖 子:835
专家分:7
注 册:2006-11-9
得分:0 
师傅有事忙,我等!

If Dir(\"alive\") <> \"\" And Dir(\"ideal\") <> \" Then Print \"strive\" End If
2007-04-20 19:08
偶是天才
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-4-20
得分:0 
我看你连什么消息什么是句柄有什么用都不知道了...
也还敢来弄api

2007-04-20 19:11
b13690976754
Rank: 1
等 级:新手上路
威 望:2
帖 子:835
专家分:7
注 册:2006-11-9
得分:0 
你不回答 没人说你 我看你好似在刷积分,很多贴都乱回答,你厉害你来回答我问题。

If Dir(\"alive\") <> \"\" And Dir(\"ideal\") <> \" Then Print \"strive\" End If
2007-04-20 19:50
偶是天才
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-4-20
得分:0 
我不会...所以不敢答....
也不敢随随便便搬弄api
2007-04-20 19:59
b13690976754
Rank: 1
等 级:新手上路
威 望:2
帖 子:835
专家分:7
注 册:2006-11-9
得分:0 
搞了好久 还是 没弄出来  怎么响应活动窗体 让活动窗体按下某个键

If Dir(\"alive\") <> \"\" And Dir(\"ideal\") <> \" Then Print \"strive\" End If
2007-04-20 20:11
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
得分:0 
回复:(b13690976754)[em04]师傅这个是改你编的程序...

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long

Private Const WM_KEYDOWN = &H100

Private Sub Command1_Click()
Timer1.Interval = 500
End Sub

Private Sub Timer1_Timer()
Dim findhwnd As Long
findhwnd = FindWindow(vbNullString, "Crazy Arcade")
If findhwnd = 0 Then
Me.Caption = "未运行"
Else
Me.Caption = "已运行"
SendMessage findhwnd, WM_KEYDOWN, 65, 0&
End If
End Sub

我刚测试过这段代码,没有问题的 要注意 有的时候应用程序窗口的标题并非是其真正的Caption,例如千千静听.这个时候我们需要借助其它工具先取得它的Caption,给你介绍个工具Spy++,你说的那个跑跑堂我没玩过,但是我们只要能取得它的窗口Caption,我们一样可以向它发送任意消息
另外,我要说明一点 取得窗口句柄的方法还有很多 例如我们可以遍历所有的窗口,我们可以取得当前活动的窗口只要我们调用不同的API函数就可以了 Findwindow只是一种途径




鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-04-21 09:01
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
得分:0 
回复:(redice)回复:(b13690976754)[em04]师傅这...
http://bbs.bc-cn.net/viewthread.php?tid=133581

/images/2011/147787/2011051411021524.jpg" border="0" />
2007-04-21 09:02
b13690976754
Rank: 1
等 级:新手上路
威 望:2
帖 子:835
专家分:7
注 册:2006-11-9
得分:0 
回复:(redice)回复:(b13690976754)[em04]师傅这...
对于千千静听我明白 如果检测不到Label会提示 未运行  这个程序只能对一些简单的窗体 施加按健命令  对于一些游戏窗体不起作用 是不是游戏窗体和普通窗体不同?

[此贴子已经被作者于2007-4-21 10:00:50编辑过]



If Dir(\"alive\") <> \"\" And Dir(\"ideal\") <> \" Then Print \"strive\" End If
2007-04-21 09:58
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
得分:0 
回复:(b13690976754)回复:(redice)回复:(b136...
我不是给你说了吗 对任何窗体都有效 只要你能正确取得它的句柄

鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-04-21 10:00
b13690976754
Rank: 1
等 级:新手上路
威 望:2
帖 子:835
专家分:7
注 册:2006-11-9
得分:0 
回复:(redice)回复:(b13690976754)回复:(redi...

可是信息真的发不出去呀。我又拿这个来做了实验


代码如下:
能检测到,但不对窗体输入任何东西,我点了密码框没反映,只有光标在跳。
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long
Private Const WM_KEYDOWN = &H100

Private Sub Command1_Click()
Timer1.Interval = 500
End Sub

Private Sub Timer1_Timer()
Dim hwnd As Long '
hwnd = FindWindow(vbNullString, "Login") 'Crazy Arcade
If hwnd = 0 Then
Label1.Caption = "未运行"
Else
Label1.Caption = "已运行"
SendMessage findhwnd, WM_KEYDOWN, 65, 1&
End If
End Sub


If Dir(\"alive\") <> \"\" And Dir(\"ideal\") <> \" Then Print \"strive\" End If
2007-04-21 10:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-132960-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.493703 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved