首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

PInvoke 函数GetSystemMenu的调用招致堆栈不对称

2013-10-25 
PInvoke 函数GetSystemMenu的调用导致堆栈不对称InternetGetConnectedState函数判断本机网络是否通畅Publ

PInvoke 函数GetSystemMenu的调用导致堆栈不对称

  'InternetGetConnectedState函数判断本机网络是否通畅
    Public Declare Function InternetGetConnectedState _
Lib "wininet.dll" (ByVal lpszUrl As String, ByVal dwFlags As Integer, _
ByVal dwReserved As Integer) As Long
    Public Const FLAG_ICC_FORCE_CONNECTION = &H1
'-------------------------------------------------------------------
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim n As Integer
        Dim i As Integer
        Dim a As String
        n = TextBox3.Text
        a = TextBox4.Text
        For i = 1 To n
            If InternetGetConnectedState("a", FLAG_ICC_FORCE_CONNECTION, 0) = 1 Then    '0,Flash.  1,ture
                Call duankai()
            Else
                Call lianjie()
            End If
            n = n - 1
        Next
    End Sub
      出现这个其他信息: 对 PInvoke 函数“WindowsApplication3!WindowsApplication3.Form1::InternetGetConnectedState”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
     但是调试照样成功。 求解决  还有我是用VS来写VB的,请说明为什么会出现这个问题。谢啦
[解决办法]
Private Declare Function InternetGetConnectedState Lib "wininet.dll" _
  (ByRef lpdwFlags As Int32, ByVal dwReserved As Int32) As Boolean

Private Enum ConnectionStates
    Modem = &H1
    LAN = &H2
    Proxy = &H4
    RasInstalled = &H10
    Offline = &H20
    Configured = &H40
End Enum
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
[解决办法]
很明显,你抄的代码是用于VB6的,VB6的Long相当于VB.NET的Integer。因为VB6虽然是32位的,但是保持了和VB1.0的兼容性,在早期286的电脑上,字长是16位的,所以32位对于那种古董电脑来说是“Long”的。

热点排行