Winapi 哪个Windows API控制文件名编辑?

Winapi 哪个Windows API控制文件名编辑?,winapi,windows-shell,Winapi,Windows Shell,按F2键在Windows Shell中编辑文件名时,可以理解的编辑键有限,例如CTRL+箭头键、Home、End、CTRL+X。例如,键入CTRL+Right Arrow时,光标将在破折号后立即停止,但不会在句点处停止。这些动作是可定制的吗?如果是,如何定制 任何与本主题没有直接关系但您认为可能有助于本主题的其他信息也将不胜感激。Windows版本很重要,但一般来说,此行为会嵌入到本机列表视图控件SysListView32中。不,键盘操作是硬的。子类化控件在技术上是可行的,只是不实用,因为它位于

按F2键在Windows Shell中编辑文件名时,可以理解的编辑键有限,例如CTRL+箭头键、Home、End、CTRL+X。例如,键入CTRL+Right Arrow时,光标将在破折号后立即停止,但不会在句点处停止。这些动作是可定制的吗?如果是,如何定制


任何与本主题没有直接关系但您认为可能有助于本主题的其他信息也将不胜感激。

Windows版本很重要,但一般来说,此行为会嵌入到本机列表视图控件SysListView32中。不,键盘操作是硬的。子类化控件在技术上是可行的,只是不实用,因为它位于Explorer.exe中。由于不知道插入符号在标签内的位置,因此没有相应的消息。

您可以使用;是操作系统在需要查找分词位置时调用的相应回调函数

从文档中:

当用户结合按箭头键和CTRL键将插入符号移动到下一个单词或上一个单词时,多行或单行编辑控件可能会调用此函数

键组合本身不是可直接定制的,这是有充分理由的——因此用户体验在所有应用程序中都是一致的。当然,您可以自己对编辑控件进行子类化并处理键盘消息,但我想这不是重点。

关于“Windows Shell”,我想您指的是Windows资源管理器,但无论您谈论的是什么程序,答案可能都是一样的

资源管理器只需创建一个编辑控件并将其移动到位。编辑行为来自此股票系统控件,以及添加到其自身实例的任何附加逻辑资源管理器

虽然可以在自己的进程中轻松更改属于某个线程的编辑控件的行为,但在另一个进程中这样做需要全局钩子。我们将规定您了解正确执行全局钩子所涉及的工作量,并且该钩子将在x86和x64环境中运行

您不能使用WH_CALLWNDPROC直接干扰另一进程中编辑控件的行为,但您可以使用WH_callwndproct观察键盘消息,检查窗口和编辑控件是否正确,检查编辑控件是否属于资源管理器,然后确切地知道编辑控件如何响应该键盘事件,做一些额外的事情,比如备份到那个时期

或者,您可以使用WH_CBT钩子来监视HCBT_CREATEWND,并在每次创建编辑控件时对其进行子类化


付出的努力可能不值得获得好处。

您想实现什么?为什么要定制?用户对任何特定的操作都有合理的期望,这有什么错呢?这是直观用户交互理论的基础。我有一些文件名,其中句点分隔单词。当我在编辑模式下(即F2/重命名期间)按CTRL+向右箭头键导航字符串时,我希望光标在这些时间段停止。谢谢!是的,我做过一些编程,包括hook/子类化,我知道这两者都很棘手。汉斯·帕桑:怎么不呢?开始就地编辑列表项,并将句柄返回到编辑控件。