lijinshui 发表于 2009-10-28 15:27:43

无法得到窗口的句柄

下面的代码可以用来判断记事本窗口是否可见,如果可见的话,出力出口为“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:28

我有个方法就是用代码打开“Task Manager”
用循环在里面查找有没有Notepad.exe
判断1:如果没有的话,就启动一个新的进程,继续作下面的操作
判断2:如果存在的情况下,继续作下面的操作

这样做是可以实现的,但是我觉得笨笨的,肯定还有别的办法的

mklodoss 发表于 2009-10-28 15:40:42

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:05

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:21

晕,哪个给我弄的头像。。
页: [1]
查看完整版本: 无法得到窗口的句柄