Passe o alvo do clique com o botão direito para o aplicativo sensível ao contexto no menu do botão direito

Passe o alvo do clique com o botão direito para o aplicativo sensível ao contexto no menu do botão direito

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:

  1. Crie uma nova chave abaixo da shellchave que você está adicionando.
  2. 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.
  3. Adicionar uma chavesobo item que você criou chamadocommand
  4. 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 Directorychave.

informação relacionada