ui界面使用 DialogMonitorOPS 问题

-- 是类主要是实现对界面上元素的处理。实现效果的处理 
struct  gt_cl_hp_uiName (
    fn help  = (
    
        gt_10000_help = "
            类主要是实现对界面上元素的处理。实现效果的处理 
            
            property::
            
                sorUIname 要抓取的ui 界面的名称 (只要填写一部分就可以了 )
                desUIname 要更改ui 界面的新名称 
            method::    start() 
                    该方法对所有 ui界面名称进行监控处理 
            method::    end ()
                    该方法关闭监控 
                    
                        
            
            
            下面是使用实例
            op = gt_cl_hp_uiname()
            op.sorUIname = 实用工具
            op.desUIname = 0000
            op.start()
            op.end()

            
        "
        return  gt_10000_help 
    ),
    sorUIname = "" ,
    desUIname = "" ,
    fn dmnotification = (
        WindowHandle = DialogMonitorOPS.GetWindowHandle()
        names = (UIAccessor.GetWindowText(WindowHandle) ) as String 
        if   (findString  names  sorUIname  !=  undefined)   then (
            UIAccessor.SetWindowText WindowHandle desUIname     
        )
        WindowName =names
         if (WindowName != undefined) then
            (
                if (findString WindowName "Fgtun") != undefined then
                     (

                            chWindows = UIAccessor.GetChildWindows WindowHandle
                            for h = 1 to chWindows.count do
                            (
                                    if (chWindows[h] != 0) then
                                    (
                                            
                            if ( UIAccessor.GetWindowText chWindows[h] )=="是(&Y)" then  UIAccessor.PressButton  chWindows[h]
                                    )
                            )
                    )
            )
        true --- 最后返回是一个bool 类型数据
    ),
    fn start  = (
        try (
    --    DialogMonitorOPS.Enabled = false    
        DialogMonitorOPS.unRegisterNotification id:#gtneteaseUIname 
                
        DialogMonitorOPS.RegisterNotification dmnotification id:#gtneteaseUIname
        DialogMonitorOPS.Enabled = true
        )catch ()
    ),
    fn end =(
        try (
        DialogMonitorOPS.unRegisterNotification id:#gtneteaseUIname 
        DialogMonitorOPS.Enabled = false
        ) catch ()    
    )
    
)

关于 max 加入的这个自动点击的脚本  我使用很奇怪  有几点

1.如果我使用结构 在别的脚本中引用  脚本中在写一个 DialogMonitorOPS , 引用失效。 估计是自己没设计好

2.有时候 在处理max程序 循环中 不会等待,有问题,如 批量加入包裹,或做别的事情,就错。

要分步骤进行。

这次我的程序是更改 Unwrell2 ( 展uv 一个插件 )  的 窗口标头信息。

需求是 使用脚本批量展开。 但是展开后 ,弹出的窗口  所有的窗口都是同样的标签。

要求在窗口标签 改成 使用了 几层uv 张开的uv对应的object 的名称。

我使用了 DialogMonitorOPS  UIAccessor  但是 循环中发现 只对最后一个窗口处理。 解决办法是叫程序等待 。使用了messagebox 

到这里等待, 在使用 DialogMonitorOPS  UIAccessor 去点击  确定按钮, 就可以了。

解决了脚本处理不等待问题(术语不知道  就这样描述把)

 

 

 

 

 

 

 

posted on 2014-01-09 14:46  盖天00  阅读(5190)  评论(0编辑  收藏  举报

导航