| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 539 人关注过本帖
标题:SendMessage和PostMessage
只看楼主 加入收藏
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
结帖率:97.66%
收藏
已结贴  问题点数:20 回复次数:6 
SendMessage和PostMessage
Myhwnd()内为别支程式上的控制项句柄

程序代码:
Public Function PatternUnCompliar(FN As String, TP As String) As Boolean
Dim pID As Long, hProcess As Long, i As Integer
Dim Source As Long, OutPut As Long, Start As Long, Out As Long
Dim Temp() As String, TPN As String

    If Right$(FN, Len(Ext2)) = Ext2 Then
        TPN = Replace(FN, Ext2, Ext3)
        TPN = TP & Mid$(TPN, InStrRev(TPN, "\") + 1)
        
        pID = Shell(Aprcg, vbNormalFocus)
        EnumChildWindows GetDesktopWindow, AddressOf EnumChildProc, ByVal 0&
        
        For i = 1 To UBound(Myhwnd)
            Temp = Split(Myhwnd(i), ",")

            If i = 1 Then
                Source = CLng(Temp(0))
            ElseIf i = 2 Then
                OutPut = CLng(Temp(0))
            ElseIf i = 3 Then
                Start = CLng(Temp(0))
            ElseIf i = 4 Then
                Out = CLng(Temp(0))
            End If
            
            Erase Temp
        Next i
        
        i = SendMessage(CLng(Source), WM_SETTEXT, 0, ByVal FN)
        Debug.Print i
        i = SendMessage(CLng(OutPut), WM_SETTEXT, 0, ByVal TPN)
        Debug.Print i
'        i = SendMessage(CLng(Start), BM_CLICK, 0&, ByVal 0&)
        i = PostMessage(CLng(Start), BM_CLICK, CLng(0), CLng(0))
        Debug.Print i
'        i = SendMessage(CLng(Out), BM_CLICK, 0&, ByVal 0&)
        i = PostMessage(CLng(Out), BM_CLICK, CLng(0), CLng(0))
        Debug.Print i
        
        KillProcess Mid$(Aprcg, InStrRev(Aprcg, "\") + 1)
        
        FN = TPN
        MyhwndCount = 0: ReDim Preserve Myhwnd(MyhwndCount)
            
    Else
        MsgBox "PatternUnCompliar Error !!"
    End If
    
End Function


为何用SendMessage模拟按钮事件会出现错误讯息?
用PostMessage就OK?

我大概知道SendMessage和PostMessage之间作用的差异
想问SendMessage这样写是哪边有问题?会出现:
图片附件: 游客没有浏览图片的权限,请 登录注册
2012-10-16 11:33
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
SendMessage和PostMessage返回值不同就算把i设为Variant结果也相同

不要選我當版主
2012-10-16 11:37
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
两个档案做反组译总共返回8个值
看似正常但是使用SendMessage时都会出现错误讯息
只好使用PostMessage略过错误讯息
但是还是想知道为什么
图片附件: 游客没有浏览图片的权限,请 登录注册

不要選我當版主
2012-10-16 11:52
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:14 
SendMessage返回时间不确定。

无知
2012-10-16 12:11
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
回复 4楼 Artless
?
那怎办?
要让它小睡一下吗?

不要選我當版主
2012-10-16 12:15
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
OK...

不要選我當版主
2012-10-16 16:55
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
http://support.

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 Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 wube 于 2012-10-23 02:26 编辑 ]

不要選我當版主
2012-10-23 02:21
快速回复:SendMessage和PostMessage
数据加载中...
 
   



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

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