Hi , I would like to add an item in the context menu (right-click in explorer) but only for FLAC files ! I already tried a lot of registry manipulations but still no success The only way I found is to add my item in the following registry key: Code: HKCR\*\shell\extractflac > Default = [Extract FLAC Files] HKCR\*\shell\extractflac\command > Default = [extractflac.bat "%1"] But this item is now available for all my files and that's not very clever! Does anybody knows how to do? PS: I tried to add a shell key in the HKCR\.flac registry key but no effect (I did not restart the computer). I also tried to add my item in the HKCR\foobar2000.flac shell registry key but after restarting, foobar clean up my item (protection ?) PPS: Windows 7 x64 Ultimate - Foobar2000
* will apply to all files, so you want .flac. However, if .flac's default points to another class (e.g., foobar2000.flac), then the change must be made in that class and not in .flac. So you need to make the change in foobar2000.flac. It seems strange that foobar2000 would remove that entry, but if it is doing it, then you could try adding it to HKCU\Software\Classes\foobar2000.flac (create the key if it doesn't exist). The reason this might work is that there is a chance that if foobar2000 really is deleting the entry, it'll delete it from HKLM and not HKCU (HKCR is actually just a virtual key that is comprised of the system-wide entries found in HKLM, with the user-specific entries in HKCU overriding any overlaps).
Thank you very much, it works! Maybe you could answer to another question, you or anybody... It's complicate to explain in English so tell me if you don't understand. I wrote a little batch script that extract individual flac songs from a flac album (one file for the entire album) by using "Shntool". Here is the code of "extractflac.bat": Code: @set FLACFILE=%1 @set CUEFILE=%FLACFILE:flac=cue% @set PATH=%FLACFILE:~0,-6%" @md %PATH% c:\windows\shntool split %FLACFILE% -f %CUEFILE% -d %PATH% -t "%%n. %%t" -o flac -m :-/_\_*x?-"' @pause %1 is the path of the file with quotes (e.g. "d:\Music\The Beatles\White Album.flac") and it is send to the script by using the context menu (right-click on the file, "Extract FLAC" option) thanks to you ! Code: HKCU\Software\Classes\foobar2000.flac HKCU\Software\Classes\foobar2000.flac\shell HKCU\Software\Classes\foobar2000.flac\shell\extractflac > Default = Extract FLAC HKCU\Software\Classes\foobar2000.flac\shell\extractflac\command > Default = extractflac.bat "%1" Now, when I highlight more than one flac file and that I select the "Extract FLAC" context menu item, my script is open for each file separately at the same time. So what must I do to have just one script executing each file one after an other ? Is there a value in registry to change or is it a bad batch code ?
Your method of adding something to the context menu is creating a shell "verb" (anything the follows the "[class]\shell\[verb]\..." structure), and shell verbs can ONLY act on one item. There is no way to do what you want with shell verbs. To do what you want, you need a shell extension. You need to program a DLL implementing IContextMenu in COM, in C or C++ (this is an in-process DLL so you have to use proper, moral native code and not that disgusting immoral .NET crap), and register that in [class]\shellex\ContextMenuHandlers.