vb FindWindowEx返回值一直是0
x=Shell("C:\Users\yuanhao\Desktop\xx.exe")Mir2Hwnd=FindWindow(vbNullString,"工程1")hwnd...
x = Shell("C:\Users\yuanhao\Desktop\xx.exe")
Mir2Hwnd = FindWindow(vbNullString, "工程1")
hwnd = FindWindowEx(Mir2Hwnd, 0, ThunderRT6CommandButton, "确定")
打开一个exe文件,这个exe文件有个窗口叫“工程1”,窗口里有个 叫“确定”的按钮。。。
我就是想实现,打开exe(shell做到了),找到窗口句柄(findwindow做到了),然后点击“确定”按钮,却怎么也实现不了。。。求大神指点。。。 展开
Mir2Hwnd = FindWindow(vbNullString, "工程1")
hwnd = FindWindowEx(Mir2Hwnd, 0, ThunderRT6CommandButton, "确定")
打开一个exe文件,这个exe文件有个窗口叫“工程1”,窗口里有个 叫“确定”的按钮。。。
我就是想实现,打开exe(shell做到了),找到窗口句柄(findwindow做到了),然后点击“确定”按钮,却怎么也实现不了。。。求大神指点。。。 展开
1个回答
展开全部
hwnd = FindWindowEx(Mir2Hwnd, 0, ThunderRT6CommandButton, "确定")
改为
hwnd = FindWindowEx(Mir2Hwnd, 0, "ThunderRT6CommandButton", "确定")
类名称要加引号,否则VB会把它作为一个变量来看待
另外,类名称与窗口名(或控件名)一般无须同时提供,所以也可改为
hwnd = FindWindowEx(Mir2Hwnd, 0, vbNullString, "确定")
改为
hwnd = FindWindowEx(Mir2Hwnd, 0, "ThunderRT6CommandButton", "确定")
类名称要加引号,否则VB会把它作为一个变量来看待
另外,类名称与窗口名(或控件名)一般无须同时提供,所以也可改为
hwnd = FindWindowEx(Mir2Hwnd, 0, vbNullString, "确定")
更多追问追答
追问
真心的还是0.。。就是不能获取“确定”按钮。。。亲,您亲自测试过吗?
我的目的很简单。。就是实现Vb自动点击对话框中的“确定”按钮。。。。就这么简单。却一直实现不了。您还有其他好方法吗?
追答
我测试后能获取“确定”按钮啊,不管是按类名还是按钮名来找都成功。经过Spy++验证完全符合。
关键你是用Shell打开程序后就立刻检测,由于Shell是异步运行的,所以这个时候你要打开的那个程序很可能还没有真正开始运行,也就是说它的窗口很可能还不存在呢,所以这个时候立刻检测就很可能会获取不到你要的句柄。解决办法是要添加延时,或者改用同步运行方式,或者如果仅仅是要实现测试目的,可以先手工把那个程序打开,然后再来检测。
其次,一定要保证所有窗体中只有一个的窗体名是叫“工程1”的,否则的话就会造成混乱。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询