
Quero criar uma opção de menu de contexto com o botão direito do mouse no Windows 7 que seja sensível ao contexto e possa passar o nome do arquivo/pasta específico para um script de shell.
Eu sei que isso deve ser possível - por exemplo, se você tiver um arquivo 7zip, clique com o botão direito nele e diga "Extrair aqui" e de alguma forma o destino (o arquivo .7z) será passado para o programa 7zip.
Em particular, eu tenho um script que pega um arquivo .c e o coloca dentro de uma listagem LaTeX e executa o pdflatex para criar arquivos bem formatados para leitura. No entanto, preciso especificar o arquivo como um argumento de linha de comando. O que eu gostaria de fazer é clicar com o botão direito em um arquivo e executar esse script automaticamente, passando o caminho do alvo do clique com o botão direito para o argumento da linha de comando automaticamente.
Responder1
Bem-vindo ao Superusuário!
Isso exigirá a edição do registro e depende se você deseja adicionar este item para todos os arquivos, apenas arquivos de uma extensão específica, pastas ou ambos.
Abra seu editor de registro e navegue até HKEY_CLASSES_ROOT
. Você verá várias extensões de arquivo aqui - é isso que controla o menu de contexto.
Adicionar um manipulador é o mesmo processo, independentemente de onde você está anexando esse item de menu, apenas importa onde você o colocou no registro.
O processo é como se segue:
- Crie uma nova chave abaixo da
shell
chave que você está adicionando. - se você quiser que este item de menu tenha um ícone, adicione uma string nomeada
Icon
à chave que você acabou de criar, com um caminho para o ícone como valor. - Adicionar uma chavesobo item que você criou chamado
command
- Modifique a entrada (Padrão) sob esta chave para apontar para o script que você deseja abrir, adicionando um
"%1"
local onde o nome do arquivo que está sendo passado para o programa deve ir em sua linha de comando.
Quanto a onde esse novo item de menu deve ir? Se você quiser que isso apareça...
- para todos os arquivos de uma determinada extensão, coloque-os na chave de extensão correspondente (você pode criar uma se ela não existir).
- para todos os arquivos em todos os lugares, coloque-os sob a
*
chave - para todos os diretórios, coloque-o sob a
Directory
chave.