comdlg32.dll中GetOpenFileName和GetSaveFileName在64bit环境中不能运行的解决

xzwong 2018-12-11 04:03:28
在64bitAccess中,原来32bit的Declare Function GetOpenFileName Lib "comdlg32.dll" 报错问题,可以通过下面方法解决:


第一步:在Delcare后面增加PtrSafe关键字。比如:
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
改为
Private Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

第二步:改Long类型为LongPtr
将OPENFILENAME的hwndOwner、hInstance、lpfnHook三个类型由long改为LongPtr

第三步:将lStructSize中的Len()改为LenB()
如:Len(fFileName)改为LenB(fFileName)

这样就解决了32bit系统可以运行,而64bit中无法运行的问题。
...全文
421 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
潘兵宏 2021-09-18
  • 打赏
  • 举报
回复

很有用!!!

7,713

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧