51Testing软件测试论坛

标题: 无法得到窗口的句柄 [打印本页]

作者: lijinshui    时间: 2009-10-28 15:27
标题: 无法得到窗口的句柄
下面的代码可以用来判断记事本窗口是否可见,如果可见的话,出力出口为“OK”,否则“NG”
可是我的问题是,如果在程序执行的时候记事本没有打开的情况下,
var_GetROProperty = Window("Notepad").GetROProperty("hwnd")
这句话就会报错,也就无法得到窗口的句柄了,也就无法判断这个窗口是否可见
大家有没有好的办法啊

Extern.Declare micHwnd,"IsWindowVisible","user32.dll" , "IsWindowVisible" ,micHwnd
var_GetROProperty = Window("Notepad").GetROProperty("hwnd")

If Extern.IsWindowVisible(var_GetROProperty) Then
         msgbox "is ok"
         else
         msgbox "NG"
End If
作者: lijinshui    时间: 2009-10-28 15:31
我有个方法就是用代码打开“Task Manager”
用循环在里面查找有没有Notepad.exe
判断1:如果没有的话,就启动一个新的进程,继续作下面的操作
判断2:如果存在的情况下,继续作下面的操作

这样做是可以实现的,但是我觉得笨笨的,肯定还有别的办法的
作者: mklodoss    时间: 2009-10-28 15:40
Extern.Declare micHwnd,"IsWindowVisible","user32.dll" , "IsWindowVisible" ,micHwnd
if Window("Notepad").exist(2) then
var_GetROProperty = Window("Notepad").GetROProperty("hwnd")

If Extern.IsWindowVisible(var_GetROProperty) Then
         msgbox "is ok"
         else
         msgbox "NG"
End If

End if

这样可以吗?
作者: 风雪夜归人    时间: 2009-10-28 16:07
Dim boolFlag
strComputer = "."

Set wbemServices = GetObject("winmgmts:\\" & strComputer )

Set wbemObjectSet = wbemServices.InstancesOf("Win32_Process")

For Each process In wbemObjectSet
        If InStr(1, process.Name, "notepad.exe", vbTextCompare) <> 0 Then
                MsgBox "is ok"
                boolFlag = True
                Exit For
        End If
Next

If Not(boolFlag) Then
        MsgBox "NG"
End If
作者: 风雪夜归人    时间: 2009-10-28 16:08
晕,哪个给我弄的头像。。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2