Skip to content
ikas edited this page Mar 6, 2022 · 32 revisions

This app can add custom context menu for windows11

The custom menus uses json files and stored in app's localdata folder

Manager UI

Left panel: Menu List

  • add button : add a menu
  • refresh button : refresh menus
  • open folder button : open menu files folder
  • cache button : build and clean cache button

Right Panel: Menu Details

  • save button : save menu
  • delete button : delete menu
  • open file button : open menu config file
  • setting button : set custom menu title

As shown in the picture, it adds a menu: Open the file with Notepad

Variable

 {path}  absolute address of the right-clicked file or folder   
 {name}  file name (version>=1.1.2.0)   
 {parent}  file parent(version>=1.9.0.0)

If the path has spaces
Generally use "{path}"
But if the parameter needs to contain quotation marks, then use \"{path}\"

Other special needs can be tested by yourself

Menu Name

you can modify menu name in manager ui

Menu Icon

use icon from exe or dll

"C:\Program Files\7-Zip\7zFM.exe",0

C:\WINDOWS\System32\SHELL32.dll,196

note: change a folder icon and open desktop.ini(hidden) in the folder to find the index number https://support.microsoft.com/en-us/topic/cannot-change-the-default-folder-icons-in-windows-explorer-db49e15d-d95a-bc68-9947-e3ec296f4514

use icon file

"C:\Users\user\icons\icon.ico"

Extension and Folder match

Match Extensions

# match file extensions
.apk .apkx .mapk

# *  match all
*

Match Folder

check checkbox to match

Multiple Files

Two modes are supported

  • EACH execute [exe] on each path
  • JOIN execute [exe] only once

note:
When [Multiple Files] is turned on, extension matching and folder matching are ignored

Multiple Files EACH Mode

For each file,pass [param] to [exe], same as single file

Multiple Files JOIN Mode

All paths will be connected according to the configuration,then as {path}

Path delimiter

If 2 files are selected: path1.txt path2.txt

delimiter : ,
result path : "path1","path2" 

note: Every path will be surrounded by quotes

Param

When multiple files are selected, the [Param] may be different
so the [Param] can be overwritten here

Typically:

single file : "{path}"
multiple files : {path}

Sample

add files to 7z archive

Exe:
"C:\\Program Files\\7-Zip\\7zG.exe"

Param:
a -ad  "{parent}\{name}.7z"   "{path}"

[Multiple Files] Match Multiple Files:
- JOIN

[Multiple Files] Path Delimiter: (space!!!)
 
[Multiple Files] Param:
a -ad "{parent}\files.7z" {path}

https://github.com/ikas-mc/ContextMenuForWindows11/blob/main/menuSample/15.add%20to%207z.json

about path in Param

First of all, when the path contains spaces,7z requires quoted path

When only one file is selected, By default, the path will not be quoted , We must add quotes manually
Param: "{path}"

When multiple files are selected, quotes are added to each path by default , We don't need to add quotes manually , we must override the [Param]
[Multiple Files] Param: {path}

Menu Cache

cache is used to reduce the slow loading caused by file io
The cache needs to be manually built each time

?: see tip and cache time 🔁:build cache x: clear cache to disable cache

Debug Helper

use customeContextMenuDebug.exe to show param
see json:
https://github.com/ikas-mc/ContextMenuForWindows11/blob/dev-multiple/menuSample/16.debug.json

More Menu sample

https://github.com/ikas-mc/ContextMenuForWindows11/tree/main/menuSample

Menu Config File Sample

{
    "title":"open with  7zFM",
    "exe":"\"C:\\Program Files\\7-Zip\\7zFM.exe\"",
    "param":"\"{path}\"",
    "icon":"\"C:\\Program Files\\7-Zip\\7zFM.exe\",0",
    "acceptExts":".zip .7z .rar .exe .iso",
    "acceptDirectory":false
}

Menu Config Files Folder

C:\Users\yourname\AppData\Local\Packages\{appId}\LocalState\custom_commands   

If you need to back up, just copy all the files here to a safe folder.

Clone this wiki locally