Mouse Right Menu (마우스 오른쪽 컨텍스트 메뉴)

Explorer에서 가장 자주 사용하는 기능중 하나는 특정 dir나 file에 대한 operation이다. 이런 operation들을 "마우스 오른쪽 컨텍스트 메뉴" (Mouse Right Button Context Menu)로 처리할수 있는데, 이에 대한 방법을 정리해보고자 한다. 

여러가지 방법을 try한 이후에 최종적으로 안착한 방법은 다음과 같다.

  1. Registry로 오른쪽 마우스 메뉴에 Command 등록 
  2. Command는 특정 위치의 Batch파일을 수행시키도록 만듦.  //이러한 방법은 cmd창을 한번더 실행시키는 단점이 있음. 
  3. Batch 파일안에서 필요한 명령을 넣어서 원하는 동작을 하게 함.
    110. Explorer Mouse Right Menu_  SHELL.cmd

//_SHELL.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\_SHELL]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\_SHELL\Command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,63,00,6d,00,\
  64,00,2e,00,65,00,78,00,65,00,20,00,2f,00,43,00,20,00,44,00,3a,00,5c,00,4f,\
  00,6e,00,65,00,44,00,72,00,69,00,76,00,65,00,5c,00,5f,00,4d,00,79,00,53,00,\
  65,00,74,00,74,00,69,00,6e,00,67,00,5c,00,53,00,65,00,74,00,74,00,69,00,6e,\
  00,67,00,5f,00,43,00,79,00,67,00,77,00,69,00,6e,00,5c,00,53,00,48,00,45,00,\
  4c,00,4c,00,2e,00,63,00,6d,00,64,00,20,00,25,00,31,00,20,00,25,00,32,00,20,\
  00,25,00,33,00,00,00

위 registry 의 command는 아래와 같이 regedit으로 확인해볼수 있다.

그러나 편의 상 온라인 Hex to Ascii로도 가능하다. :  https://www.rapidtables.com/convert/number/hex-to-ascii.html

%SystemRoot%\system32\cmd.exe /C D:\OneDrive\_MySetting\Setting_Cygwin\SHELL.cmd %1 %2 %3


위의 명령으로 _SHELL.BAT을 실행키므로, batch파일안에 아래와 같이 원하는 command를 넣어 실행하면 된다.

//_SHELL.bat
@echo off
@echo ########  Shell Env Setting  #########
set P_CYGWIN=%DIR_PROGRAM%\_Shell\_Cygwin
set P_CONEMU=%DIR_PROGRAM%\_Shell\_ConEmu

::wait path change
@echo "[%1]"
@cd %1 & sleep 1s

:::::::: CONEMU
:::: stand alone from default cmd
set CHERE_INVOKING=1 & start %P_CONEMU%\conemu64.exe -runlist %P_CYGWIN%\bin\bash.exe --login -i -new_console:p:C:"%P_CYGWIN%\Cygwin.ico"

:::::::: RXVT
:::: not working
::%P_CYGWIN%\bin\urxvt.exe -rv -sr -sw -sl 9999 -fg black -bg white -fb "Lucida Sans Typewriter" -fn 8x16 -ls -g 100X60 -e /usr/bin/bash --login -i

:::::::: MINTTY
:::: working
:: %P_CYGWIN%\bin\mintty.exe /bin/sh.exe -c 'cd $(P_CYGWIN -u "%1"); bash --login -i'

:::: end of script
exit