读书人

哪位高手能帮小弟我看看SendMessage的

发布时间: 2012-01-26 19:40:46 作者: rapoo

谁能帮我看看SendMessage的代码那里错了?
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
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 FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Const TA_TOP = 0

Private Sub Command1_Click()
Dim NavHwnd As Long
Dim NavName As String
Dim NavBuffer As String * 256
Dim TagHwnd As Long
Dim Tag As Long
NavHwnd = FindWindow("WindowsForms10.Window.8.app.0.33c0d9d", vbNullString)
If NavHwnd <> 0 Then
NavName = GetWindowText(NavHwnd, NavBuffer, 255)
Text2.Text = Left$(NavBuffer, NavName)
End If
Tag = FindWindowEx(NavHwnd, TagHwnd, vbNullString, "Play Route")
SendMessage TagHwnd, TA_TOP, 0, 0
End Sub



如图程序主要想激活名为Play Route 的TagPage控件(不知道TagPage的称呼是否正确,好像挺重要,大概影响常量的设定)

TA_TOP的常量使自己瞎猜的,网上没找到相关资料。

除了Text2.Text可以正确显示该窗体的标题,运行以后没有反应。

拜托了,帮顶、每天灌一贴、给链接、给思路。。。。。都欢迎。

[解决办法]
我不清楚你的这个是啥软件的截图,但一般tab控件(包括WINDOWS标准的和用户完全自绘的),每个页签的caption和相应页签的window name是没啥关系的,而且更多的情况是,一个控件中这所有的页签都是画在同一个DC上的.所以你用FindWindowEx这样去找是不会有啥用的
Tag = FindWindowEx(NavHwnd, TagHwnd, vbNullString, "Play Route")
SendMessage TagHwnd, TA_TOP, 0, 0

比如WINDOWS自带的 TabCtrl,是用TCM_SETCURSEL消息改变当前项的.

不过看你代码中还有TA_TOP这种定义,可能是确有其事,那这种控件我就不清楚了.
[解决办法]
友情Up..........

读书人网 >VB

热点推荐