VB程序员博客

VB程序开发

请教大家VB中sendmessage 如何发送坐标消息
我相单击写字板中工具栏中 "保存" 如下代码,问题在哪?

模块代码:
Option Explicit
Public Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long

Public Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type

Public Const WM_LBUTTONDOWN = &H201
Public Const MK_LBUTTON = &H1
Public Const WM_LBUTTONUP = &H202
Public Const WM_SETTEXT = &HC

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetDlgItem Lib "user32" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long
Public Declare Function SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Public Const BM_CLICK = &HF5

  '从两个 Integers 创建一个 Long 值
  Function MakeDWord(LoWord As Integer, HiWord As Integer) As Long
      MakeDWord = (HiWord * &H10000) Or (LoWord And &HFFFF&)
  End Function
       
窗口代码:(只有一个command1)
Dim sss As RECT
Dim b As Long, a As Long, c As Long, d As Long
Dim nMousePosition As Long
   

b = FindWindow(vbNullString, "文档 - 写字板")
If b = 0 Then
  MsgBox "没打开写字板"
End If

c = GetDlgItem(b, 59419)
d = GetDlgItem(c, 59392)
If d = 0 Then
  b = FindWindow(vbNullString, "标准型")
  c = GetDlgItem(b, 59423)
  d = GetDlgItem(c, 59392)
End If

GetWindowRect d, sss  '这么一步都是成功的,都能得到工具栏的位址信息
 
Let nMousePosition = MakeDWord(sss.Top + 35, sss.Left + 65)

Call SendMessage(d, WM_LBUTTONDOWN, MK_LBUTTON, ByVal nMousePosition)

End Sub

程序运行后,坐标位置好像不对,按键下去后也没上来,工具栏成移动状态
请大家帮忙啊,谢谢了

终于想明白了,原来是坐标搞错了

自己给自己奖励50元吧

呵呵,是坐标搞错了

mark


标签: , , ,