Windows - Egyedi beállítások hozzáadása a mappákhoz

forráskód letöltése
A Windows valamennyi mappája személyre szabható, akár egyedileg is. Beállítható a rejtett fájlok megjelenítése, titkosított és tömörített tartalmak más színnel való kijelzése, stb. Alábbi cikkünkkel a programozóknak szeretnénk tippet adni. Megmutatjuk, hogy lehet a beállítást végző ablakot további elemekkel bővíteni, ezeket kezelni és az adatokat tárolni.
Cikkünkhöz mellékeltük az alábbiakban szereplő összes beállítást létrehozó registry állományt "Install Animare.reg" néven. A "Remove Animare.reg" futtatásával az összes bejegyzés eltávolítását el lehet végezni.
Indítsuk el a Windows Intézőt (Windows Explorer) és kattintsuk az Eszközök > Mappa beállításai (Tools > Folder Options) menüre. A megjelenő ablakban lépjünk a "Nézet" ("View") oldalra. A "Speciális beállítások" ("Advanced settings") csoportban számos beállítás létezik, ami az Intéző megjelenítéseit szabályozza. Készítsünk saját beállítási lehetőségeket és helyezzük el ugyanebben az ablakban. Ha a felhasználó megváltoztatja a jelölőnégyzetek és rádiógombok tartalmát, akkor a regisztrációs adatbázis megfelelő helyén megjelennek a módosítások, ahonnan programból ki lehet őket olvasni.
Indítsuk el a REGEDIT.EXE programot és keressük meg a következő helyet a registryben:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
Ezen belül találunk egy "Folder" nevű kulcsot, amelyben a mappabeállítások ablak tartalma található. Megtehetjük, hogy hozzáfűzünk további beállításokat, de a könnyebb áttekinthetőség kedvéért inkább készítsünk egy saját csoportot:
A "Folder" kulcs mellett hozzunk létre egy új kulcsot "Animare" néven. Ezen belül egy új karakterláncot (REG_SZ), "Type" névvel és "group" értékkel:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Animare]
"Type"="group"
Nézzük meg ismét az Eszközök > Mappa beállításai (Tools > Folder Options) ablakot, megjelent az "Animare" felírat egy nyíl ikon után.
Változtassuk meg az ikon képét egy mappára. Hozzunk létre egy új bővíthető karakterlánc értéket (REG_EXPAND_SZ) "Bitmap" néven, "%SystemRoot%\system32\SHELL32.dll,4" értékkel. Ez a dll tartalmazza az egyik típusú mappaikont. Nyissuk meg ismét a mappa beállításokat és ellenőrizzük, hogy a nyíl helyett megjelent-e a mappa ikon?
Opcionálisan súgó témakört is rendelhetünk az "Animare" beállításcsoporthoz és minden alábbi komponenshez, ha létrehozunk egy "HelpID" nevű karakterláncot (REG_SZ) és értéknek megadjuk a súgófájl nevét. Ha a fájlon belül egy adott pozícióra akarunk mutatni, akkor használjuk a #azonosító formulát (pl.: shell.hlp#51140).
Következő lépés a komponensek elhelyezése, ami lehet jelölőnégyzet, rádiógomb vagy újabb beállításcsoport. Kezdjük a jelölőnégyzettel:
Hozzunk létre az "Animare" kulcson belül egy új kulcsot "Checkbox 1" névvel.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Animare\Checkbox 1]
A megadott név fog megjelenni az Intéző ablakában. A kulcson belül készítsünk egy új karakterláncot (REG_SZ) "Type" néven, "checkbox" értékkel. Minden jelölőnégyzet készítésénél így kell eljárnunk.
"Type"="checkbox"
Egy másik karakterláncra is szükségünk lesz a későbbiekben. Neve "ValueName", értéke "Animare_Checkbox1".
"ValueName"="Animare_Checkbox1"
Most három duplaszó (REG_DWORD) típus következik, ami a komponens állapotaihoz tartozó adatokat definiálja.
"CheckedValue" - A kipipált jelölőnégyzethez tartozó számot tárolja. Értéke legyen 1.
"DefaultValue" - A jelölőnégyzet alapértelmezett értéke, ide is 1-et írjunk be.
"UncheckedValue" - Kikapcsolt állapota mellet ezt az értéket veszi fel; legyen 0.
"CheckedValue"=dword:00000001
"DefaultValue"=dword:00000001
"UncheckedValue"=dword:00000000
Nézzük meg az Intézőt és ellenőrizzük, hogy megjelent-e a kipipált jelölőnégyzet az "Animare" beállításcsoportban. Következő feladatunk az adattárolás megvalósítása. A felhasználó bejelöli és törli a négyzetet, de hol jelenik ez meg? A registry egy általunk megadott másik pontján. Két érték írja le ezt a pontot, az egyik (HKeyRoot) a főkulcsot, a másik (RegPath), pedig ebből kiindulva a mellékkulcsot adja meg, ahol automatikusan létrejön a kulccsal megegyező nevű bejegyzés.
Hozzunk létre a "HKeyRoot" nevű duplaszót (REG_DWORD) és adjuk neki értékül a "80000001" hexadecimális számot.
"HKeyRot"=dword:80000001
A szám a HKEY_CURRENT_USER főkulcsot jelenti, ami az aktuális felhasználó beállításait tartalmazza, így felhasználónként más és más adatokkal dolgozhatunk. Határozzuk meg ezen belül az alkulcsot is a "RegPath" nevű karakterláncban (REG_SZ), értéke legyen: "Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced".
"RegPath"="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced"
Ha a felhasználó kipipálja a jelölőnégyzetet, akkor a HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced kulcs alatt automatikusan keletkezik egy "Animare_Checkbox1" (ValueName) bejegyzés 1-es értékkel. Ha törli a pipát, akkor 0 érték jelenik meg.
Következik a rádiógombok készítése, de ne a meglévő jelölőnégyzetünk mellé tegyük, hanem az "Animare"-en belül egy új beállításcsoportba. Elkészítése során ugyanúgy kell eljárni, mint az "Animare" esetében. Legyen a csoport neve "Radiobuttons":
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Animare\Radiobuttons]
Adjuk meg ismét a "Type" és "Bitmap" beállításokat. A rádiógomb elkészítése annyiban különbözik a jelölőnégyzettől, hogy nincs szükség a "UncheckedValue" bejegyzésre és a "Type" értéke "radio". A "CheckedValue"-val lehet szabályozni, hogy ki- vagy bekapcsolt állapotban legyen. Amennyiben minden rádiógombnál 1-re állítjuk a "CheckedValue"-t, az összes be lesz kapcsolva, ami nyilvánvalóan nem felel meg a működési feltételeinek - ezért csak az egyiknél kapcsoljuk be. Készítsünk két rádiógombot "Button 1" és "Button 2" névvel.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Animare\Radiobuttons\Button 1]
"ValueName"="Animare_Button1"
"CheckedValue"=dword:00000001
"DefaultValue"=dword:00000001
"Type"="radio"
"HKeyRot"=dword:80000001
"RegPath"="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Animare\Radiobuttons\Button 2]
"ValueName"="Animare_Button2"
"CheckedValue"=dword:00000000
"DefaultValue"=dword:00000001
"Type"="radio"
"HKeyRot"=dword:80000001
"RegPath"="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced"
Az adattárolásban nincs különbség a jelölőnégyzet és a rádiógomb között.