2010-09-21 4 views
1

J'ai testé une petite extension shell en référence au projet de code article. Bien que le processus est assez compliqué, j'ai une certaine idée comment ce sont les follwoing methodsand qu'est-ce que Thet faire .:Comment enregistrer l'extension Shell avec une certaine extension de fichier

Initialize,DragQueryFile,GetCommandString,InvokeCommand,QueryContextMenu

Mais après avoir lu ce que je ne comprends pas comment notre extension ContextMenu est associée à Fichier .txt.

L'article explique si nous allons jeter un oeil à l'intérieur .rgs fichier, nous pouvons voir qu'il créer une entrée de registre comme ceci:

HKCR 
{ 
    NoRemove txtfile 
    { 
    NoRemove ShellEx 
    { 
     NoRemove ContextMenuHandlers 
     { 
     ForceRemove SimpleShlExt = s '{5E2121EE-0300-11D4-8D3B-444553540000}' 
     } 
    } 
    } 
} 

Mais réelle, après avoir suivi l'article et l'écriture du code, lorsque J'ai ouvert SimpleShlExt.rgs Il ressemble à ceci:

--edit comme dans CodeProject--

HKCR 
{ 

    NoRemove CLSID 
    { 
     ForceRemove {1E569362-E0A6-4DEA-AB1F-67D6D3DEF1A5} = s 'SimpleShExt Class' 
     { 

      InprocServer32 = s '%MODULE%' 
      { 
       val ThreadingModel = s 'Apartment' 
      } 

     } 
    } 
} 

Est-ce que le registre crée dynamiquement tout mappage entre les entrées CLSID et txtfile reg. Si tel est le cas, si je veux modifier le comportement d'un autre fichier, par exemple pour un fichier mp3 ou un lecteur lui-même et que mon menu contextuel soit affiché ou affiché, alors comment y remédier. Parce que je ne connais pas le CLSID pour ça.

Répondre

1

Une possibilité est d'enregistrer votre menu contextuel pour toutes les extensions de fichier que vous souhaitez prendre en charge. L'autre possibilité est d'enregistrer votre extension dans la classe générique/*. Il sera ensuite instancié pour tous les fichiers. Vous pouvez ensuite décider si le menu contextuel doit être visible pour ce fichier ou non. Cela peut être fait en utilisant l'argument IDataObject de IShellExtInit :: Initialize.

+0

Si vous avez un code Spinet ou un article connexe s'il vous plaît – Simsons

+1

@Subhen je l'ai fait avec regedit - donc pas d'exemple: P Peut-être cela aide http://msdn.microsoft.com/en-us/library/cc144171%28v= VS.85% 29.aspx http://msdn.microsoft.com/fr-fr/library/bb776095%28v=VS.85%29.aspx –

0

Vous devez ajouter manuellement la pièce à enregistrer avec l'extension de fichier txt dans votre fichier rgs. Visual Studio ajoute uniquement la partie pour enregistrer l'extension shell.

Questions connexes