当前位置:  开发笔记 > 后端 > 正文

Sleep Lib"kernel32"给出了64位系统错误

如何解决《SleepLib"kernel32"给出了64位系统错误》经验,为你挑选了1个好方法。

我正在尝试Application.Quit在运行所有函数后关闭access().

所有功能完成后VBA关闭访问 一直是我的参考.

但是当我Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long),它给了我

必须更新此项目中的代码才能在64位系统上使用.错误

在完全关闭访问权限之前,是否有替换此代码来运行所有功能?

任何帮助将不胜感激.谢谢.



1> Comintern..:

dwMilliseconds参数是一个DWORD,因此技术上在32位机器上为32位,在64位机器上为64位.因此,它需要PtrSafe符号(虽然技术上dwMilliseconds会正确编组,因为它是ByVal......而且谁想要等待那么久)将声明更改为:

#If VBA7 Then
    Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If


你在第一句中所说的不正确.DWORD总是*一个4字节类型,这意味着无论目标架构如何,它都是32位.现在,可能VBA的警告是误报,但你可以保证DWORD的大小永远不会是64位,我怀疑*real*解决方案只是你需要`PtrSafe`.(请注意,对于DWORD_PTR,情况也是如此,这是一个与本机指针大小相同的无符号类型,因此您的语句将应用于该类型,但这不是Sleep API使用的类型.)
推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有