找回密码  加入

QQ登录

只需一步,快速开始

AUTOIT CN

搜索
查看: 138|回复: 9

[系统综合] 关于au3操作DirectUIHWND类的请教

[复制链接]
发表于 2020-2-8 23:23:59 | 显示全部楼层 |阅读模式
  1. HotKeySet("o", "GetFocusedFullPath")

  2. Func GetFocusedFullPath()
  3.         $ListViewHWnd = ControlGetHandle("", "", "SysListView321")
  4.         $ItemSelectedId = ControlListView("", "", $ListViewHWnd, "GetSelected")
  5.         $ItemText = ControlListView("", "", $ListViewHWnd, "GetText", $ItemSelectedId)
  6.         $Path = ControlGetText("", "", "Edit1")
  7.         MsgBox(0, "", $Path & $ItemText)
  8. EndFunc   ;==>GetFocusedFullPath

  9. While 1
  10.         Sleep(1000)
  11. WEnd
复制代码
以上代码是从论坛中找的某高人的代码,它可以在鼠标选中的情况下,按O键显示文件名。
但我用到资源管理器中,比如我的电脑中,打开D盘后,执行后不能显示文件名,是空,
我观察了一下,在桌面运行是SysListView321类的操作,但在资源管理器中是DirectUIHWND类的操作。
查了些资料,能力有限,还是没办法改为DirectUIHWND操作,请各位高手们,版主们指导一下使用方法,谢谢!
 楼主| 发表于 2020-2-8 23:26:41 | 显示全部楼层
忘记说了,我使用的是win7操作系统64位
发表于 2020-2-9 00:16:53 | 显示全部楼层
Au3Info.exe查看
桌面:SysListView321
资源管理器中:SysTreeView321
发表于 2020-2-9 00:18:47 | 显示全部楼层
故:将代码中的 list  全部更改为: tree,   即可:
  1. HotKeySet("o", "GetFocusedFullPath")

  2. Func GetFocusedFullPath()
  3.         $ListViewHWnd = ControlGetHandle("", "", "SysTreeView321");SysListView321")
  4.         $ItemSelectedId = ControlTreeView("", "", $ListViewHWnd, "GetSelected");ControlListView("", "", $ListViewHWnd, "GetSelected")
  5.         $ItemText = ControlTreeView("", "", $ListViewHWnd, "GetText", $ItemSelectedId);ControlListView("", "", $ListViewHWnd, "GetText", $ItemSelectedId)
  6.         $Path = ControlGetText("", "", "Edit1")
  7.         MsgBox(0, "", $Path & $ItemText)
  8. EndFunc   ;==>GetFocusedFullPath

  9. While 1
  10.         Sleep(1000)
  11. WEnd
复制代码


发表于 2020-2-9 00:28:13 | 显示全部楼层
本帖最后由 floor6ggg 于 2020-2-9 00:31 编辑

win7操作系统64位PC版本,测试通过,           资源管理器左侧框,鼠标选中的情况下,按O键显示文件名。

本帖子中包含更多资源

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

x
 楼主| 发表于 2020-2-9 14:53:56 | 显示全部楼层
你的代码左侧是可以正常运行,但我是想在右侧主窗口来用,右侧是DirectUIHWND3类,不知道怎么操作
发表于 2020-2-9 23:32:07 | 显示全部楼层
本帖最后由 floor6ggg 于 2020-2-9 23:41 编辑

DirectUIHWND 貌似没有直接现成的函数代码可以 直接操作,猜想 dllcall应该可以实现,但本人对这一块没有入门不熟悉!!!!应该有多种解法的,能力有限,自己写不出来………………………期待高人的解法…………
外网找了一下,发现如果要实现楼主的目标,也可以采用其他的方式:ObjCreate("Shell.Application")
发表于 2020-2-9 23:39:31 | 显示全部楼层
本帖最后由 floor6ggg 于 2020-2-9 23:58 编辑

效果图如图所示:

本帖子中包含更多资源

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

x
发表于 2020-2-9 23:46:26 | 显示全部楼层
本帖最后由 floor6ggg 于 2020-2-9 23:54 编辑

win7系统PC版本测试通过:AutoIt(AU3) v3.3.7.15
  1. HotKeySet("o", "GetFocusedFullPath")

  2. Func GetFocusedFullPath()
  3. $hWnd = WinGetHandle('[class:CabinetWClass]','')
  4. $hWnd_DirectUIHWND = ControlGetHandle($hWnd,'','[CLASS:DirectUIHWND; INSTANCE:3]')
  5. $oSHFolderView=_ObjectSHFolderViewFromWin($hWnd)
  6. If Not @error Then   
  7.     $sFileToSelect=$oSHFolderView.FocusedItem.Name
  8.         $p=$oSHFolderView.FocusedItem.path
  9.         MsgBox(0,'选择的是: ',$sFileToSelect& @CRLF &$p)
  10. EndIf
  11. EndFunc   ;==>GetFocusedFullPath

  12. While 1
  13.         Sleep(1000)
  14. WEnd

  15. Func _ObjectSHFolderViewFromWin($hWnd)
  16.     If Not IsHWnd($hWnd) Then Return SetError(1,0,0)
  17.     Local $oShell,$oShellWindows,$oIEObject,$oSHFolderView
  18.     $oShell=ObjCreate("Shell.Application")
  19.     If Not IsObj($oShell) Then Return SetError(2,0,0)

  20. ;   Get a 'ShellWindows Collection' object
  21.     $oShellWindows = $oShell.Windows()
  22.     If Not IsObj($oShellWindows) Then Return SetError(3,0,0)

  23. ;   Iterate through the collection - each of type 'InternetExplorer' Object
  24.     For $oIEObject In $oShellWindows
  25.         If $oIEObject.HWND = $hWnd Then
  26.             ; InternetExplorer->Document = ShellFolderView object
  27.             $oSHFolderView=$oIEObject.Document
  28.             If IsObj($oSHFolderView) Then Return $oSHFolderView
  29.             Return SetError(4,0,0)
  30.         EndIf
  31.     Next

  32.     Return SetError(-1,0,0)
  33. EndFunc
复制代码


 楼主| 发表于 2020-2-14 21:07:46 | 显示全部楼层
这个ObjCreate("Shell.Application")的方法,在资源管理器是可以,但没有支持桌面操作。呵呵,慢慢研究着,期待其它高手!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2020-2-27 04:25 , Processed in 0.062500 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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