It is currently Wed Sep 08, 2010 4:34 am




Post new topic Reply to topic  [ 8 posts ] 
[Tutorial]Windows Shell Integration 
Author Message
Braincode Programmer
User avatar

Joined: Mon Jan 14, 2008 3:24 am
Posts: 363
Location: Calarasi
Post [Tutorial]Windows Shell Integration
I. In primul rand haideti sa vedem cum se face manual, iar apoi sa trecem la o implementare in c#.
Start->Run->regedit
Apoi dati browse pe HKEY_CLASSES_ROOT. Dupa cum se observa primele subkey din HKEY_CLASSES_ROOT incep cu . (punct), asta inseamna ca ele sunt extensii.
Acum haideti sa ne cream propria extensie, sa zicem .hpd . Pt a face acest lucru click dreapta pe HKEY_CLASSES_ROOT si new key, setati numele .hpd si gata.
Image
Acum fiecare keye are un registru (Default) inca de la creare. Acum click dreapta pe (Default) si alegeti Modify..., acum in fieldul Value Data scrieti un string ( reprezinta numele clasei, eu am ales "Tutorial" ).
Dupa toate astea de extensia .hpd este "responsabila" clasa care ati trecuto la (Default).
Image

II. Crearea clasei: Click dreapta pe HKEY_CLASSES_ROOT -> New -> Key. Aceast key pe care tocmai l-ati creat trebue sa aiba acelasi nume cu stringul pus la (Default) in cadrul extensiei .hpd (in cazul meu "Tutorial").
a. Setarea unei icoane pt extensia creata.
Click dreapta pe clasa ( in cazul meu "Tutorial") New->Key si setati numele "DefaultIcon", apoi dublu click pe registrul (Default) si la "Value Data" setati pathul catre o icoana (scris in ghilimele).
Image

b. Open
Acum vom seta pathul catre un executabil care va rula atunci cand se deschide fisierul cu extensia .hpd (Deobicei acelui executabil i se trimte parametrul "%1" care returneaza calea fisierului curent, spre exemplu daca dati dublu click pe d:/lol.hpd si se trimite argumentul "%1" catre programul principal acel argument va returna "d:/lol.hpd". Un exemplu mai concret ar fi acela al fisierelor .txt, in momentul cand se face dublu click pe un .txt se porneste notepadul care deschide si afiseaza fisierul a carui cale a fost returnata de "%1").
Creati urmatoarele Key:
- HKEY_CLASSES_ROOT\Tutorial\shell
- HKEY_CLASSES_ROOT\Tutorial\shell\open
- HKEY_CLASSES_ROOT\Tutorial\shell\open\command

Acum modificati valuarea (Default) a SubKey-ului "HKEY_CLASSES_ROOT\Tutorial\shell\open\command" astfel incat in fieldul "Value Data" sa introduceti pathul si argumentele care doriti. Spre exemplu eu am ales celebrul "cmd.exe".
Image


Dupa ce ati facut toate cele de mai sus creati un fisier .hpd (deobicei cu notepad, save as: nume.hpd) si dati dublu click pe el. Veti observa ca se deschide cmd-ul avand pathul setat catre directorul unde se afla fisierul .hpd.


Acum sa incepem cu implementarea in c#:

public void SetReg()
{
RegistryKey rkey = Registry.ClassesRoot.CreateSubKey(".hpd");
rkey.SetValue("", "Tutorial");
rkey = Registry.ClassesRoot.CreateSubKey("Tutorial\\DefaultIcon");
rkey.SetValue("", "c:\\icoana.ico");
rkey = Registry.ClassesRoot.CreateSubKey("Tutorial\\shell\\open\\command");
rkey.SetValue("", "cmd.exe"");
}
Primul parametru al functiei SetValue reprezinta numele registrului din subkey-ul curent iar al 2-lea parametru reprezinta valoarea pe care o va lua registrul din parametrul 1. Pt a modifica acel registru (Default) trebuie sa specificam ca numele acestuia este un string gol adica "".

Astept feedback si daca nu ati inteles ceva spuneti si va ajut cu mare placere


Thu Oct 30, 2008 9:16 pm
Profile
Braincode Team Leader
User avatar

Joined: Mon Sep 10, 2007 11:40 pm
Posts: 2731
Location: Galati
Post Re: [Tutorial]Windows Shell Integration
Felicitari! E bine ca mai scrie cineva in aceasta sectiune.


Thu Oct 30, 2008 9:22 pm
Profile
Braincode Programmer
User avatar

Joined: Mon Jan 14, 2008 3:24 am
Posts: 363
Location: Calarasi
Post Re: [Tutorial]Windows Shell Integration
Mersi, mda a cam murit in ultima vreme


Thu Oct 30, 2008 9:27 pm
Profile
New Member

Joined: Sat Oct 04, 2008 2:48 am
Posts: 36
Post Re: [Tutorial]Windows Shell Integration
Imi da erori aiurea pur si simplu
Unrecognized escape sequence - la ce este intre ghilimele (vreo 7 erori)


Si inca un sfat , poti adauga o icoana din resursa proiectului
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));


Mon Nov 03, 2008 4:00 pm
Profile
Braincode Programmer
User avatar

Joined: Mon Jan 14, 2008 3:24 am
Posts: 363
Location: Calarasi
Post Re: [Tutorial]Windows Shell Integration
la ce anume iti da erori?, ce secventa de cod?mie imi merge perfect


Mon Nov 03, 2008 4:52 pm
Profile
Grand Member

Joined: Fri Dec 26, 2008 12:12 am
Posts: 288
Location: Internet
Post Re: [Tutorial]Windows Shell Integration
Eu sunt un pic mai mofturos... :glare:

Vreau sa mai zici ceva despre shell integration, nu doar cum definesti nu tip de fisier si ii asociezi o pictograma... Uite, spre exemplu, ceva mai complicat: meniu contextual la drag and drop... E "shell integration" ceva mai elevat... decat sa bati pasul pe loc cu "bravo", "felicitari", "mie nu imi merge"... ai putea sa treci mai departe. Daca nu tu, macar ALTCINEVA.


Mon Jan 19, 2009 9:41 am
Profile
Braincode Team Leader
User avatar

Joined: Mon Sep 10, 2007 11:40 pm
Posts: 2731
Location: Galati
Post Re: [Tutorial]Windows Shell Integration
Daca dai sugestii, ai putea sa le pui in practica chiar tu.


Mon Jan 19, 2009 3:26 pm
Profile
Grand Member

Joined: Fri Dec 26, 2008 12:12 am
Posts: 288
Location: Internet
Post Re: [Tutorial]Windows Shell Integration
Un exemplu cu ce as vrea sa gasesc pe un astfel de topic:
http://it.octopis.com/download.php?preview=fshide

E asemanator cu ce a dat vlasceanu.
Code:
REGEDIT
[HKEY_CLASSES_ROOT\Folder\shell\superhide]
@="Make super hidden"
[HKEY_CLASSES_ROOT\Folder\shell\superhide\command]
@="attrib \"%1\" +s +h"


Pentru "acasa" mi-am mai facut cateva modificari, adaugand la exe-uri 2 optiuni: "Run in cmd" si "Extract resources".

Mai puteti sa adaugati trucuri pt registri, luate de pe net (regedit.com :)) ).


Tue Jan 20, 2009 10:22 am
Profile
 
Post new topic Reply to topic  [ 8 posts ] 


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
Powered by phpBB © phpBB Group.
Designed by boogiesbc and Vjacheslav Trushkin .