GetShortPathName 使用问题
声明
Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
使用
dim p as string=""
Dim sbtemp1 As String = p
Dim n As Long = GetShortPathName(p, sbtemp1, 255)
p = Left(sbtemp1, n)
调试执行方法前 p的值:C:\Users\huanghaic\Desktop\1111\GenDoUtil\DEComPressTemp\1700_0_TFTM_3_AH_2015081801.zip
执行方法后sbtemp1的值:C:\Users\HUANGH~1\Desktop\1111\GENDOU~1\DECOMP~1\1700_0~1.ZIP 0_TFTM_3_AH_2015081801.zip
执行方法后n的值:816043786301
然后在执行到 Left(sbtemp1, n)时抛出异常:算术运算导致溢出。
这是为什么?我怀疑是返回值n不正确。
请大神亲们帮忙指点
Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
使用
dim p as string=""
Dim sbtemp1 As String = p
Dim n As Long = GetShortPathName(p, sbtemp1, 255)
p = Left(sbtemp1, n)
调试执行方法前 p的值:C:\Users\huanghaic\Desktop\1111\GenDoUtil\DEComPressTemp\1700_0_TFTM_3_AH_2015081801.zip
执行方法后sbtemp1的值:C:\Users\HUANGH~1\Desktop\1111\GENDOU~1\DECOMP~1\1700_0~1.ZIP 0_TFTM_3_AH_2015081801.zip
执行方法后n的值:816043786301
然后在执行到 Left(sbtemp1, n)时抛出异常:算术运算导致溢出。
这是为什么?我怀疑是返回值n不正确。
请大神亲们帮忙指点
...全文
相关推荐
find_java.bat无法正常运行-16.09.21
"find_java.bat无法正常运行的问题主要与路径中的特殊字符以及Windows API的GetShortPathName函数的异常行为有关。此问题常见于Android SDK的更新过程中,由
精彩编程与编程技巧-取得短文件名...
在现代操作系统中,大多数情况下我们使用的是长文件名,但在某些特殊情况下,可能还需要用到短文件名:1. **兼容性问题**:当应用程序或脚本依赖于短文件名时,使用长文件名可能会导致程序运行失败。2.
C#如何使用WinApi.doc
通过这种方式,C#开发者能够充分利用Windows API的强大功能,扩展.NET Framework的功能范围,解决特定场景下的问题。
学习教程:C#windowsAPI托管dllexe大全:2022.pdf
- 安全性:由于直接调用API可能会暴露安全风险,因此需要确保正确管理内存和资源,避免缓冲区溢出等问题。
【精品教程】最新的C# API大全.doc
不过需要注意的是,调用API可能会涉及错误处理、线程安全以及不同平台兼容性等问题,因此在实际应用中需要谨慎处理。


