如何以编程方式操作任何Windows应用程序的常用对话框?

AR.*_*AR. 5 .net filedialog

我的最终目标是编写一个实用程序,让我可以在任何对话框中快速设置文件夹,从预设的"收藏夹"列表中进行选择.由于我只是一个业余爱好者,而不是专业人士,我更喜欢使用.NET,因为这是我最熟悉的.我确实意识到这些东西可能需要的东西比我在C#中可以做的更多.

我已经看到一些应用程序能够通过向工具栏添加按钮(例如:对话框助手)或者在标题栏旁边放置额外的按钮来扩展公共对话框(特别是对于另存为...和文件打开).最小化,最大化和/或关闭按钮.要么是不错的选择虽然我没有最模糊的想法从哪里开始.

我尝试过的一种方法是将文件夹名称从我写入的应用程序"拖动"到对话框上的文件名文本框,使用我从Corneliu Tusnea的Hawkeye运行时对象编辑器中拾取的鼠标钩子技术突出显示它,然后预先添加通过使用WM_SETTEXT对SendMessage进行pinvoking来获取路径名.它(有点)有效,但感觉有点笨拙.

任何关于技术或实施的建议都将非常感激.或者,如果现有的实用程序已经执行此操作,请告诉我们!

更新:说完所有内容后,我想我可能会使用现有的实用工具.不过,我想知道是否有一种以编程方式做到这一点.

Ash*_*Ash 5

听起来像是AutoHotkey给我的工作.

我是一个"专业人士"(至少我得到了程序的报酬),但我首先要看看使用AutoHotkeys的许多经过良好测试的功能来访问窗口,而不是深入研究C#/ .NET和最喜欢通过PInvoke的WinAPI.

AutoHotkey甚至提供一些基本的用户界面控件,并且是免费的.

这是一个AutoHotkey脚本,与您要求的非常相似.


Sla*_*out 1

对于这样的事情,您可能会大量进行 Win32 API 调用。在 .Net 上工作意味着要进行大量的 pinvoke。恐怕我帮不了你太多,但我记得有一本叫做“Subclassing and Hooking with Visual Basic”的书可能会有所帮助。它主要是为 VB 6 编写的,但我相信其中有一些 VB.Net 的东西。

此外,PInvoke.Net是一个包含大量 pinvoke 签名的 wiki,您可以复制并粘贴这些签名,这可能会有所帮助。

归根结底,您可能需要更多地了解 Windows 内部如何运行(消息传递等)才能实现您的目标。

Spy++ 也可能是你的朋友。