Aracılığıyla paylaş


Declare Deyimi

Bir dýþ dosyada uygulanan bir yordam başvurusudur bildirir.

[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ Overloads ] _
Declare [ charsetmodifier ] [ Sub ] name Lib "libname" _
[ Alias "aliasname" ] [ ([ parameterlist ]) ]
' -or-
[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ Overloads ] _
Declare [ charsetmodifier ] [ Function ] name Lib "libname" _
[ Alias "aliasname" ] [ ([ parameterlist ]) ] [ As returntype ]

Bölümleri

Terim

Tanım

attributelist

İsteğe Bağlı.Bkz: öznitelik listesi.

accessmodifier

İsteğe Bağlı.Aşağıdakilerden biri olabilir:

Bkz: Visual Basic'de Erişim Düzeyleri

Shadows

İsteğe Bağlı.Bkz: Gölge.

charsetmodifier

İsteğe Bağlı.Karakter kümesi ve dosyayı belirtir bilgileri arayın.Aşağıdakilerden biri olabilir:

Sub

İsteğe bağlı, ancak ya da Sub veya Function yer almalıdır.Dış yordamı bir değer döndürmez gösterir.

Function

İsteğe bağlı, ancak ya da Sub veya Function yer almalıdır.Dış yordamı bir değer döndüren gösterir.

name

Gerekli.Bu dış başvuru adı.Daha fazla bilgi için bkz. Bildirilen Öğe Adları (Visual Basic).

Lib

Gerekli.Tanıtan bir Lib yan tümcesi içeren harici bir yordama dış dosyayı (dll veya kod kaynağı) tanımlar.

libname

Gerekli.Bildirilen yordamı içeren dosyanın adı.

Alias

İsteğe Bağlı.Bildirilen yordamı içinde kendi dosya adıyla belirtilen tanımlanamaz olduğunu gösterir name.Kendi kimliğini belirtmek aliasname.

aliasname

Kullanırsanız, gereken Alias anahtar sözcüğü.Yordam iki yoldan birini kullanarak tanımlayan dize:

Tırnak işaretleri içinde dosya içindeki yordam giriş noktası adı ("")

-veya-

Numara işareti (#) yordamın giriş noktası, dosya içindeki sıra sayısını belirten bir tamsayı arkasından

parameterlist

Yordam parametreleri alır, gerekli.Bkz: Parametre Listesi (Visual Basic)

returntype

Gerekli ise Function belirtilen ve Option Strict olan On.Yordam tarafından döndürülen değerin veri türü.

Notlar

Bazen projenizin dışında (örneğin, dll veya kod kaynağı) dosyasında tanımlanmış bir yordamı çağırmak gerekir.Bunu yaptığınızda, Visual Basic Derleyicisi yordamı nerede olduğunu, nasıl tanımlanır, kendi arama sırası ve dönüş türü ve kullandığı dize karakter kümesi gibi doğru yordamını çağırmak gerekli bilgilere erişim yok.Declare Deyimi harici bir yordama bir başvuru oluşturur ve bu gerekli bilgileri sağlar.

Kullanabileceğiniz Declare modül düzeyinde.Yani bildiriminin içerik için bir dış başvuru sınıf, yapı veya modül olmalıdır ve kaynak dosya, ad, arabirim, yordam veya bloğu olamaz.Daha fazla bilgi için bkz. Bildirim Bağlamları ve Varsayılan Erişim Düzeyleri (Visual Basic).

Dış başvuru için varsayılan Public (Visual Basic) erişim.Erişim değiştiricileri ile kullanıcıların erişim düzeylerini ayarlayabilirsiniz.

Kurallar

  • Öznitelikler. Dış başvuru için öznitelikleri uygulayabilirsiniz.Uyguladığınız herhangi bir öznitelik etkisi yalnızca projenizde, dış dosyadaki değil.

  • Değiştirici. Dış yordamları olan örtülü olarak Shared (Visual Basic).Kullanamazsınız Shared dış başvuru ve bildirmek paylaşılan durumunu değişiklik yapamaz, anahtar sözcük.

    Harici bir yordama geçersiz kılma olarak katılmak, arabirim üyeleri uygulayan veya olayları işlemek.Accordingly, you cannot use the Overrides, Overridable, NotOverridable, MustOverride, Implements, or Handles keyword in a Declare statement.

  • Dış yordam adı. Bu dış başvuru aynı adı vermek gerekmez (de name), dış dosyadaki yordamın girdi noktası adıyla (aliasname).Kullanabileceğiniz bir Alias giriş noktası adını belirtmek için yan tümcesi.Bu dış yordamı aynı kapsam içinde Visual Basic ayrılmış değiştirici veya bir değişken, yordam veya herhangi bir programlama öğe aynı ada sahipse, yararlı olabilir.

    [!NOT]

    Çoğu dll giriş noktası adlarında büyük/küçük harf duyarlıdır.

  • Dış yordam numarası. Alternatif olarak, kullanabileceğiniz bir Alias harici dosyanın verme tablo içinde giriş noktası sıra sayısını belirtmek için yan tümcesi.Bunu yapmak için başlamadan aliasname sayı işareti (#).Visual Basic'te dış yordam adı herhangi bir karakter izin verilmiyorsa veya yordam adı olmadan dış dosyayı dışa aktarır, bu yararlı olabilir.

Veri türü kuralları

  • **Parametre veri türleri.**Option Strict Olan On, her parametrenin veri türünü belirtmeniz gerekir parameterlist.Bu numaralandırma, yapısı, sınıf veya arabirim adı veya herhangi bir veri türü olabilir.İçinde parameterlist, kullandığınız bir As her parametre için geçirilecek bağımsız değişkenin veri türünü belirtmek için yan tümcesi.

    [!NOT]

    İse dış yordam için yazılmadı.net Framework, veri türlerine karşılık gelen dikkatli olmalıdır.Örneğin, Visual Basic 6.0 yordama bir dış başvuru bildirirseniz bir Integer parametresi (Visual Basic 6.0 16 bit) karşılık gelen bağımsız değişken olarak tanımlamanız gerekir Short , Declare deyimi, Visual Basic'te 16-bit tamsayı türü olduğu için.Benzer şekilde, Long Visual Basic 6. 0'da, farklı veri genişliği vardır ve Date farklı bir şekilde uygulanır.

  • Dönüş veri türü. Dış yordam ise bir Function ve Option Strict olan On, çağıran kodun döndürülen değerin veri tipini belirtmeniz gerekir.Bu numaralandırma, yapısı, sınıf veya arabirim adı veya herhangi bir veri türü olabilir.

    [!NOT]

    Visual Basic derleyici veri türlerinizi olanlar dış yordamı ile uyumlu olduğunu doğrulamaz.Bir uyuşmazlık varsa, ortak dil çalışma zamanı oluşturduğu bir MarshalDirectiveException zamanında özel durum.

  • **Varsayılan veri türü.**Option Strict Olan Off ve bir parametre veri türü belirtmezseniz parameterlist, ilgili bağımsız değişkeni için Visual Basic Derleyicisi Nesne Veri Türü.Benzer şekilde, belirtmezseniz, returntype, derleyici olarak dönüş veri türü alır Object.

    [!NOT]

    Tehlikeli veri türleri hakkında herhangi bir varsayım yapmak veya bunları varsayılan olarak izin vermek için farklı bir platformda yazılmamış olabilir harici bir yordama ilgilendiğiniz çünkü.Bunu, varsa her parametresi ve dönüş değeri veri türünü belirtmek çok daha güvenlidir.Bu, kodunuzun okunabilirliğini artırır.

Davranış

  • Kapsamı. Dış başvuru kapsamı boyunca kendi sınıf, yapı veya modülü kullanılıyor.

  • Yaşam süresi. Dış başvuru olarak sınıf, yapı veya bildirilmiş modül aynı ömre sahiptir.

  • Harici bir yordamı çağrılıyor. Çağrı, tıpkı bir dış yordam çağrısı bir Function veya Sub yordam — bir değer döndürürse bir ifade kullanarak, veya içinde belirterek bir Call Deyimi (Visual Basic) bir değer döndürmezse.

    Tam olarak belirtildiği gibi dış yordamına bağımsız değişken geçirdiğinizde parameterlist , Declare ifadesi.Nasıl parametreleri başlangıçta dış dosyasında bildirilmiş dikkate değil.Dönüş değeri ise, benzer şekilde, tam olarak belirtildiği gibi kullanmak returntype , Declare ifadesi.

  • Karakter kümeleri. De belirtmek charsetmodifier nasıl Visual Basic dış yordam çağırdığında dizeleri sıralama.Ansi Değiştirici ANSI değerleri, tüm dizelere sıralamakta Visual Basic yönlendirir ve Unicode değiştirici tüm dizeleri Unicode değerleri sıralama için yönlendirir.Auto Değiştirici göre sıralama dizeleri için Visual Basic yönlendirir.net Framework kuralları dış başvuruyu temel alarak name, veya aliasname belirtilmiş olması durumunda.Ansi varsayılan değerdir.

    charsetmodifierAyrıca nasıl Visual Basic ile harici dosya dış yordamda aramak belirtir.Ansive Unicode hem de Visual Basic'i aramak için arama sırasında adını değiştirmeden doğrudan.AutoVisual Basic çalışma zamanı platformu temel karakter kümesi ve büyük bir olasılıkla dış yordam adı gibi değiştirmenin yönlendirir:

    • Windows 95, Windows 98 veya Windows Millennium Edition gibi bir ANSI platformunda ilk dış yordam adı hiçbir değişiklik yapmadan arar.Bu işe yaramazsa, "a" dış yordam adı sonuna ve Ara onu yeniden.

    • Windows NT, Windows 2000 veya Windows xp gibi bir Unicode platformunda ilk dış yordam adı hiçbir değişiklik yapmadan arar.Bu işe yaramazsa, append dış yordamının sonuna "w" olarak adlandırın ve aramak onu yeniden.

  • Mekanizması. Visual Basic kullanır.net Framework platform çağırma gidermek ve dış yordamlara erişmek için (PInvoke) mekanizması.Declare Deyimi ve DllImportAttribute her iki sınıf bu mekanizma otomatik olarak kullanın ve PInvoke bilgisine gerek yoktur.Daha fazla bilgi için bkz. İzlenecek yol: Windows API'larını Çağırma (Visual Basic).

Güvenlik NotuGüvenlik Notu

Common language runtime (clr) dış yordamı çalıştırması durumunda olan yönetilmeyen kod.Böyle bir yordam, bir Win32 API işlevi veya bir com yöntemini çağırdığınızda uygulamanız güvenlik riskleri doğurabilir.Daha fazla bilgi için bkz. Yönetilmeyen Kod.

Örnek

Aşağıdaki örnek, bir dış başvuru bildirir bir Function yordamı, geçerli kullanıcı adını döndürür.Daha sonra dış yordamı çağırır GetUserNameA bir parçası olarak getUser yordam.

Declare Function getUserName Lib "advapi32.dll" Alias "GetUserNameA" (
    ByVal lpBuffer As String, ByRef nSize As Integer) As Integer 
Sub getUser()
    Dim buffer As String = New String(CChar(" "), 25)
    Dim retVal As Integer = getUserName(buffer, 25)
    Dim userName As String = Strings.Left(buffer, InStr(buffer, Chr(0)) - 1)
    MsgBox(userName)
End Sub

DllImportAttribute Yönetimsiz kod içinde işlevlerini kullanarak alternatif bir yol sağlar.Aşağıdaki örnek alınan bir işlevi kullanmadan bildirir bir Declare ifadesi.

' Add an Imports statement at the top of the class, structure, or 
' module that uses the DllImport attribute. 
Imports System.Runtime.InteropServices
<DllImportAttribute("kernel32.dll", EntryPoint:="MoveFileW",
    SetLastError:=True, CharSet:=CharSet.Unicode,
    ExactSpelling:=True,
    CallingConvention:=CallingConvention.StdCall)>
Public Shared Function moveFile(ByVal src As String,
  ByVal dst As String) As Boolean 
    ' This function copies a file from the path src to the path dst. 
    ' Leave this function empty. The DLLImport attribute forces calls 
    ' to moveFile to be forwarded to MoveFileW in KERNEL32.DLL. 
End Function

Ayrıca bkz.

Görevler

İzlenecek yol: Windows API'larını Çağırma (Visual Basic)

Başvuru

Imports Deyimi (.NET Ad Alanı ve Türü)

AddressOf İşleci (Visual Basic)

Function Deyimi (Visual Basic)

Sub Deyimi (Visual Basic)

Parametre Listesi (Visual Basic)

Call Deyimi (Visual Basic)

LastDllError