TC9.0新增实用接口,用AutoHotkey获取当前选中文件等信息
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能获取来源/目标文件列表控件,
其他方法都是针对左/右窗口的,来源/目标需要依据来区分。
获取来源当前光标文件名的逻辑:
- 3获取当前控件A
- ControlGetList获取所有文件内容B(每行一个文件,每列是文件的属性信息,以Tab分隔),注意:第一行是返回上一级的信息。
- 1007/1008获取文件序号C(因为上面的红字,这里获取的序号要+1)
- 根据B和C获取文件信息S,StrSplit(S, A_Tab)就可以获取文件的所有信息,文件名通常是[1]
根据这些接口,写了一系列获取信息的函数如下:
get(n) ;NOTE 核心接口函数
{
Return SendMessage(, n, , , "Ahk_class TTOTAL_CMD")
}
ctlDirSrc() ;来源:路径控件
{
Return get(8+get(1000))
}
ctlDirTrg()
{
Return get(11-get(1000))
}
um_DirSrc() ;来源:目录路径(代替C2)
{
Return ControlGetText(ctlDirSrc(), "Ahk_class TTOTAL_CMD").dir()
}
um_DirTrg()
{
Return ControlGetText(ctlDirTrg(), "Ahk_class TTOTAL_CMD").dir()
}
um_ArrCurrentSrc() ;来源:光标文件信息(arr)
{
Return arrFileCurrent()
}
um_arrCurrentTrg()
{
Return arrFileCurrent()
}
um_FileNameSrc() ;来源:光标文件名
{
Return um_ArrCurrentSrc()[]
}
um_FileNameTrg()
{
Return um_ArrCurrentTrg()[]
}
um_FilePathSrc() ;来源:光标文件完整路径
{
Return um_DirSrc() . "\" . um_FileNameSrc()
}
um_FilePathTrg()
{
Return um_DirTrg() . "\" . um_FileNameTrg()
}
um_CopyNamesToClip() ;复制选中文件名(这块暂时还不能直接获取,得借用剪切板)
{
Clipboard := ""
cm_CopyNamesToClip() ;复制名称
If ClipWait(0.2)
Return Clipboard
}
um_CopyFullNamesToClip() ;复制选中文件路径
{
Clipboard := ""
cm_CopyFullNamesToClip()
If ClipWait(0.2)
Return Clipboard
}
;获取光标文件的信息(arr)
;Src为3,Trg为4
arrFileCurrent(tp:=)
{
str := ControlGetList("", get(tp), "Ahk_class TTOTAL_CMD") ;所有文件列表
idx := get(+get()) + ;因为前面有个返回上一级的行
Loop Parse, str, "`n", "`r"
{
If (A_Index = idx)
Return StrSplit(A_LoopField, A_Tab)
}
}
更新文件相关内容:
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获取当前选中文件等信息的更多相关文章
- Android中获取应用程序(包)的信息----PackageManager
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagena ...
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagenam ...
- Android中获取应用程序(包)的信息-----PackageManager的使用
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagename ...
- 【转】Android中获取应用程序(包)的信息-----PackageManager的使用(一)
转载请注明出处:http://blog.csdn.net/qinjuning 本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占 ...
- 创建线程的方式三:实现Callable接口-----JDK5.0 新增
package com.yhqtv.java2; /* * 创建线程的方式三:实现Callable接口-----JDK5.0 新增 * * 如何理解实现Callable接口的方式创建多线程比实现Run ...
- 创建线程的方式三:实现Callable接口 --- JDK 5.0新增
/** * 创建线程的方式三:实现Callable接口. --- JDK 5.0新增 * * * 如何理解实现Callable接口的方式创建多线程比实现Runnable接口创建多线程方式强大? * 1 ...
- 构建微服务-使用OAuth 2.0保护API接口
微服务操作模型 基于Spring Cloud和Netflix OSS 构建微服务-Part 1 基于Spring Cloud和Netflix OSS构建微服务,Part 2 在本文中,我们将使用OAu ...
- 微信OAuth2.0网页授权接口
微信OAuth2.0网页授权接口 微信OAuth2.0网页授权接口的thinkphp实现版本号.主要实现了oauth网页受权,以及部分其它接口. 用法 为什么用OAuth2.0受权? 通过OAuth2 ...
- 用Java构建一个简单的WebSocket聊天项目之新增HTTP接口调度
采用框架 我们整个Demo基本不需要大家花费太多时间,就可以实现以下的功能. 用户token登录校验 自我聊天 点对点聊天 群聊 获取在线用户数与用户标签列表 发送系统通知 首先,我们需要介绍一下我们 ...
随机推荐
- Jmeter创建web测试计划
创建web测试计划 在这一章,我们将学习如何创建基本的测试计划来测试一个web网站.您将创建五个用户并发送请求到JMeter网站的两个页面.同时,设置用户运行测试两次.因此,请求的总数是(5个用户)x ...
- 查看修复HDFS中丢失的块
检测缺失块 hdfs fsck -list-corruptfileblocks hdfs fsck / | egrep -v '^\.+$' | grep -v eplica 查看上面某一个文件的情况 ...
- java多线程开发之CyclicBarrier,CountDownLatch
最近研究了一个别人的源码,其中用到多个线程并行操作一个文件,并且在所有线程全部结束后才进行主线程后面的处理. 其用到java.util.concurrent.CyclicBarrier 这个类. Cy ...
- WPF的布局--DockPanel
1.DockPanel: 以上.下.左.右.中为基本结构的布局方式 类似于Java AWT布局中的BorderLayout. 但与BorderLayout不同的是,每一个区域可以同时放置多个控件,在同 ...
- ES6内容
iterator 遍历器iterator makeIterator是个遍历器,生成遍历器对象it var it = makeIterator(['a', 'b']); it.next() // { v ...
- resteasy上传单个文件/多个文件到阿里云服务器
代码如下: ExcelServerController.java package com.xgt.controller; import com.xgt.bean.bs.ExcelBean; impor ...
- Firebird execute block 批处理
火鸟的批处理,效率好高,使用简单. execute block as declare variable i ; begin ) do begin :i = :i + ; insert into m_u ...
- [转]glyphicons-halflings-regular字体 图标
本文转自:http://www.ijquery.cn/?p=377 一.介绍 采用这种字体,我们可以避免网站制作中采用好多图片,一方面解决了浏览器的兼容性问题.另一方面,这些字体都是矢量字体,我们只要 ...
- 数据结构(二) --- 伸展树(Splay Tree)
文章图片和代码来自邓俊辉老师课件 概述 伸展树(Splay Tree),也叫分裂树,是一种二叉排序树,它能在O(log n)内完成插入.查找和删除操作.它由丹尼尔·斯立特Daniel Sleator ...
- WebAPI搭建(一)如何在Webforms 下 搭建WebAPI
公司的很多项目前期一直是用的WebForms.但是因为业务的发展,公司要在原有的项目上接入移动端,webservice有点老旧了,现在比较流行RESTFul,于是乎就想到了WebAPI. 一.如果是新 ...