폴더의 상황에 맞는 메뉴에 항목을 어떻게 추가합니까?


8

실제 폴더를 클릭 할 때 컨텍스트 메뉴를 추가하는 방법을 알고 있습니다.

[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]

그러나 폴더 에서 아무것도 클릭하지 않는 것은 어떻습니까?

바탕 화면에 새 폴더를 만드는 것처럼 두 번 클릭하여 폴더를 입력 한 다음 아무 것도 마우스 오른쪽 버튼으로 클릭하면 (폴더가 비어 있음) 이제 상황에 맞는 상황에 맞는 메뉴가 표시되기를 원합니다.


난 당신이 원하는 키를 생각HKEY_CLASSES_ROOT\Directory\Background
앤드류 램버트

1
고맙습니다 @ 놀라워 서 정말 가깝습니다 ... 실제로 : [HKEY_CLASSES_ROOT\Directory\Background\shell\commandNameHere]
xero

5
해결 여기에 관심이 윈도우 컨텍스트 메뉴에이 기능을 추가 할 수있는 .reg 파일의 누군가를 위해 : Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Shell] @="none"`` [HKEY_CLASSES_ROOT\Directory\shell\gitBashHere] [HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere] "Icon"="C:\\icons\\git-gui.ico" "MUIVerb"="git bash here" "Position"="bottom"``[HKEY_CLASSES_ROOT\Directory\shell\gitBashHere\command] [HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere\command] @="C:\\Program Files\\Console2\\Console.exe -d %v"
xero

2
자신의 질문에 대답하는 것이 허용되고 권장됩니다. 문제를 해결 한 경우 답변을 게시 하고 수락하십시오.
Dennis

답변:


10

관심있는 사람을 .reg위해이 기능을 Windows 컨텍스트 메뉴에 추가 하는 파일은 다음과 같습니다.

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Shell]
@="none"
[HKEY_CLASSES_ROOT\Directory\shell\gitBashHere]
[HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere]
"Icon"="C:\\icons\\git-gui.ico"
"MUIVerb"="git bash here"
"Position"="bottom" 
[HKEY_CLASSES_ROOT\Directory\shell\gitBashHere\command] 
[HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere\command]
@="C:\\Program Files\\Console2\\Console.exe -d %v"

( xero의 의견 에서 따옴 )

아이콘이있는 "git bash here"라는 컨텍스트 메뉴에 명령이 추가되어 콘솔이 열립니다.

이 명령은 다음 두 가지 모두에 추가됩니다.

  • HKEY_CLASSES_ROOT\Directory\shell, 폴더를 마우스 오른쪽 버튼으로 클릭하면 상황에 맞는 메뉴
  • HKEY_CLASSES_ROOT\Directory\background, 폴더에있는 동안 "배경"빈 공간을 마우스 오른쪽 버튼으로 클릭하면 상황에 맞는 메뉴

2
기본 동작 ( '@ =')에 대해 "none"값을 알고 있어야합니다.이 'none'이 없으면 Windows는 추가 된 동작 중 하나를 기본값으로 취급하므로 디렉토리를 두 ​​번 클릭해도 더 이상 디렉토리가 열리지 않지만 동작이 트리거됩니다. -Windows를 거의 사용할 수 없게 만듭니다. -> '없음'을 기본 동작으로 설정하면 Windows 기본 동작을 변경하지 않고 컨텍스트 메뉴 항목을 추가 할 수 있습니다.

0
void WriteContextMenu(LPSTR key, LPSTR value) {

HKEY hkey=0; DWORD disp;

if(RegCreateKeyEx(HKEY_CLASSES_ROOT, key, 0, NULL, REP_OPTION_NON_VOLATILE, KEY_WRITE,NULL, &hkey, &disp)!=ERROR_SUCCESS) 

{

     if(RegOpenKey(HKEY_CLASSES_ROOT,key,&hkey)!=ERROR_SUCCESS)
    {   

      cout<<"Unable to open Registry"<<key;

        }

}if(RegSetValueEx(hkey,TEXT(""),0,REG_SZ,(LPBYTE)value, strlen(value)*sizeof(char))!=ERROR_SUCCESS)

{

   RegCloseKey(hkey);

       cout<<"Unable to set Registry Value ";

} else{

   cout<<value<<" value has set"<<endl;
}
}int main(){LPSTR key="Folder\\shell\\Testing_App"; 

 LPSTR valueKey="Menu_Title";

 LPSTR Subkey="Folder\\shell\\Testing_App\\command";


/*Here put the path or action you want to perform like you want to
    open cmd  on your context menu so the value id */

    LPSTR valueSubKey="cmd.exe";

    WriteContextMenu(key, ValueKey); 
    WriteContextMenu(Subkey, ValueSubKey);

return 0;}

이렇게하면 모든 폴더에 컨텍스트 메뉴가 표시됩니다.이 코드를 컴파일 할 때 관리 권한이 있는지 확인하십시오.이 코드가 도움이되기를 바랍니다.
Kashif Meo

1
코드의 기능을 조금 더 설명하기 위해 답변을 편집 할 수 있습니까?
Burgi

이것이 질문에 대한 답변이 될 수 있지만, 그 이유에 대한 설명을 제공 할 수 있다면 더 나은 답변이 될 것 입니다.
DavidPostill

실제로이 코드는 상황에 맞는 메뉴의 새 키를 만들뿐입니다. 키와 하위 키도 각각 해당 값입니다. 이 코드가 컴파일되고 모든 폴더에서 실행되면 해당 컨텍스트 메뉴가 표시됩니다.
Kashif Meo

그러나 질문 req가 변경되었다고 생각합니다. 그에게 도움이 될 수 있지만 정확한 해결책은 아닙니다 ..
Kashif Meo

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.