5

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

我已经看到一些应用程序能够通过向工具栏添加按钮(例如: Dialog Box Assistant)或通过在标题栏旁边的标题栏中放置额外的按钮来扩展通用对话框(特别是另存为..和文件打开)最小化、最大化和/或关闭按钮。尽管我不知道从哪里开始,但两者都是不错的选择。

我尝试过的一种方法是将文件夹名称从我写的应用程序中“拖动”到对话框上的文件名文本框中,使用我从 Corneliu Tusnea 的Hawkeye Runtime Object Editor中获得的鼠标钩子技术突出显示它,然后预先添加通过使用 WM_SETTEXT 调用 SendMessage 来获取路径名。它(有点)有效,但感觉有点笨拙。

对此技术或实施的任何建议将不胜感激。或者,如果现有的实用程序已经这样做了,请告诉我!

更新:当一切都说完了,我想我可能会得到一个现有的实用程序。但是,我想知道是否有办法以编程方式执行此操作。

4

2 回答 2

5

对我来说,这听起来像是AutoHotkey的工作。

我是一个“专业人士”(至少我通过编程获得报酬),但我会首先考虑使用 AutoHotkeys 的许多经过良好测试的功能来访问窗口,而不是深入研究 C#/.NET 并且最喜欢通过 PInvoke 的 WinAPI。

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

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

于 2008-09-24T06:38:58.753 回答
1

对于这样的事情,您可能会沉迷于 Win32 API 调用。在 .Net 上工作意味着进行大量的 pinvokes。恐怕我帮不了你太多,但我记得有一本书叫做“用 Visual Basic 进行子类化和挂钩”可能会有所帮助。它主要是为 VB 6 编写的,但我相信其中包含一些 VB.Net 内容。

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

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

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

于 2008-09-24T14:11:09.773 回答