.net 将控件更改/添加到windows打开/保存公用对话框

.net 将控件更改/添加到windows打开/保存公用对话框,.net,c++,openfiledialog,savefiledialog,.net,C++,Openfiledialog,Savefiledialog,是否有方法更改/添加windows打开/保存公用对话框以添加额外功能 在工作中,我们在服务器上有一个区域,其中有数百个“jobfolders”(作业文件夹),只是由数据库应用程序自动创建/管理的普通windows文件夹,用于存储有关作业的信息(电子邮件/扫描的传真/Word文档/电子表格/照片等)。文件夹按作业编号命名 我想用一个组合框扩展标准的“打开/保存”对话框,该组合框根据数据库中的标记搜索jobfolders,这样无论我的用户在做什么,他们都可以轻松找到正确的jobfolder来查找/保

是否有方法更改/添加windows打开/保存公用对话框以添加额外功能

在工作中,我们在服务器上有一个区域,其中有数百个“jobfolders”(作业文件夹),只是由数据库应用程序自动创建/管理的普通windows文件夹,用于存储有关作业的信息(电子邮件/扫描的传真/Word文档/电子表格/照片等)。文件夹按作业编号命名

我想用一个组合框扩展标准的“打开/保存”对话框,该组合框根据数据库中的标记搜索jobfolders,这样无论我的用户在做什么,他们都可以轻松找到正确的jobfolder来查找/保存他们的工作

连接到数据库并提供搜索功能是没有问题的,但是有没有办法向对话框中添加一个组合框控件(理想情况下带有一个按键/keydown事件)

或者创建我自己的对话框并调用/使用它来代替标准对话框?i、 e.从任何应用程序中,我的对话框都会被称为允许轻松访问作业文件夹。如果他们在outlook中,他们可以快速找到jobfolder,如果他们使用记事本,他们仍然可以轻松找到该文件夹

这意味着一种从任何应用程序中查找jobfolders的新的统一方法


<>理想的是有人会知道使用VB/VB.NET/C语言的方法,但是我猜,如果可能的话,它可能是C++。

你的程序可以设置启动文件夹,所以如果你知道这个作业号(并且为此文件夹的名称),你可以用打开的正确文件夹设置对话开始。除此之外,我认为如果不为它编写一个完整的shell扩展,您将无能为力。

有关Windows API的Microsoft文档如下:

请特别关注OFN_ENABLETEMPLATE和OFN_ENABLEHOOK标志


正如您所说,当您在C/C++中工作时,这些信息主要是相关的。

正如Mark Ransom所说,您可以使用OfEnableTemplate和OfEnableHook标志来完成。然后为OPENFILENAME结构的lpTemplateName数据成员指定一个对话框资源。正确放置控件需要一点尝试和错误

您编写的钩子过程将接收特定于该对话框的窗口消息-您对WM_NOTIFY消息特别感兴趣-有一些特殊的消息(CDNINITDONE、CDNFOLDERCHANGE等)


我已经创建了一些非常精细的,我希望我可以包括一个屏幕截图。

谢谢这看起来不错!我以前设置过捕捉鼠标事件和击键的钩子。你能解释一下基本步骤是什么吗?我的代码在哪里?它会是一个dll吗?有没有一种方法可以使用VisualStudio.Net 2003或SharpDevelop实现这一点?谢谢