gpt4 book ai didi

c++ - 显示对话框时如何防止 GetOpenFileName 更改当前目录?

转载 作者:行者123 更新时间:2023-11-28 04:39:54 27 4
gpt4 key购买 nike

GetOpenFileName (出于可疑原因)在显示对话框时更改应用程序的当前目录。这可以通过将 OFN_NOCHANGEDIR 指定为对话框初始化标志来在对话框关闭时重置:

OFN_NOCHANGEDIR Restores the current directory to its original value if the user changed the directory while searching for files.

但是,设置此标志不会阻止函数在显示资源管理器对话框时更改当前目录

这是多线程环境中的一个问题,在该环境中,其他线程依赖当前目录来保持为可执行文件的路径。

有没有办法阻止GetOpenFileName在显示资源管理器对话框和用户浏览文件夹时更改应用程序的当前目录?

最佳答案

这里有几个选项:

  1. 使用 detours 或 MinHook Hook SetCurrentDirectory 并使其对您的进程不做任何事情(丑陋)
  2. 使用 custom file chooser这不会更改当前目录。 (更好)
  3. 删除代码中对当前目录的依赖,因为您可能会遇到与它相关的其他错误,尤其是在多线程环境中。 (最佳)

关于c++ - 显示对话框时如何防止 GetOpenFileName 更改当前目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50468051/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com