找回密码
 加入
搜索
查看: 1938|回复: 3

(已解決)請教 treview 控件操作問題

[复制链接]
发表于 2009-5-8 09:03:01 | 显示全部楼层 |阅读模式
本帖最后由 stdmis 于 2009-5-11 13:59 编辑

寫了一個自動安裝  Dr.eye 譯典通 7.0 專業版 的腳本,其中有選擇元件的頁面使用了 Treeview 控件,默認是安裝所有元件,我使用下面的代碼選擇我要安裝的元件,屏幕上顯示了只有我要的元件被選取,但實際上還是安裝了所有的元件。想知道問題出在哪裡。
$Text="選擇元件"
  WinWait($wTitle,$wText)
  If Not WinActive($wTitle,$wText) Then WinActivate($wTitle,$wText)
  ;取得控件句柄
  $hWnd=ControlGetHandle($wTitle,$wText, "SysTreeView321")
  ;取消全部選取
  $hStart = _GUICtrlTreeView_GetFirstItem($hWnd)
  $fCheck = False  
  While $hStart <> 0x00000000   
    _GUICtrlTreeView_SetChecked($hWnd,$hStart,$fCheck)
    $hStart = _GUICtrlTreeView_GetNext($hWnd, $hStart)        
  WEnd
  ;選取需要的功能
  $hItemFound = _GUICtrlTreeView_FindItem($hWnd, "Dr.eye 譯典通程式")
  _GUICtrlTreeView_SetChecked($hWnd,$hItemFound,not $fCheck)
  $hItemFound = _GUICtrlTreeView_FindItem($hWnd, "Dr.eye 譯典通 7.0 專業版基本功能")
  _GUICtrlTreeView_SetChecked($hWnd,$hItemFound,not $fCheck)
  $hItemFound = _GUICtrlTreeView_FindItem($hWnd, "自動翻譯")
  _GUICtrlTreeView_SetChecked($hWnd,$hItemFound,not $fCheck)
  _GUICtrlTreeView_EndUpdate($hwnd)
  Sleep(5000) ;查看自己的選取結果
  ;send("!n")  ;先停用此句,使用手工操作。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2009-5-8 16:39:43 | 显示全部楼层
頂起,別沉了
 楼主| 发表于 2009-5-9 16:42:26 | 显示全部楼层
本帖最后由 stdmis 于 2009-5-9 17:19 编辑

多謝指教,試試先。


我試了,也看了UDF的說明
_GUICtrlTreeView_ClickItem 只是Click on a item ,並不會改變這個控件是否被選取的狀態。
運行說明中的代碼,也只是使那個不TEM處理選取狀態,並不會改變前面的CHECK狀態

感謝你的回答
 楼主| 发表于 2009-5-11 13:59:06 | 显示全部楼层
說的是,測試了一下,基本可以達到我的要求,代碼修改後如下:
;取消全部選取  
  MsgBox(0,"","取消全部",3)
  $hItemFound = _GUICtrlTreeView_FindItem($hWnd, "Dr.eye 譯典通程式")
  _GUICtrlTreeView_ClickItem($hWnd,$hItemFound)
  send("{space}")  
  ;選取需要的功能
  MsgBox(0,"","選取基本功能",2)
  $hItemFound = _GUICtrlTreeView_FindItem($hWnd, "Dr.eye 譯典通 7.0 專業版基本功能")
  _GUICtrlTreeView_ClickItem($hWnd,$hItemFound,"Left")
  send("{space}")
  MsgBox(0,"","取消桌布選項",2)
  $hItemFound = _GUICtrlTreeView_FindItem($hWnd, "桌布")
  _GUICtrlTreeView_ClickItem($hWnd,$hItemFound,"Left")
  send("{space}")  
  MsgBox(0,"","選取自動翻譯",2)
  $hItemFound = _GUICtrlTreeView_FindItem($hWnd, "自動翻譯")
  _GUICtrlTreeView_ClickItem($hWnd,$hItemFound,"Left")
  send("{space}")
  MsgBox(0,"","取消MSN翻譯插件",2)
  $hItemFound = _GUICtrlTreeView_FindItem($hWnd, "MSN翻譯插件")
  _GUICtrlTreeView_ClickItem($hWnd,$hItemFound,"Left")
  send("{space}")
    MsgBox(0,"","選取完成",2)
  send("!n")
以上代碼請結合上面的圖可以看出我的安裝要求。不過安裝完成後進行復查。發現還是會安裝MSN翻譯插件

同一腳本另一段卻完全正常,實現了我的要求(不安裝日華華日辭典)
$wText="選擇元件"
  WinWait($wTitle,$wText)
  If Not WinActive($wTitle,$wText) Then WinActivate($wTitle,$wText)
  ;;取得控件句柄
  $hWnd=ControlGetHandle($wTitle, $wText, "SysTreeView321")   
  $hItemFound = _GUICtrlTreeView_FindItem($hWnd, "日華華日辭典")  
  _GUICtrlTreeView_ClickItem($hWnd,$hItemFound,"Left")
  send("{space}")  
  send("!n")

我再修改代碼測試。感謝你的指教。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-23 03:24 , Processed in 0.077256 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表