问题标签 [common-dialog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
62 浏览

vb6 - 在我关闭它们后,通用对话控件似乎可以让我的程序继续运行

我目前运行的是 64 位 Windows 10 开发盒。我有旧的 VB6 源代码,不幸的是我暂时必须保持更新。出于某种原因,我突然注意到我刚刚构建的其中一个应用程序在关闭 GUI 后似乎仍在后台运行。

我开始越来越多地调试这个问题,直到我发现在关闭 GUI 后它似乎在后台持续保持打开状态的唯一一次是如果我单击表单上的按钮,该按钮将调用通用对话框控件以显示文件打开图形用户界面。我只需要显示文件打开窗口,然后点击取消即可。

这似乎只发生在我的一台开发机器上(而不是另一台)。每次我使用该 CD 文件打开框时,我都必须打开任务管理器并结束任务。当我的主表单开始卸载时,我还尝试确保所有表单都已关闭。似乎没有任何作用或对问题所在提供任何线索。我还仔细检查了以下文件现在是否都相同,将它们从已知的工作开发机器复制到我损坏的机器并重新注册它们。

  • COMDLG32.OCX
  • comdlg32.oca
  • comdlg32.dll
  • COMDLG32.DEP

两台机器都运行相同的操作系统 Win10 Pro 64 位。

0 投票
0 回答
306 浏览

ms-access - 用于更高版本 MS Access 的 Microsoft CommonDialog 控件

我一直在网上搜索答案,但没有成功找到正确的事情。所以这是我最后的手段。

我们有一个 Access 数据库 (1997),并且在我们的旧远程服务器上运行良好。但是当我们将其迁移到 Windows 2012 Server 并将其转换为 .accdb 文件格式时,打开文件选择窗口的CommonDialog内置方法不起作用并弹出错误消息。

在此处输入图像描述

至此,我们完全意识到缺少一些参考资料,我们是对的。

在此处输入图像描述

我们在网上搜索并意识到我们需要使用Microsoft Office x.0 对象库下的Application.FileDialog来获得更高版本的 MS Access。我们为我们的一些使用CommonDialog的 VBA 代码实现了这一点,并且它有效。

但是我们也在考虑如何为了不调整我们的 VBA 代码而继续将CommonDialog用于更高版本的 Access?

如果您对此有任何想法,我将很高兴听到。提前致谢!

0 投票
1 回答
237 浏览

c# - IOleWindow 不能为 IFileDialog 正常工作?

我正在使用一些代码,这些代码使用 Microsoft.WindowsAPICodePack 来提供 Vista 风格的通用对话框 ( IFileOpenDialog, IFileSaveDialog) 的 C# 包装器。我想在OnFileOk事件回调中添加对所选项目的验证,这主要是有效的,但它的一个方面是提取对话框的 HWND 以用作显示的消息框的父级。Microsoft 提供了有关如何执行此操作的文档:

调用进程可以使用对话框本身的窗口句柄作为 UI 的父级。可以通过首先调用IOleWindow::QueryInterface然后使用该句柄调用IOleWindow::GetWindow来获取该句柄,如本例所示。

https://msdn.microsoft.com/en-us/library/windows/desktop/bb776913(v=vs.85).aspx

我在代码中添加了IOleWindow接口的定义:

当我将IFileDialog传递的内容转换OnFileOk为时IOleWindow(我最近没有对 COM 互操作做太多工作,但这包含了QueryInterface底层 COM 世界中的调用,对吗?),没有发生错误,并且IOleWindow引用不是null. 但是,当我打电话时GetWindow,它似乎总是返回IntPtr.Zero。我尝试用out参数而不是返回值声明方法,并得到相同的结果:没有错误,但总是IntPtr.Zero.

有没有人看到我做错了什么?我没有做错什么,但有时你不能得到一个窗口句柄?

0 投票
1 回答
214 浏览

c# - 为什么我无法检测到发送到 CommonDialog 的 Windows 消息?拦截它们的正确方法是什么?

我试图检测用户何时点击 aForm和 a CommonDialog

表格相当简单。我创建了一个MessageFilter拦截消息的类:

我注册了消息过滤器:

当我运行控制台应用程序并单击 时Form,我看到控制台记录了“活动”。

当我替换FormCommonDialog

即使我可以看到 Windows 消息被发送到 CommonDialog,我也无法检测到鼠标点击(FWIW,我无法检测到任何消息):

在此处输入图像描述

那我怎么不能截取那些消息呢?


我想到的是,由于Application.AddMessageFilter是特定于线程的,也许如果 CommonDialog 是在与调用的线程不同的线程上创建的dialog.ShowDialog(),我将不会收到任何这些消息。

但是,我做了一个快速测试,尝试向WM_CLOSE调用 的线程上的所有 CommonDialogs 发送消息dialog.ShowDialog(),并且它有效:

NativeMethods 看起来像:

为什么我不能拦截 CommonDialog 消息?我能做些什么呢?

0 投票
1 回答
175 浏览

windows - 使用 CFileDialog::AddCheckButton 失败

好的,我正在尝试使用CFileDialog::AddCheckButton. 函数调用成功,我可以看到新的复选框。我看不到任何事件,虽然我可以覆盖OnInitDialog,但覆盖OnOK被忽略。我不确定我做错了什么:

//标题

// 执行

0 投票
0 回答
47 浏览

c++ - 从控制台程序在桌面中心显示 Win32 通用对话框

我想在桌面中心显示一个通用对话框,GetOpenFileName()从控制台程序调用。
从“打开文件名”对话框中,我只想获取所选文件的名称。
有没有办法做到这一点?

0 投票
1 回答
93 浏览

windows - Shell Link 常用对话框?

在调用之前CreateFile,您需要一个文件的名称。您当然可以创建自己的对话框:

  • 枚举驱动器、文件夹或 shell 命名空间
  • 允许用户导航
  • 显示所选文件夹中的文件
  • 让用户选择一个文件并关闭对话框

但幸运的是,Windows 已经完成了所有 UI 的繁重工作,并为您提供了一个IFileOpenDialog通用对话框:

在此处输入图像描述

创建链接是否存在相同的情况?

Windows 资源管理器有一个对话框,引导用户创建文件、文件夹、项目、url 等的快捷方式:

在此处输入图像描述

此对话框是否为“通用”对话框 - 可供应用程序使用?


编辑:另外提醒一下:我不想调用向导-因为向导会在硬盘驱动器上创建链接。而且我不希望它保存在硬盘上。我需要能够得到结果:

  • IShellLink或者
  • IUniformResourceLocator,

或者

  • 地点
  • 标题

用户输入的。

我需要一个“位置选择器”用户界面。

0 投票
2 回答
1176 浏览

vba - 单击按钮时如何在 VBA 中编码以请求密码?

我在一张 Excel 表上有一个命令按钮,用于隐藏/取消隐藏其中一张工作表。请参见下面的代码。

但是,现在我想添加管理员输入密码以取消隐藏工作表的功能,否则任何人都可以单击按钮并取消隐藏数据表。

有没有办法强制excel显示正常的输入密码提示取消隐藏?

谢谢

0 投票
1 回答
43 浏览

c++ - 创建通用对话框时需要所有者窗口句柄的原因是什么

我最近正在使用通用对话框,我发现hWndOwner传递给函数的结构中需要a ChooseColor

当我使用 different 时似乎没有区别hWndOwner。不同的hWndOwner选择会影响什么?选择所有者窗口时有什么需要注意的吗?

0 投票
0 回答
119 浏览

c++ - 如何在 Windows 文件对话框中填充虚拟文件夹“应用程序链接”?

当我在 Windows 上创建一个通用文件对话框时,我可以使用IFileDialog::AddPlace在左窗格中添加特定于应用程序的快捷方式。

快捷方式都显示在一个名为“应用程序链接”的虚拟文件夹中。但是当我点击“应用程序链接”时,该文件夹似乎是空的,只显示“没有符合您的搜索的项目。”: 在此处输入图像描述

当我单击“应用程序链接”本身时,是否可以在左窗格的“应用程序链接”中显示列出的所有快捷方式,也可以在右窗格中显示?如果是这样,我怎样才能做到这一点?

这是生成上面屏幕截图的代码的最小工作示例: