TC9.0的history.txt里有几行更新说明(见文章末尾),可以用SendMessage命令获取信息, 消息号是WM_USER+50(即),wParam则是更新说明里的内容,

下面是我简单整理后的结果(带*是实用功能):

1-29是获取控件id,分别是消息号、控件名称、说明

  • 1/2 TMyListBox2/1 左/右侧列表
  • 3/4* 参考上面 来源/对面文件列表
  • 5/6 THeaderClick1/2 左/右标签
  • 7/8 TMyPanel5/8 左/右状态栏
  • 9/10* TPathPanel1/2 左/右路径
  • 11/12 TMyPanel6/9 左/右磁盘信息
  • 13/14 TMyComboBox2/3 左/右驱动
  • 15/16/17 TMyPanel4/7/2 左/右/底
  • 18/19 TMyListBox1/2 左/右树
  • 20 TMyComboBox1 命令行
  • 21 TMyPanel3 命令行当前路径
  • 22 TInEdit1 命令行内容
  • 23 TPanel1
  • 24/25 左/右驱动(待核实)
  • 26/27 TMyTabControl1/2 左/右标签(待核实)
  • 28 命令按钮(F1等)
  • 29 未知

以上则是获取其他信息,分别是消息号和返回内容,

  • 1000* 1/2 来源为左/右面板
  • 1001/1002 左/右面板当前文件总数(部分可能被过滤了)
  • 1003/1004 左/右面板总文件总数(无视过滤)
  • 1005/1006* 左/右面板选中文件数量
  • 1007/1008* 左/右面板当前光标的文件序号
  • 1009/1010 左/右未知
  • 1011/1012* 左/右第一个文件的序号

以上接口,能判断来源是左/右窗口的是,

获取信息的方法里,除了3/4能获取来源/目标文件列表控件,

其他方法都是针对左/右窗口的,来源/目标需要依据来区分。

获取来源当前光标文件名的逻辑:

  1. 3获取当前控件A
  2. ControlGetList获取所有文件内容B(每行一个文件,每列是文件的属性信息,以Tab分隔),注意:第一行是返回上一级的信息。
  3. 1007/1008获取文件序号C(因为上面的红字,这里获取的序号要+1)
  4. 根据B和C获取文件信息S,StrSplit(S, A_Tab)就可以获取文件的所有信息,文件名通常是[1]

根据这些接口,写了一系列获取信息的函数如下:

  1. get(n) ;NOTE 核心接口函数
  2. {
  3. Return SendMessage(, n, , , "Ahk_class TTOTAL_CMD")
  4. }
  5. ctlDirSrc() ;来源:路径控件
  6. {
  7. Return get(8+get(1000))
  8. }
  9. ctlDirTrg()
  10. {
  11. Return get(11-get(1000))
  12. }
  13. um_DirSrc() ;来源:目录路径(代替C2)
  14. {
  15. Return ControlGetText(ctlDirSrc(), "Ahk_class TTOTAL_CMD").dir()
  16. }
  17. um_DirTrg()
  18. {
  19. Return ControlGetText(ctlDirTrg(), "Ahk_class TTOTAL_CMD").dir()
  20. }
  21. um_ArrCurrentSrc() ;来源:光标文件信息(arr)
  22. {
  23. Return arrFileCurrent()
  24. }
  25. um_arrCurrentTrg()
  26. {
  27. Return arrFileCurrent()
  28. }
  29. um_FileNameSrc() ;来源:光标文件名
  30. {
  31. Return um_ArrCurrentSrc()[]
  32. }
  33. um_FileNameTrg()
  34. {
  35. Return um_ArrCurrentTrg()[]
  36. }
  37. um_FilePathSrc() ;来源:光标文件完整路径
  38. {
  39. Return um_DirSrc() . "\" . um_FileNameSrc()
  40. }
  41. um_FilePathTrg()
  42. {
  43. Return um_DirTrg() . "\" . um_FileNameTrg()
  44. }
  45. um_CopyNamesToClip() ;复制选中文件名(这块暂时还不能直接获取,得借用剪切板)
  46. {
  47. Clipboard := ""
  48. cm_CopyNamesToClip() ;复制名称
  49. If ClipWait(0.2)
  50. Return Clipboard
  51. }
  52. um_CopyFullNamesToClip() ;复制选中文件路径
  53. {
  54. Clipboard := ""
  55. cm_CopyFullNamesToClip()
  56. If ClipWait(0.2)
  57. Return Clipboard
  58. }
  59. ;获取光标文件的信息(arr)
  60. ;Src3,Trg4
  61. arrFileCurrent(tp:=)
  62. {
  63. str := ControlGetList("", get(tp), "Ahk_class TTOTAL_CMD") ;所有文件列表
  64. idx := get(+get()) + ;因为前面有个返回上一级的行
  65. Loop Parse, str, "`n", "`r"
  66. {
  67. If (A_Index = idx)
  68. Return StrSplit(A_LoopField, A_Tab)
  69. }
  70. }

更新文件相关内容:

08.06.16 Release Total Commander 9.0 beta 1 (32/64)
08.06.16 Added: Send WM_USER+50 with wparam set to 1011/1012 to get index of first file in list (-1 if there are no files) (32/64)
08.06.16 Added: Send WM_USER+50 with wparam set to 1009/1010 to get index of first item (0 if there is no updir, 1 otherwise) (32/64)
08.06.16 Added: Send WM_USER+50 with wparam set to 1007/1008 to get index of current item (caret) (32/64)
08.06.16 Added: Send WM_USER+50 with wparam set to 1005/1006 to get total number of selected items (32/64)
08.06.16 Added: Send WM_USER+50 with wparam set to 1003/1004 to get total number of items (including those hidden by quick filter (32/64)
08.06.16 Added: Send WM_USER+50 with wparam set to 1001/1002 to get number of items in left/right list (32/64)
08.06.16 Added: Send WM_USER+50 with wparam set to to get active panel: 1=left, 2=right (32/64)
08.06.16 Added: Send WM_USER+50 with wparam=1..29 -> returns window handle of control. Controls are: 1=leftlist, 2=rightlist, 3=active list, 4=inactive list, 5=leftheader, 6=rightheader, 7=leftsize, 8=rightsize, 9=leftpath, 10=rightpath, 11=leftinfo, 12=rightinfo, 13=leftdrives, 14=rightdrives, 15=leftpanel, 16=rightpanel, 17=bottompanel, 18=lefttree, 19=righttree, 20=cmdline, 21=curdirpanel, 22=inplaceedit, 23=splitpanel, 24=leftdrivepanel, 25=rightdrivepanel, 26=lefttabs, 27=righttabs, 28=buttonbar, 29=buttonbarvertical (32/64)

TC9.0新增实用接口,用AutoHotkey获取当前选中文件等信息的更多相关文章

  1. Android中获取应用程序(包)的信息----PackageManager

    本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下:   第一部分: 获取应用程序的packagena ...

  2. Android中获取应用程序(包)的信息-----PackageManager的使用(一)

    本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下:  第一部分: 获取应用程序的packagenam ...

  3. Android中获取应用程序(包)的信息-----PackageManager的使用

    本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagename ...

  4. 【转】Android中获取应用程序(包)的信息-----PackageManager的使用(一)

    转载请注明出处:http://blog.csdn.net/qinjuning       本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占 ...

  5. 创建线程的方式三:实现Callable接口-----JDK5.0 新增

    package com.yhqtv.java2; /* * 创建线程的方式三:实现Callable接口-----JDK5.0 新增 * * 如何理解实现Callable接口的方式创建多线程比实现Run ...

  6. 创建线程的方式三:实现Callable接口 --- JDK 5.0新增

    /** * 创建线程的方式三:实现Callable接口. --- JDK 5.0新增 * * * 如何理解实现Callable接口的方式创建多线程比实现Runnable接口创建多线程方式强大? * 1 ...

  7. 构建微服务-使用OAuth 2.0保护API接口

    微服务操作模型 基于Spring Cloud和Netflix OSS 构建微服务-Part 1 基于Spring Cloud和Netflix OSS构建微服务,Part 2 在本文中,我们将使用OAu ...

  8. 微信OAuth2.0网页授权接口

    微信OAuth2.0网页授权接口 微信OAuth2.0网页授权接口的thinkphp实现版本号.主要实现了oauth网页受权,以及部分其它接口. 用法 为什么用OAuth2.0受权? 通过OAuth2 ...

  9. 用Java构建一个简单的WebSocket聊天项目之新增HTTP接口调度

    采用框架 我们整个Demo基本不需要大家花费太多时间,就可以实现以下的功能. 用户token登录校验 自我聊天 点对点聊天 群聊 获取在线用户数与用户标签列表 发送系统通知 首先,我们需要介绍一下我们 ...

随机推荐

  1. selenium+junit4实现参数化自动化测试

    业务场景:在www.1905.com电影网中实现两个用户的登陆操作. 代码如下: package com.m1905.junit; import java.util.Arrays; import ja ...

  2. how to be an efficient man

    "This Monday I was invited to do a presentation on this Friday, and today is Friday. I am going ...

  3. android 小工具:pc 上用 curl 命令打开手机浏览器,浏览指定网址

    测试 API 时或其它情况经常需要在手机浏览器中输入 url 一长串的 url 输起来真是麻烦 AirDroid 很强大也不用数据线,但有时老断开连接,不是很爽.发到手机 qq 吧还得手动粘贴 所以自 ...

  4. 读写锁--ReentrantReadWriteLock

    读写锁,对于读操作来说是共享锁,对于写操作来说是排他锁,两种操作都可重入的一种锁.底层也是用AQS来实现的,我们来看一下它的结构跟代码: ------------------------------- ...

  5. 在W3C SCHOOL网站上发现一个关于Schema的错误

    原地址是http://www.w3school.com.cn/schema/schema_complex_empty.asp 下面这个例子是不正确的 xmlspy报错. 因为<xs:restri ...

  6. Error opening zip file or JAR manifest missing的解决方法

    错误描述: MyEclipse中启动Tomcat(debug)的时候就出现Error starting Tomcat : A configuration error occured during st ...

  7. plpgsql 函数定义

    --Function: dbo.fn_test(integer) --DROP FUNCTION dbo.fn_test(integer); CREATE OR REPLACE FUNCTION db ...

  8. 转IE9以下$.ajax跨域返回“No transport”

    $.ajax({ type: "POST", async: false, contentType: "application/x-www-form-urlencoded; ...

  9. VS编译完成后自动复制到远程机器

    缘起 最近在调试网络通信,每次一有点小修改,都要将程序从开发机复制到测试机,不胜烦扰.既然我们程序猿,为什么要那么死板呢,能够用代码解决的问题,就不要用手去解决. 解决过程 复制 手工复制外有没有其他 ...

  10. DataTables获取指定元素的行数据

    法1: 用jquey获取,var row = $('.edit').parent().parent(); 缺点:只能获取dom上的东西,不能获取没有渲染的数据 法2: 首先绑定行号到元素上 $('#e ...