C# - Külső függvények elérése osztályból

C# nyelv 16. rész

forráskód letöltése
Ha adott egy függvény egy DLL-ben - legyen az sajátunk vagy akár egy rendszer DLL -, akkor lehetőségünk van olyan osztályt készíteni, melynek egyik függvényét külsőként deklaráljuk és így ennek hívásával valójában az adott DLL-ben lévő függvényt hívhatjuk meg.
Mellékelt példában a Kernel32.dll-ben lévő SetVolumeLabel-t érjük el. Ennek segítségével egy tetszőleges meghajtó címkéjének szövegét megváltoztathatjuk.
Az eléréshez létrehozunk egy új osztályt Volume névvel. Ebben deklaráljuk a SetVolumeLabel-t külsőként. Ehhez a deklarációban az extern kulcsszót kell használnunk, ebből fogja tudni a fordító, hogy a függvény kódját nem a mi forráskódunkban kell keresni, hanem egy már létező külső DLL-ben. Hogy melyik lesz ez a DLL, azt egy DLLImport attribútumként adhatjuk meg a deklaráció előtt.
      class Volume
      {        
        [DllImport("kernel32")]
        static public extern bool SetVolumeLabel(string lpRootPathName, string lpVolumeName);    
      }
Ha adott az osztályunk benne a DLL függvényének hivatkozásával, akkor már igen egyszerű dolgunk van ennek meghívására.
      protected void button1_Click (object sender, System.EventArgs e)
      {
        Volume.SetVolumeLabel("C:\\", "C Drive");
      }
A mellékelt példa kipróbálása után a C meghajtó címkéje megváltozik a C Drive feliratra.

C# nyelv cikksorozat