Настроить контекстное меню Windows 10 Проводника - PullRequest
0 голосов
/ 13 июля 2020

Неужели никто не может помочь? Я часто публикую sh отдельные файлы с моего тестового веб-сайта на действующий, и хотел бы иметь возможность щелкнуть файл правой кнопкой мыши (или использовать сочетание клавиш; я не привередлив) и выбрать настраиваемое меню вариант, говорящий что-то вроде «Копировать в производственную папку Owly».

введите описание изображения здесь

Что я уже знаю:

  1. Есть способ отредактировать реестр, чтобы добавить команды ПЕРЕМЕСТИТЬ В и КОПИРОВАТЬ В контекстное меню правой кнопки мыши. Это не решит мою проблему, так как мне все равно придется выбирать, в какую папку перемещать / копировать. Windows папка.

Я умею писать командный файл DOS (я такой старый), а также писать. NET программы - я просто не знаю, как запустить программа и как определить текущий выбранный файл в проводнике. Я не знаю PowerShell и предпочел бы не учиться, но подозреваю, что если есть ответ, он включает в себя это. Если так, пусть будет так.

Кстати, я использую Windows 10.

Есть идеи у кого-нибудь?

Ответы [ 2 ]

0 голосов
/ 12 августа 2020

Мой английский sh не очень хорош, но я постараюсь вам помочь. Вы можете напрямую добавить свое приложение в реестр:

HKEY_CLASSES_ ROOT* \ shell

Затем создайте ключ:

CopyFiles

И еще ключ внутри:

команда

Результат будет выглядеть так:

HKEY_CLASSES_ ROOT* \ shell \ CopyFiles \ command

В командной клавише (По умолчанию) добавьте путь к вашему приложению, как он указывает на ваше приложение:

"c: \ folder \ anotherfolder \ VSProjects \ CopySelectedFileArg.exe" "% 1"

При щелчке правой кнопкой мыши любой тип файла вы получите возможность напрямую открыть в своем приложении. Допустим, у вас есть приложение формы, в файле program.cs вы добавляете:

static void Main(string[] args)
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    string fileName = null;
 

   
        fileName = args[0];
       


        Application.Run(new Form1(fileName )); 
}

и в форме1:

string filePath;
string DesPath =@"d:\a\b\";
        public Form1(string fileName)
            : this() 
        {
            filePath= fileName;
string TheFileName=Path.GetFileName(filePath); 
FileInfo fi = new FileInfo(filePath);
           
      if (Directory.Exists(DesPath))
            {
                
             fi.CopyTo(DesPath + TheFileName, true);
           
              }
        }

У вас не будет ошибки при копировании или несколько файлов, просто убедитесь, что ваш целевой каталог существует. У вас может быть таймер, который закроет приложение, или вы просто сами нажмете кнопку закрытия.

0 голосов
/ 14 июля 2020

У меня это должно работать для папки, но не для файла. Этапы следующие:

  1. Создайте проект консольного приложения в Visual Studio (или любой другой среде разработки!).
  2. Напишите код для копирования файла (или файлов папки).
  3. Создайте этот проект.
  4. Создайте для него ярлык в папке Отправить в .

При щелчке правой кнопкой мыши по папке теперь вы можете отправить это в свое приложение, которое должно скопировать содержимое папки. Некоторые примечания к вышеизложенному следуют ...

При создании вашего приложения аргумент args [0] содержит путь к файлу или папке, по которой вы только что щелкнули правой кнопкой мыши. Таким образом, вы можете получить это:

static void Main(string[] args)
    {
        // get path of file to copy
        String sourceFolderPath = args[0]; 

Простой способ go в папку Send To - ввести это в адресную строку проводника:

enter image description here

When you right-click on a file or folder, you should see something like this:

введите описание изображения здесь

Однако, если вы напишете в своей программе, чтобы скопировать единственный файл, который вы только что щелкнули правой кнопкой мыши, вы получите сообщение об ошибке, говорящее, что он используется. Предположительно "отправка файла" блокирует его. Я не мог найти никакого пути обойти это, поэтому я изменил свою программу, чтобы я мог щелкнуть правой кнопкой мыши папку, а не файл.

Кто-нибудь еще может решить эту последнюю проблему?

...