C# - Parancsikon létrehozása

Windows Shell objektumok használata 4. rész

forráskód letöltése
A sorozat korábbi számaiban megismerkedhettünk többek között a Windows Shell objektummodelljének központi elemével, a Shell objektummal. A cikksorozat e számában egy újabb osztállyal ismerkedhetünk meg. Bemutatjuk, hogyan készíthetünk egy parancsikont tetszőleges néven az osztály felhasználásával. A parancsikon esetében megadhatjuk az indítani kívánt alkalmazás elérési útvonalat, valamint a megjelenített ikont is.
A megoldásban az objektummodell ShellLinkObject osztályára van szükségünk, amit azonban nem lehet közvetlenül példányosítani. A művelet előtt létre kell hoznunk néhány objektumot, melyek segítségével már megalkotható az objektum.
A mellékelt példában meg kell adnunk egy nevet a szövegmezőben, majd megnyomni a LÉTREHOZ feliratú gombot, melynek eredményeképpen létrejön egy parancsikon a megadott néven, a Shell04.exe alkalmazásra mutatva. Lássuk, mit kell tennünk a megvalósítás érdekében.
Mivel a parancsikont az Asztalon szeretnénk elhelyezni, az Environment osztály statikus GetFolderPath metódusával le kell kérdeznünk az Asztal speciális mappájának az elérési útvonalát.
string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
A következő lépésben a szövegmezőben megadott név karakterláncát ki kell egészítenünk a „.lnk” karakterekkel, hogy a név szabályos legyen.
string name = textBox1.Text + ".lnk";
A létrejött két karakterláncot összekombinálva létrehozhatjuk a parancsikon elérési útvonalát. Ehhez a Path osztály segítségét vesszük igénybe.
string path = Path.Combine(desktop,name);
A kapott elérési útvonalon létrehozunk egy állományt, mely majd a parancsikon lesz, egyelőre célútvonal nélkül.

FileStream fs = new FileStream(path,FileMode.CreateNew,FileAccess.Write);
fs.Close();
A megvalósítást úgy folytatjuk, hogy az Asztal mappájának elérési útvonalát átadva paraméterként létrehozunk egy Shell32.Folder objektumot.
Shell32.Folder f = shell.NameSpace(desktop);
Ennek felhasználásával megkeressük a mappában a megadott néven létrehozott parancsikon állományt, majd létrehozunk egy Shell32.FolderItem objektumot.
Shell32.FolderItem item = f.ParseName(name);
A Shell32.FolderItem objektum GetLink property-jének lekérdezésével hozható létre a Shell32.ShellLinkObject objektum, mely most már a megalkotandó parancsikon objektuma lesz. Itt egy explicit konverzióra van szükség, mert az object típust Shell32.ShellLinkObject típusra kell konvertálni.
Shell32.ShellLinkObject linktoapp = (Shell32.ShellLinkObject)item.GetLink;
A létrejött objektumnak az egyszerűség kedvéért két adatát adjuk meg. A Path property-ben specifikáljuk az alkalmazás elérési útvonalát, ahol a Shell04.exe állomány található.
linktoapp.Path = Application.ExecutablePath;
A SetIconLocation metódus meghívásával egyedi ikont rendelhetünk a parancsikonhoz. A példában a mellékelt Icon.ico állományt adjuk meg itt.
linktoapp.SetIconLocation(Application.StartupPath + "\\Icon.ico",0);
A művelet utolsó lépése, hogy a parancsikont reprezentáló objektum Save metódusát meghívjuk egy NULL paraméterrel, hogy a módosítások életbe lépjenek.
linktoapp.Save(null);
A metódusnak akkor kellene paraméterként egy elérési útvonalat megadnunk, ha a parancsikon számára egy más mappát szeretnénk kijelölni.
A művelet eredményeképpen az asztalon megjelenik a Shell04 feliratú parancsikon, az általunk specifikált ikont megjelenítve.

Windows Shell objektumok használata cikksorozat