2016-05-17 16 views
-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 
+0

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

Antwort

0

Marshal ist ein reserviertes Wort; Sie können einer Variablen diesen Namen nicht geben. Entfernen Sie die Dim Marshal Anweisung.

Verwandte Themen