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

[复制链接]
查看11 | 回复0 | 2021-1-27 06:23:16 | 显示全部楼层 |阅读模式
在64bitAccess中,原来32bit的DeclareFunctionGetOpenFileNameLib"comdlg32.dll"报错问题,可以通过下面方法解决:

第一步:在Delcare后面增加PtrSafe关键字。比如:
PrivateDeclareFunctionGetOpenFileNameLib"comdlg32.dll"Alias"GetOpenFileNameA"(pOpenfilenameAsOPENFILENAME)AsLong
改为
PrivateDeclarePtrSafeFunctionGetOpenFileNameLib"comdlg32.dll"Alias"GetOpenFileNameA"(pOpenfilenameAsOPENFILENAME)AsLong
第二步:改Long类型为LongPtr
将OPENFILENAME的hwndOwner、hInstance、lpfnHook三个类型由long改为LongPtr
第三步:将lStructSize中的Len()改为LenB()
如:Len(fFileName)改为LenB(fFileName)
这样就解决了32bit系统可以运行,而64bit中无法运行的问题。

分 -->
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行