gpt4 book ai didi

vba - 如何在 64 位环境中声明没有 ptrsafe 的函数?

转载 作者:行者123 更新时间:2023-12-04 21:02:28 26 4
gpt4 key购买 nike

我的 vb6 程序在 32 位上运行。现在我必须将它移动到 64 位。

我在代码下面声明的库,系统似乎无法获取它。声明:

Public Declare Function LogonUser Lib "advapi32.dll" _
Alias "LogonUserA" (ByVal lpszUsername As String, _
ByVal lpszDomain As String, ByVal lpszPassword As String, _
ByVal dwLogonType As Long, ByVal dwLogonProvider As Long, _
phToken As Long) As Long

Public Declare Function ImpersonateLoggedOnUser Lib "advapi32.dll" (ByVal hToken As Long) As Long
Public Declare Function RevertToSelf Lib "advapi32.dll" () As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

运行代码:

Public Sub Logon(ByVal strAdminUser As String, ByVal _
strAdminPassword As String, ByVal strAdminDomain As String)
Dim lngTokenHandle As Long
Dim lngLogonType As Long
Dim lngLogonProvider As Long
Dim blnResult As Boolean

lngLogonType = 2
lngLogonProvider = 0

blnResult = RevertToSelf()

blnResult = LogonUser(strAdminUser, strAdminDomain, strAdminPassword, _
lngLogonType, lngLogonProvider, _
lngTokenHandle)

blnResult = ImpersonateLoggedOnUser(lngTokenHandle)
CloseHandle (lngTokenHandle)

End Sub

我收到了错误信息

错误 91:未设置对象变量或 With block 变量

几乎有人说需要在 Declare 后添加“ptrsafe”,但 vb6 中没有 ptrsafe。

如何在 64 位和 vb6 中声明没有“ptrsafe”的函数库?

最佳答案

Almost people say need to add "ptrsafe" after Declare but there is no ptrsafe in vb6. How can I declare function lib without "ptrsafe" in the 64bit and vb6 ?

VBA 在 64 位应用程序(例如 64 位 Office 套件中的程序之一)中运行时,需要能够处理 64 位 Windows。

VB6 永远独立运行并且始终作为 32 位进程,它不需要 64 位感知,因为 64 位 Windows 可以愉快地模拟 32 位代码,不需要额外的步骤。

因为不需要这种指针安全类型,所以在 VB6 中使用 32 位约定 (Long)。

关于vba - 如何在 64 位环境中声明没有 ptrsafe 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45685984/

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