Как добавить элементы в оболочку Windows (щелчок правой кнопкой мыши)? - PullRequest
1 голос
/ 11 января 2010

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

Может ли кто-нибудь указать мне правильное направление? Я также должен убедиться, что если кто-то захочет удалить программу в любой момент, то модификация оболочки также чисто исключена.

Приложение будет работать под управлением Windows XP, Windows Vista и Windows 7. Насколько отличаются эти ОС для решения моей дилеммы с оболочкой?

Ответы [ 3 ]

4 голосов
/ 11 января 2010

Это расширение оболочки. Вы пометили этот вопрос тегом C #; Вы должны знать, что написание расширений оболочки на управляемом языке настоятельно не рекомендуется :

К сожалению, неуправляемый C ++ действительно единственный путь сюда.

Написание внутрипроцессных расширений оболочки в управляемом коде на самом деле очень опасная вещь, чтобы сделать, потому что это имеет эффект от инъекций вашего управляемого код (и .NET Framework) в каждое приложение на машине, которая имеет диалог открытия файла.

Проблемы возникают потому, что только один версия .NET Framework может быть загружен в процесс в любой момент времени (другие общие компоненты, такие как Java и msxml имеют одинаковое свойство и таким же образом ограничение).

Если вы напишите расширение вашей оболочки используя 2.0 .NET Framework и приложение построено с использованием 1.1 .NET Framework использует диалог открытия файла, Ваше расширение оболочки не удастся, потому что он не может работать на более ранней версии. Все может стать еще хуже, если ваш shell-extension удается загрузить в процессе перед другим управляемый приложениями код: ваш расширение может заставить существующий приложение на другое время выполнения версия, чем та, которую он ожидал и вызвать его сбой.

Из-за этих проблем мы решительно рекомендую не использовать какие-либо время выполнения одного экземпляра на процесс или библиотека (например, .NET Framework, Java или MSXML) в оболочке в процессе расширение.

Тем не менее, люди сделали это.

Вот руководство по созданию расширений оболочки с использованием C ++ .

1 голос
/ 11 января 2010

Вы можете добавить свое приложение в папку SendTo.

0 голосов
/ 11 января 2010

А как насчет автономной программы, использующей SendTo?

Установите исполняемый файл в «Program Files \ mycompany \ myprogram» и ярлык для исполняемого файла в папку SendTo. Затем, когда пользователь щелкает правой кнопкой мыши файл, выбирает SendTo, а затем выбирает вашу программу, ваш exe-файл будет выполняться Windows, и полный путь к имени файла будет передан через argv [1]. Если они выберут n файлов, они будут в argv [1] .. argv [n].

Если вы хотите, чтобы ваша программа была невидимой, не делайте форму по умолчанию видимой. При желании вы можете поместить значок в трее, чтобы пользователь мог дважды щелкнуть по нему, чтобы увидеть процесс загрузки. Когда загрузка argv [1] будет завершена, обработайте argv [2] ... argv [n], если они существуют, и завершите работу. Чтобы полностью удалить программу, удалите вашу программу и ярлык из папки SendTo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...