Pinvoke Stack Imbalance发生,检查Internet连接

时间:2015-10-19 02:19:20

标签: vb.net visual-studio-2015 pinvoke

我在Microsoft Visual Studio 2015中编写了VB代码,但运行程序时出错。

这是错误:

 Managed Debugging Assistant 'PInvokeStackImbalance' has detected a problem in 'C:\Users\PC_6\Documents\Visual Studio 2015\Projects\Test\test\bin\Debug\Test.vshost.exe'.

 Additional information: A call to PInvoke function 'Test!Test.Form1::InternetGetConnectedState' has unbalanced the stack. 

这是我的代码。

 Imports System.Runtime.InteropServices

 Public Class Form1

 Private Declare Function InternetGetConnectedState Lib "wininet" (ByRef conn As Long, ByVal val As Long) As Boolean

 Private Sub btnPay_Click(sender As Object, e As EventArgs) Handles btnPay.Click

  Select Case ListBox1.SelectedIndex
        Case 0
            MsgBox("Selected Payment is " + ListBox1.SelectedItem)
        Case 1
            MsgBox("Selected Payment is " + ListBox1.SelectedItem)
        Case 2

            btnPay.Text = ("Checking Connection")
            Dim Out As Integer
            If InternetGetConnectedState(Out, 0) = True Then
                MsgBox("Connected!")
            Else
                MsgBox("No Connection!")
            End If
        Case Else
            MsgBox("Please Select a Payment Type")
    End Select
End Sub

结束班

1 个答案:

答案 0 :(得分:0)

InternetGetConnectedStatehttps://msdn.microsoft.com/en-us/library/windows/desktop/aa384702%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396)的文档显示它接受LPDWORDDWORD个参数,在.NET中,等价物为out UInt32(或{{1分别和ref

将您的签名更改为:

UInt32

并且这样称呼:

Public Enum InternetConnection As UInt32
    None = 0,
    Configured = &H40,
    Lan = &H02,
    Modem = &H01,
    ModemBusy = &H08,
    Offline = &H20,
    Proxy = &H04,
    RasInstalled = &H10
End Enum

Private Declare Function InternetGetConnectedState Lib "wininet" (ByRef flags As InternetConnection, ByVal reserved As UInt32) As Boolean