回 帖 发 新 帖 刷新版面

主题:请教向窗口发信息问题

[size=4]想通过VB编程向一个窗口发信息,但发现这个窗口的窗口标题是空,请问这种情况下怎样才能实现向窗口发信息?谢谢。[/size]

回复列表 (共7个回复)

沙发

返回长度 = SendMessage(句柄, WM_GETTEXT, 缓冲字符长度, ByVal 缓冲字符串)
标题 = Left(缓冲字符串, 返回长度)

如果结果为空,说明目标窗口用了非标准窗口/自己模拟出来的标题栏.

板凳


To:tanchuhan

还是不明白,怎样才能定位找到这个窗口呢?

3 楼

[quote]
To:tanchuhan

还是不明白,怎样才能定位找到这个窗口呢?[/quote]
晕,理解错你的意思了,还以为你找到窗口,想获取他的标题.

可以看下它的类名是不是固定的(MFC程序的窗口类名是随机不顾定的),如果固定且非系统的对话框类名(如#32700),那可以用FindWindow(类名, vbNullString)找到.
先自己用SPY++观察下目标窗口的各种特征,再慢慢想办法,反正肯定能查出来的.

4 楼

对话框类名是固定的 #32770,但用FindWindow("#32770", vbNullString)返回的句柄不是我所要找的窗口的句柄,我用for 语句 运行了10次FindWindow("#32770", vbNullString),发现返回的句柄都是一样的,不知哪里出问题了?

麻烦高手再帮帮忙,API函数我这是第一次接触,还在学习中,希望高手能多说几句。

5 楼

下个窗口句柄 = FindWindowEx(0, 上个窗口句柄, 类名, 标题)

6 楼

To:tanchuhan

您好!谢谢回复。

我现在发现:问题在没有找到窗口的正确句柄。

即FindWindow("#32770", vbNullString)返回的句柄不是我所要找的窗口的句柄,怎样才能找到正确的句柄呢?

7 楼

你自己要分析呀,例如它有多少个子窗口,子控件ID是否固定.什么的,GetDlgItem GetWindowRect之类的一大堆函数帮你判断.还有看窗口所属进程是否符合.
自己摸索.

我来回复

您尚未登录,请登录后再回复。点此登录或注册