2016-05-17 56 views
-1

它說元帥不能使用,因爲它是保護級別或變量之前已經使用過,並且它已被分配給另一個值。使用元帥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

只是一個重要的注意事項:interop有點像一個緊急解決方案...它不應該用於實際的軟件,因爲它必須硬連線到機器代碼和機器代碼功能簽名,更不用說了它們的特定版本... plus:您需要自己查找並翻譯這些簽名(!!)。創建一個C++/CLR庫,在VB.NET中導入並使用它,這樣在Windows更新之後不太可能中斷,並且更加可靠。編組更糟,只會讓你陷入困境。 WINAPI只能在本地應用程序中使用。 – specializt

回答

0

Marshal是保留字;你不能給這個變量這個名字。刪除Dim Marshal聲明。