-1
Er besagt, dass Marshal nicht verwendet werden kann, da es sich um eine Schutzebene handelt oder die Variable zuvor verwendet wurde und ihr ein anderer Wert zugewiesen wurde.Verwenden von Marshal vb.net Visual Studio 2012
//code:
Imports System.Text.RegularExpressions
Imports System.Runtime.InteropServices
Public Class Form1
Dim int As Integer = 0
Public WithEvents Browser As WebBrowser
Public Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Int32) As UShort
#Region "Using Proxy"
<Runtime.InteropServices.DllImport("wininet.dll", SetLastError:=True)> _
Private Shared Function InternetSetOption(ByVal hInternet As IntPtr, ByVal dwOption As Integer, ByVal lpBuffer As IntPtr, ByVal lpdwBufferLength As Integer) As Boolean
End Function
Public Structure Struct_INTERNET_PROXY_INFO
Public dwAccessType As Integer
Public proxy As IntPtr
Public proxyBypass As IntPtr
End Structure
Public Sub UseProxy(ByVal strProxy As String)
Const INTERNET_OPTION_PROXY As Integer = 38
Const INTERNET_OPEN_TYPE_PROXY As Integer = 3
Dim struct_IPI As Struct_INTERNET_PROXY_INFO
Dim Marshal
struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY
struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy)
struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local")
Dim intptrStruct As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI))
Marshal.StructureToPtr(struct_IPI, intptrStruct, True)
Dim iReturn As Boolean = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, System.Runtime.InteropServices.Marshal.SizeOf(struct_IPI))
End Sub
#End Region
nur eine wichtige Nebenbemerkung: interop ist etwas wie eine Notfall-Lösung ... es sollte nicht für die eigentliche Software verwendet werden, da es fest verdrahtet werden muss, um Funktions-Signaturen zu programmieren und vor allem zu programmieren bestimmte Versionen von ihnen ... plus: Sie müssen diese Signaturen selbst suchen und übersetzen (!!). Erstellen Sie eine C++/CLR-Bibliothek, importieren und verwenden Sie sie in VB.NET, das ist viel weniger wahrscheinlich, nach einem Windows-Update zu brechen und viel zuverlässiger. Marshalling ist noch schlimmer und wird Sie nur in Schwierigkeiten bringen. WINAPI sollte nur innerhalb nativer Anwendungen verwendet werden. – specializt