C# - Folder objektum lehetőségei

Windows Shell objektumok használata 1. rész

forráskód letöltése
A Windows felhasználói felületén (UI) keresztül számtalan objektumhoz férhetünk hozzá, melyek egyrészt a programok futtatását, vagy a rendszer menedzselését segítik elő. Ezek egy része – mint a mappák – fizikai megvalósulással is rendelkeznek, míg más objektumok virtuálisak. Ezek együttesét a Windows Shell szervezi egységbe. Most induló cikksorozatunkban a Windows Shell objektumainak képességeit mutatjuk be, lehetőség szerint gyakorlati megközelítésben. A sorozat első részében a Folder objektummal ismerkedhetünk meg részletesebben.
A Windows Shell objektumait – hála a .NET rendszerben is felhasználható COM komponensnek – több módon érhetjük el. Amennyiben a Shell-t valamilyen script nyelvből kívánjuk elérni, akkor a „Shell.Application” karakterláncot kell megadnunk ahhoz, hogy a Windows Script Host létrehozza az objektum egy példányát, és elérhessük az osztályait. JScript nyelvben ez a következőképpen fest:
var objShell    = new ActiveXObject("Shell.Application");
Ha úgy döntünk, hogy a Shell funkcióit programunkba ágyazzuk, akkor a COM komponensek közül a Shell Controls And Automations nevű komponenst kell referenciaként az alkalmazásunk projektjéhez adnunk.
Ekkor az Add Reference menüpont kiválasztása után, a felbukkanó panel COM füle alatt ki kell választanunk a komponenst – mely a Shell32.dll állományban található –, majd a projekthez adnunk. Ezt követően a Shell32 kulcsszóval hivatkozhatunk a névtérre.
A mellékelt projekt mappájában találunk egy Sample nevű mappát, melyet a Folder Shell osztály segítségével érünk el, és végzünk vele műveletet. A Form ListView kontroljában információkat jelenítünk meg a mappáról a Folder osztály property-jeinek lekérdezése után.
Ekkor létrehozunk egy Folder objektumot a Sample mappára mutatva.
Shell32.Folder f;
...
f = new Shell32.ShellClass().NameSpace(Application.StartupPath + "\\Sample");
Majd a Folder osztály Title property-jéből kiolvassuk a mappa nevét.
list[1] = f.Title;
Ezt követően lekérdezzük a szülőmappa nevét is.
list[1] = f.ParentFolder.Title;
A Form alsó szegmensében a LÉTREHOZÁS gombbal új alkönyvtárat hozhatunk létre a Sample mappában, a szövegmezőben megadott néven. Itt a megadott nevet paraméterként átadva meghívjuk a Folder osztály NewFolder metódusát.
f.NewFolder(textBox2.Text,0);
A MÁSOLÁS gombra kattintva megnyithatunk egy OpenFileDialog objektumot, majd amennyiben kiválasztásra kerül egy állomány, akkor azt a Sample mappába másoljuk.
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
  f.CopyHere(openFileDialog1.FileName,0);
  ...
}
A műveletek eredménye látható a TreeView kontrolban.
A metódus második paramétere egy bitminta, melynek segítségével bizonyos instrukciókat adhatunk a másolás folyamatának. Például ha 4 értéket adunk meg, akkor elérhetjük, hogy nem jelenik meg dialógusablak a másolás folyamatának jelzésére.

Windows Shell objektumok használata cikksorozat