注册 登录
编程论坛 VB6论坛

SendMessage和PostMessage

wube 发布于 2012-10-16 11:33, 539 次点击
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这样写是哪边有问题?会出现:
只有本站会员才能查看附件,请 登录
6 回复
#2
wube2012-10-16 11:37
SendMessage和PostMessage返回值不同就算把i设为Variant结果也相同
#3
wube2012-10-16 11:52
两个档案做反组译总共返回8个值
看似正常但是使用SendMessage时都会出现错误讯息
只好使用PostMessage略过错误讯息
但是还是想知道为什么
只有本站会员才能查看附件,请 登录
#4
Artless2012-10-16 12:11
SendMessage返回时间不确定。
#5
wube2012-10-16 12:15
回复 4楼 Artless
?
那怎办?
要让它小睡一下吗?
#6
wube2012-10-16 16:55
OK...
#7
wube2012-10-23 02:21
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 编辑 ]
1