VB .NET API 函数或外部 DLL 函数工作异常的处理方式之一

Posted by NosaLee in .NET Programming on 27-07-2012. Tags: , , , , , , , ,

作者:牧山道人
原文地址:http://www.seeksunslowly.com/vb-net-api-函数或外部-dll-函数工作异常的处理方式之一
转载请注明出处,谢谢。
_____________________________________

 

有时,我们会发现在 VB6 中工作正常的 API 函数或外部 DLL 函数在 VB .NET 中工作异常。

笔者昨天也碰到到这样的问题,后来经过调试,发现原因是 VB6 中的 Long 数据类型在 VB .NET 中应声明为 Integer(事实上其表示的范围是等价的)。

比如,以下 VB6 使用的 API 函数

Declare Function ShellExecuteEx Lib "shell32" (ByRef lp As SHELLEXECUTEINFO) As Long

在 VB .NET 应声明为:

Declare Function ShellExecuteEx Lib "shell32" (ByRef lp As SHELLEXECUTEINFO) As Integer

请注意以上两条语句粗体部分的区别。

此外,其实 VB .NET IDE 提供了这样的功能,点击“Tools –> Upgrade Visual Basic 6 Code…”(工具 –> 升级 VB6 代码),贴上在 VB6 中使用的 API 声明式,点击<Upgrade>按钮(升级),即可得到正确的 VB .NET API 声明式。

最后需要说明一下:以上经验同样适合于其他第三方 DLL 中的外部函数声明,也适用于 .NET 平台其他语言如 C#。

Post a comment