11 个解决方案
#1
每一个返回值都要判断是否成功了
#2
怎么加呢
#3
Do循环 + Sleep()
用Sleep的目的是使程序在找窗口的过程中(查找都已经加载完成的窗口不用考虑Sleep)不会太占CUP资源。
另外可以用一个变量计数,按Sleep()的时间+最大循环次数给定一个“最大等待时间”,
超过给定的时间没有找到目标窗口,也要强制退出循环(有效防止各种不确定因素造成程序死锁)。
(或“按最长等待时间”反算最大循环次数)
上面的这个“找窗口句柄的过程”最好是封装成一个函数,
这样可以“顺序调用”的形式实现查找多层嵌套的窗口、并且便于每一步查找的“验证”。
#4
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
#5
每一个返回值都要判断是否成功了
怎么加呢
Do循环 + Sleep()
用Sleep的目的是使程序在找窗口的过程中(查找都已经加载完成的窗口不用考虑Sleep)不会太占CUP资源。
另外可以用一个变量计数,按Sleep()的时间+最大循环次数给定一个“最大等待时间”,
超过给定的时间没有找到目标窗口,也要强制退出循环(有效防止各种不确定因素造成程序死锁)。
(或“按最长等待时间”反算最大循环次数)
上面的这个“找窗口句柄的过程”最好是封装成一个函数,
这样可以“顺序调用”的形式实现查找多层嵌套的窗口、并且便于每一步查找的“验证”。
我就是不知道为什么这么长 我这个程序之前在WIN7 里面运行的时候没事,后来因为我要获取的软件需要xp系统,所以我就装了一个虚拟机,然后在虚拟机里运行这个程序就变成这样了
#6
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
#7
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
#8
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
没有吧 第三个不是窗口类型,第四个我不是窗口标题吗
#9
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
没有吧 第三个不是窗口类型,第四个我不是窗口标题吗
对的。你说“找不到”,我还以为是你把类名和窗口标题搞反了呢。
如果没错,就应该能找到窗口句柄呀。
#10
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
没有吧 第三个不是窗口类型,第四个我不是窗口标题吗
对的。你说“找不到”,我还以为是你把类名和窗口标题搞反了呢。
如果没错,就应该能找到窗口句柄呀。
对啊 不知道为什么返回句柄为0
#11
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
没有吧 第三个不是窗口类型,第四个我不是窗口标题吗
对的。你说“找不到”,我还以为是你把类名和窗口标题搞反了呢。
如果没错,就应该能找到窗口句柄呀。
对啊 不知道为什么返回句柄为0
你的 AgvHandle2 的值,跟用Spy++看到的值(它的是16进制)一致不?
如果一致的话,看看用
AgvLVHandle = FindWindowEx(AgvHandle2,0&,vbNullString, vbNullString)
有没有句柄值返回。
#1
每一个返回值都要判断是否成功了
#2
每一个返回值都要判断是否成功了
怎么加呢
#3
每一个返回值都要判断是否成功了
怎么加呢
Do循环 + Sleep()
用Sleep的目的是使程序在找窗口的过程中(查找都已经加载完成的窗口不用考虑Sleep)不会太占CUP资源。
另外可以用一个变量计数,按Sleep()的时间+最大循环次数给定一个“最大等待时间”,
超过给定的时间没有找到目标窗口,也要强制退出循环(有效防止各种不确定因素造成程序死锁)。
(或“按最长等待时间”反算最大循环次数)
上面的这个“找窗口句柄的过程”最好是封装成一个函数,
这样可以“顺序调用”的形式实现查找多层嵌套的窗口、并且便于每一步查找的“验证”。
#4
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
#5
每一个返回值都要判断是否成功了
怎么加呢
Do循环 + Sleep()
用Sleep的目的是使程序在找窗口的过程中(查找都已经加载完成的窗口不用考虑Sleep)不会太占CUP资源。
另外可以用一个变量计数,按Sleep()的时间+最大循环次数给定一个“最大等待时间”,
超过给定的时间没有找到目标窗口,也要强制退出循环(有效防止各种不确定因素造成程序死锁)。
(或“按最长等待时间”反算最大循环次数)
上面的这个“找窗口句柄的过程”最好是封装成一个函数,
这样可以“顺序调用”的形式实现查找多层嵌套的窗口、并且便于每一步查找的“验证”。
我就是不知道为什么这么长 我这个程序之前在WIN7 里面运行的时候没事,后来因为我要获取的软件需要xp系统,所以我就装了一个虚拟机,然后在虚拟机里运行这个程序就变成这样了
#6
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
#7
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
#8
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
没有吧 第三个不是窗口类型,第四个我不是窗口标题吗
#9
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
没有吧 第三个不是窗口类型,第四个我不是窗口标题吗
对的。你说“找不到”,我还以为是你把类名和窗口标题搞反了呢。
如果没错,就应该能找到窗口句柄呀。
#10
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
没有吧 第三个不是窗口类型,第四个我不是窗口标题吗
对的。你说“找不到”,我还以为是你把类名和窗口标题搞反了呢。
如果没错,就应该能找到窗口句柄呀。
对啊 不知道为什么返回句柄为0
#11
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
另外:
窗口句柄都是32位的整数,不知道你的结果怎么会是那么长一串数字?
你的保存查找结果的变量,是什么类型的?
又是习惯性的“变量不声明就使用”吧!
我现在可以获取前面几个窗口的句柄了 但是到SysListView32的时候就获取不了了,返回值为0
参数传错了。
第3个和第4个的值互换一下。
没有吧 第三个不是窗口类型,第四个我不是窗口标题吗
对的。你说“找不到”,我还以为是你把类名和窗口标题搞反了呢。
如果没错,就应该能找到窗口句柄呀。
对啊 不知道为什么返回句柄为0
你的 AgvHandle2 的值,跟用Spy++看到的值(它的是16进制)一致不?
如果一致的话,看看用
AgvLVHandle = FindWindowEx(AgvHandle2,0&,vbNullString, vbNullString)
有没有句柄值返回。