queen 发表于 2006-11-30 12:59:05

如何判断一个窗口中按钮是“yes”还是“ok”?

if(win_exists("提示", 2)==E_OK)
      {
       set_window ("提示", 5);
          if(("Yes")==E_OK)--我想表达的意思是:如果窗口“提示”中的按钮是“yes”,那么就点击“yes”按钮。如果是“ok”按钮,那么就点击“ok按钮。请教大虾,这个判断条件该如何写呢?”
             {
            button_press ("Yes");
           }
          else
               button_press ("OK");
    }

cybercop 发表于 2006-11-30 13:42:30

LZ用Bitmap checkpoint for object/window功能,插入检测点。
if(obj_check_bitmap("yes","imp1",3)==E_OK)
{
#spy一下窗口属性
set_window("")
button_press("yes");
}
else
{
set_window("")
button_press("OK");
}
LZ试一下哈,我也是新手,呵呵。

[ 本帖最后由 cybercop 于 2006-11-30 13:45 编辑 ]

queen 发表于 2006-11-30 16:27:09

可能我的意思没有表达清楚,请大家看一下图片

yes图片在Ok图片之前。二者的窗口属性是一样的,都是“提示”窗口。

yes图片根据条件有时会弹出,有时不会弹出。Ok图片肯定会弹出,即无论前面是否有弹出yes图片,ok都会出来。


我所想要的是,当弹出yes的窗口时,就会点击yes按钮。当弹出Ok窗口时,就会点击Ok按钮。


楼上的二位大虾提出的办法,我试了一下,但是用检查点的方法if(obj_check_bitmap("yes","imp1",3)==E_OK)一定要获得"yes"按钮的窗口才可以。而yes按钮是不一定出现的。如果出现了OK按钮,那么这个if的语句就行不通了。

我试了用取得按钮上文字的方法,obj_get_text("Yes",v_button);用printf(v_button)是可以打印出取到的文字。但应用到if(obj_get_text("Yes", v_button)==Yes)的时候,v_button却会取到空值。也根本无法执行这个判断语句。且也是要获得"yes"按钮的窗口才可以。

第三中的方式,按钮的label属性改成通配符,yes按钮的属性是
{
class: push_button,
label: Yes
}

Ok按钮的属性是:没有label
{
class: push_button
}
两个按钮的属性不一样,不能改为通配符呀

[ 本帖最后由 queen 于 2006-12-6 12:36 编辑 ]

queen 发表于 2006-11-30 18:04:31

多谢大虾的提醒,捕捉了提示窗口的文字,终于成功了。但我以下的奇怪现象,wr对于字符不认识,对于中文会认识?请看如下的脚本,第二个脚本是可以运行的。即if判断语句可以执行。


win_get_text("提示", text1, 59, 91, 146, 120); #Yes
if(win_exists("提示", 2)==E_OK)
      {
       set_window ("提示", 5);
         if(text1=="Yes")--匹配不到
             {
            button_press ("Yes");
          }
          else
             {   
       set_window ("提示", 5);
      button_press ("OK");
    }
    }
   
win_get_text("提示", text, 128, 41, 188, 64); # 未清洁房
if(win_exists("提示", 2)==E_OK)
      {
       set_window ("提示", 5);
       if(text=="未清洁房")--可以匹配成功
             {
            button_press ("Yes");
          }
          else
             {   
       set_window ("提示", 5);
      button_press ("OK");
    }
    }

[ 本帖最后由 queen 于 2006-11-30 18:06 编辑 ]

queen 发表于 2006-12-1 09:31:26

我用printf();查看捕捉到的“text1”的值,是正确的,是等于"Yes"。

但“text1”运用到 if(text1=="Yes")语句中,就认不到,跳到else去了。

queen 发表于 2006-12-1 10:53:02

调试了脚本,text1值一直没有变,都是text1:"Yes"

queen 发表于 2006-12-1 11:48:45

可以了!非常感谢解开了我的疑惑。 sdlkfj3

用win_get_text("提示", text1, 59, 91, 146, 120); #Yes取到的" yes"前面确实有个空格! 

我有试过将观察点取到的值text1:"Yes"或者pintf()打印出来的值直接复制到if语句里面也不行。看来要手工在if语句yes前面里输入一个空格才行。

重新开赌 发表于 2006-12-4 17:43:02

如果使用button_get_info可能会好点!

queen 发表于 2006-12-6 12:34:55

button_get_info ( button, property, out_value );

也必须得到button的逻辑名或物理描述,在我录制的应用程序中,button yes 或者button OK
是不一定哪个先出现的。 这样button的值就不知道要填yes还是ok。
页: [1]
查看完整版本: 如何判断一个窗口中按钮是“yes”还是“ok”?