news 2026/4/16 10:03:32

VBA 64位API声明语句第017讲

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VBA 64位API声明语句第017讲

跟我学VBA,我这里专注VBA, 授人以渔。我98年开始,从源码接触VBA已经20余年了,随着年龄的增长,越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友,都来学习VBA,利用VBA,起码可以提高自己的工作效率,可以有时间多陪陪父母,多陪陪家人,何乐而不为呢?我的教程一共九套,从入门开始一直讲到程序的分发,是学习利用VBA的实用教程。这份API资料是随高级教程赠送的.

这讲我们继续学习VBA 64位API声明语句第017讲,这些内容是MS的权威资料,看似枯燥,但对于想学习API函数的朋友是非常有用的。

【分享成果,随喜正能量】34每个人在自己的时区都有自己的步程。不用嫉妒或嘲笑他人。他们都在自己的时区里,你也是!等待正确的行动时机,放轻松。你虽然没有领先但也没有落后。在命运为你安排的属于自己的时区里,一切都准时。

当学员学习到高级阶段,如果引用API,这个资料可以直接查到64位写法。大多数情况下我们是将低版本的程序文件升级到高版本,这时您就不必为如下的错误提示所困扰了:

' COMM declarations

Declare PtrSafe Function SetCommState Lib "kernel32" Alias "SetCommState" (ByVal hCommDev As LongPtr, lpDCB As DCB) As Long

Declare PtrSafe Function SetCommTimeouts Lib "kernel32" Alias "SetCommTimeouts" (ByVal hFile As LongPtr, lpCommTimeouts As COMMTIMEOUTS) As Long

Declare PtrSafe Function GetCommState Lib "kernel32" Alias "GetCommState" (ByVal nCid As LongPtr, lpDCB As DCB) As Long

Declare PtrSafe Function GetCommTimeouts Lib "kernel32" Alias "GetCommTimeouts" (ByVal hFile As LongPtr, lpCommTimeouts As COMMTIMEOUTS) As Long

Declare PtrSafe Function PurgeComm Lib "kernel32" Alias "PurgeComm" (ByVal hFile As LongPtr, ByVal dwFlags As Long) As Long

Declare PtrSafe Function BuildCommDCB Lib "kernel32" Alias "BuildCommDCBA" (ByVal lpDef As String, lpDCB As DCB) As Long

Declare PtrSafe Function BuildCommDCBAndTimeouts Lib "kernel32" Alias "BuildCommDCBAndTimeoutsA" (ByVal lpDef As String, lpDCB As DCB, lpCommTimeouts As COMMTIMEOUTS) As Long

Declare PtrSafe Function TransmitCommChar Lib "kernel32" Alias "TransmitCommChar" (ByVal nCid As LongPtr, ByVal cChar As Byte) As Long

Declare PtrSafe Function SetCommBreak Lib "kernel32" Alias "SetCommBreak" (ByVal nCid As LongPtr) As Long

Declare PtrSafe Function SetCommMask Lib "kernel32" Alias "SetCommMask" (ByVal hFile As LongPtr, ByVal dwEvtMask As Long) As Long

Declare PtrSafe Function ClearCommBreak Lib "kernel32" Alias "ClearCommBreak" (ByVal nCid As LongPtr) As Long

Declare PtrSafe Function ClearCommError Lib "kernel32" Alias "ClearCommError" (ByVal hFile As LongPtr, lpErrors As Long, lpStat As COMSTAT) As Long

Declare PtrSafe Function SetupComm Lib "kernel32" Alias "SetupComm" (ByVal hFile As Long, ByVal dwInQueue As Long, ByVal dwOutQueue As Long) As Long

Declare PtrSafe Function EscapeCommFunction Lib "kernel32" Alias "EscapeCommFunction" (ByVal nCid As LongPtr, ByVal nFunc As Long) As Long

Declare PtrSafe Function GetCommMask Lib "kernel32" Alias "GetCommMask" (ByVal hFile As LongPtr, lpEvtMask As Long) As Long

Declare PtrSafe Function GetCommProperties Lib "kernel32" Alias "GetCommProperties" (ByVal hFile As LongPtr, lpCommProp As COMMPROP) As Long

Declare PtrSafe Function GetCommModemStatus Lib "kernel32" Alias "GetCommModemStatus" (ByVal hFile As LongPtr, lpModemStat As Long) As Long

Declare PtrSafe Function WaitCommEvent Lib "kernel32" Alias "WaitCommEvent" (ByVal hFile As LongPtr, lpEvtMask As Long, lpOverlapped As OVERLAPPED) As Long

Declare PtrSafe Function SetTapePosition Lib "kernel32" Alias "SetTapePosition" (ByVal hDevice As LongPtr, ByVal dwPositionMethod As Long, ByVal dwPartition As Long, ByVal dwOffsetLow As Long, ByVal dwOffsetHigh As Long, ByVal bimmediate As Long) As Long

Declare PtrSafe Function GetTapePosition Lib "kernel32" Alias "GetTapePosition" (ByVal hDevice As LongPtr, ByVal dwPositionType As Long, lpdwPartition As Long, lpdwOffsetLow As Long, lpdwOffsetHigh As Long) As Long

Declare PtrSafe Function PrepareTape Lib "kernel32" Alias "PrepareTape" (ByVal hDevice As LongPtr, ByVal dwOperation As Long, ByVal bimmediate As Long) As Long

Declare PtrSafe Function EraseTape Lib "kernel32" Alias "EraseTape" (ByVal hDevice As LongPtr, ByVal dwEraseType As Long, ByVal bimmediate As Long) As Long

Declare PtrSafe Function CreateTapePartition Lib "kernel32" Alias "CreateTapePartition" (ByVal hDevice As LongPtr, ByVal dwPartitionMethod As Long, ByVal dwCount As Long, ByVal dwSize As Long) As Long

Declare PtrSafe Function WriteTapemark Lib "kernel32" Alias "WriteTapemark" (ByVal hDevice As LongPtr, ByVal dwTapemarkType As Long, ByVal dwTapemarkCount As Long, ByVal bimmediate As Long) As Long

Declare PtrSafe Function GetTapeStatus Lib "kernel32" Alias "GetTapeStatus" (ByVal hDevice As LongPtr) As Long

Declare PtrSafe Function GetTapeParameters Lib "kernel32" Alias "GetTapeParameters" (ByVal hDevice As LongPtr, ByVal dwOperation As Long, lpdwSize As Long, lpTapeInformation As Any) As Long

Const GET_TAPE_MEDIA_INFORMATION = 0

Const GET_TAPE_DRIVE_INFORMATION = 1

Declare PtrSafe Function SetTapeParameters Lib "kernel32" Alias "SetTapeParameters" (ByVal hDevice As LongPtr, ByVal dwOperation As Long, lpTapeInformation As Any) As Long

Const SET_TAPE_MEDIA_INFORMATION = 0

Const SET_TAPE_DRIVE_INFORMATION = 1

Declare PtrSafe Function Beep Lib "kernel32" Alias "Beep" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Declare PtrSafe Function MulDiv Lib "kernel32" Alias "MulDiv" (ByVal nNumber As Long, ByVal nNumerator As Long, ByVal nDenominator As Long) As Long

Declare PtrSafe Sub GetSystemTime Lib "kernel32" Alias "GetSystemTime" (lpSystemTime As SYSTEMTIME)

Declare PtrSafe Function SetSystemTime Lib "kernel32" Alias "SetSystemTime" (lpSystemTime As SYSTEMTIME) As Long

Declare PtrSafe Sub GetLocalTime Lib "kernel32" Alias "GetLocalTime" (lpSystemTime As SYSTEMTIME)

Declare PtrSafe Function SetLocalTime Lib "kernel32" Alias "SetLocalTime" (lpSystemTime As SYSTEMTIME) As Long

Declare PtrSafe Sub GetSystemInfo Lib "kernel32" Alias "GetSystemInfo" (lpSystemInfo As SYSTEM_INFO)

Type TIME_ZONE_INFORMATION

Bias As Long

StandardName(0 To 31) As Integer

StandardDate As SYSTEMTIME

StandardBias As Long

DaylightName(0 To 31) As Integer

DaylightDate As SYSTEMTIME

DaylightBias As Long

End Type

Declare PtrSafe Function GetTimeZoneInformation Lib "kernel32" Alias "GetTimeZoneInformation" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long

Declare PtrSafe Function SetTimeZoneInformation Lib "kernel32" Alias "SetTimeZoneInformation" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long

' Routines to convert back and forth

' between system time and file time

Declare PtrSafe Function SystemTimeToFileTime Lib "kernel32" Alias "SystemTimeToFileTime" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long

Declare PtrSafe Function FileTimeToLocalFileTime Lib "kernel32" Alias "FileTimeToLocalFileTime" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long

Declare PtrSafe Function LocalFileTimeToFileTime Lib "kernel32" Alias "LocalFileTimeToFileTime" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long

Declare PtrSafe Function FileTimeToSystemTime Lib "kernel32" Alias "FileTimeToSystemTime" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long

Declare PtrSafe Function CompareFileTime Lib "kernel32" Alias "CompareFileTime" (lpFileTime1 As FILETIME, lpFileTime2 As FILETIME) As Long

Declare PtrSafe Function FileTimeToDosDateTime Lib "kernel32" Alias "FileTimeToDosDateTime" (lpFileTime As FILETIME, ByVal lpFatDate As LongPtr, ByVal lpFatTime As LongPtr) As Long

Declare PtrSafe Function DosDateTimeToFileTime Lib "kernel32" Alias "DosDateTimeToFileTime" (ByVal wFatDate As Long, ByVal wFatTime As Long, lpFileTime As FILETIME) As Long

#If Win64 Then

Declare PtrSafe Function GetTickCount64 Lib "kernel32" Alias "GetTickCount64" () As LongLong

#End If

Declare PtrSafe Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long

Declare PtrSafe Function FormatMessage Lib "kernel32" Alias "FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, Arguments As LongPtr) As Long

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:48:27

ue metahuman 绑定头发

目录 🧩 先确认你买的是什么类型 ✅ 正确绑定方法(UE 官方方式) 第一步:打开 MetaHuman 角色蓝图 第二步:找到头部 Skeletal Mesh 第三步:添加 Groom 组件 第四步:指定头发资产 第五步&a…

作者头像 李华
网站建设 2026/4/16 12:00:05

RecyclerView 多类型布局方案

@[TOC]目录 1. 基础实现方案 1.1 重写 getItemViewType() class MultiTypeAdapter(private val items: List<ListItem>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {companion object {const val TYPE_HEADER = 0const val TYPE_TEXT = 1const val TY…

作者头像 李华
网站建设 2026/4/12 16:15:21

鸿蒙应用如何集成第三方 SDK?真实项目中的完整实践

摘要 在实际的鸿蒙应用开发中&#xff0c;很少有项目是完全“从零开始”的。无论是统计埋点、支付登录、音视频处理&#xff0c;还是 AI 能力接入&#xff0c;都会或多或少依赖第三方 SDK。但很多同学在第一次接触鸿蒙时&#xff0c;会发现一个问题&#xff1a;Android 那一套…

作者头像 李华
网站建设 2026/4/10 11:28:51

如何打开2个notepad++

方法一&#xff1a;最简单直接的方法&#xff08;临时使用&#xff09; 这是最常用的方式&#xff0c;通过运行第二个程序实例来实现。 在你的桌面、开始菜单或任务栏上&#xff0c;找到 Notepad 的快捷方式图标。 直接再点击一次​ Notepad 图标。 或者&#xff0c;在第一个…

作者头像 李华
网站建设 2026/4/15 19:10:36

基于springboot的大学生餐厅点餐系统-计算机毕业设计源码+LW无文档

基于SpringBoot的大学生餐厅点餐系统 摘要&#xff1a;本文旨在探讨基于SpringBoot框架开发的大学生餐厅点餐系统的设计与实现。随着移动互联网的快速发展和大学生消费习惯的改变&#xff0c;传统的餐厅点餐模式已难以满足需求。本文研究的点餐系统利用SpringBoot框架的高效性和…

作者头像 李华