我在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
结束班
答案 0 :(得分:0)
InternetGetConnectedState
(https://msdn.microsoft.com/en-us/library/windows/desktop/aa384702%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396)的文档显示它接受LPDWORD
和DWORD
个参数,在.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