feixianglld 2014-10-30 02:26
浏览 1679

vba 中调用win 32 的api接口

※ 下面问题本人也在网上找了很久的答案,可是均不行,希望各位看官能帮帮忙。谢谢。
其中
i 找了win32的返回值为字符串的win32 api的VBA接口调用 =》 测试成功,方法这里就不说了
i 找了win32通过参数返回字符串的win32 api的VBA接口调用 =》测试成功,方法这里就不说了
i 找了通过参数返回字符串数组的自定义C的api的VBA接口调用 =》没测试
例如: C的test.dll接口: void test(char *szArray);
对应的VBA:Private Declare Sub Import_test Lib "test.dll" Alias "test" (ByRef szArray() As String)

※win32 API声明
LPCWSTR PathFindSuffixArrayW(LPCWSTR pszPath, const LPCWSTR *apszSuffix, int iArraySize);
文件位于: C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\Shlwapi.h
库名:shlwapi.dll =》 windows系统自带库
函数功能:查找文件pszPath的扩展名是否属于指定的扩展名数组中,如果是,返回文件的扩展名
说明:参数apszSuffix指向字符串的数组,参数iArraySize为apszSuffix字符串数组的元素个数。

※vba 导入声明
Private Declare Function Import_PathFindSuffixArray Lib "shlwapi.dll" Alias "PathFindSuffixArrayA" (ByVal pszPath As String, ByVal apszSuffix As String, ByVal iArraySize As Long) As Long
=》这个声明正确吗?这是通过ApiView工具自动生成的对应vb接口

我测试了下面的各种声明,均得不到正确结果
Private Declare Function Import_PathFindSuffixArray Lib "shlwapi.dll" Alias "PathFindSuffixArrayA" (ByVal pszPath As String, ByRef apszSuffix() As String, ByVal iArraySize As Long) As Long
Private Declare Function Import_PathFindSuffixArray Lib "shlwapi.dll" Alias "PathFindSuffixArrayA" (ByVal pszPath As String, ByRef apszSuffix As String, ByVal iArraySize As Long) As Long

※接口使用
Dim strTest(2) As String
strTest(0) = ".txt"
strTest(1) = ".ini"
strTest(2) = ".h"

Dim strFile As String
strFile = "abc.ini"

//在C++/C中调用PathFindSuffixArrayW(strFile , strTest, 3)返回 “.ini"

我试了如下的调用,均得不到正确结果
Import_PathFindSuffixArray (strFile , strTest, 3)
Import_PathFindSuffixArray (strFile , strTest(0), 3)
Import_PathFindSuffixArray (strFile , StrPtr(strTest), 3)

//那么请问 : 在VBA中怎么调用这个接口

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 求差集那个函数有问题,有无佬可以解决
    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名
    • ¥65 汇编语言除法溢出问题