在vb中能否通过向其他程序控件发送WM_GETCONTROLNAME消息得到这个控件的name????

lsftest 2005-08-22 09:28:38
主要想实现在vb里区分其他程序窗体里同级、同标题、同类的控件。。。。。。。用其他方法都似乎不太保险。。。。。。。。。。
...全文
224 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinweihong 2005-10-05
  • 打赏
  • 举报
回复
感谢楼上的提醒,,,GetDlgCtrlID & SendDlgItemMessage
要获取控件的名字,只能分析内存,有了上面2个函数其他的就没必要了,呵呵,除非取LABEL一类的没句柄的:)
benyfeifei 2005-09-21
  • 打赏
  • 举报
回复
学习......
zhouxu21 2005-09-21
  • 打赏
  • 举报
回复
如果是静态控件,区分id即可。例如有5个文本框,他们会有5个id,api里有得到控件
idd的函数。
VBDN 2005-09-21
  • 打赏
  • 举报
回复
/关注/
yinweihong 2005-09-20
  • 打赏
  • 举报
回复
顶一个,现在我也碰到这个问题了,其他程序上有多个TextBox,全部清空了,该怎么严格区分开...
DemonLoveLizzy 2005-09-03
  • 打赏
  • 举报
回复
你是说控件的设计时名字?不是吧。
不过在内存中是有的,但具体的位置不好判断。应该是在.DATA的节表里。
yinweihong 2005-08-27
  • 打赏
  • 举报
回复
顶。。。。。。。。。。。。。。。
lsftest 2005-08-27
  • 打赏
  • 举报
回复
顶。。。。。。。。。。。。。。。
lsftest 2005-08-24
  • 打赏
  • 举报
回复
btn1&=FindWindowEx(hwnd,0,"button1",vbnullstring)'第一个
btn2&=FindWindowEx(btn1,0,"button2",vbnullstring)'第二个
================================
这就是上面提到的Windows Hierarchy Order方法,可以应付一般大多数情况,但不保险。。。。。
蒋晟 2005-08-23
  • 打赏
  • 举报
回复
WM_GETCONTROLNAME仅用于获得本进程内的Winform控件名称。对于其他应用程序,可以尝试获得窗口类信息。

参考http://msdn.microsoft.com/library/en-us/dnwinforms/html/autowforms.asp?frame=true#autowforms_topic5
yinweihong 2005-08-23
  • 打赏
  • 举报
回复
btn1&=FindWindowEx(hwnd,0,"button1",vbnullstring)'第一个
btn2&=FindWindowEx(btn1,0,"button2",vbnullstring)'第二个
表达不好不要见笑
yinweihong 2005-08-23
  • 打赏
  • 举报
回复
to楼上
好象取其他程序里面的child control name不到哦?spy++看不到,只有 id,caption,classname
不过,可以先找到父窗口句柄,再用FindWindowEx 试试
lsftest 2005-08-23
  • 打赏
  • 举报
回复
上面 jiangsheng(蒋晟.MSMVP2004Jan)兄提到的那篇文章以前就看过了,它里面提到的Caption and Class Name、Windows Hierarchy Order就是我上面所说的“似乎不太保险”的“其他方法”。。。。。。。。。。至于下面的:GetWindowsFormsID(wnd As Long)我在vb中没有试成功过。。。。。
或者举一个简单例子吧。。。。。。。。

程序a.exe:
Private Sub Command1_Click()
MsgBox "1"
End Sub
Private Sub Command2_Click()
MsgBox "2"
End Sub

Private Sub Form_Load()
Command1.Caption = ""
Command2.Caption = ""
End Sub

怎么写一个b.exe,能简单、准确地区分出a.exe中的command1和command2(忽略判断按钮坐标的方法)。。。。
上面的Caption and Class Name、Windows Hierarchy Order可以应付一般的情况,但如果a.exe的控件不是一成不变的甚至是动态的,就不行了。。。至于WM_GETCONTROLNAME,没试成功。。。。。。。。

lsftest 2005-08-22
  • 打赏
  • 举报
回复
同级用GETPARENT,同标题用GETWINDOWTEXT,同类用GETCLASSNAME,不就完了么。
======================================
“区分其他程序窗体里同级、同标题、同类的控件”。。。。。。。。。。。。。。
DemonLoveLizzy 2005-08-22
  • 打赏
  • 举报
回复
同级用GETPARENT,同标题用GETWINDOWTEXT,同类用GETCLASSNAME,不就完了么。

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧