СЦЕНАРИЙ
Я управляю и упорядочиваю много файлов в течение дня, SendTo - самая используемая функция, которую я использую в Windows.
ПРОБЛЕМА
По умолчанию, когда пользователь нажимает элемент/ссылку контекстного меню для отправки файлов, ОС не показывает какой-либо совет/уведомитель, указывающий, что файлы копируются в выбранный пункт назначения.
Я считаю, что это очень неправильная проблема дизайна, потому что для больших файлов это ОК... будет отображаться индикатор прогресса, но если файлы будут небольшими, он не будет показывать индикатор прогресса/визуальный индикатор, поэтому невозможно гарантировать, что файлы скопированы (без ручного усилия), потому что я человек, и я мог щелкнуть вне контекстного меню SendTo по ошибке.
Итак, я хотел бы разработать персональный мини-инструмент, который поможет мне оптимизировать свое время, показывая мне окно уведомлений, где бы вы ни находились на экране, когда я отправляю/копирую файлы с помощью функции SendTo из контекстное меню и только SendTo.
Вопрос
В простых словах я хочу обнаружить операцию копирования/отправки из меню SendTo, чтобы убедиться, что щелчок был сделан правильно в пункте меню (а не вне меню), также предоставляя дополнительную базовую информацию, такую как исходная папка, папка назначения и количество файлов или пути к файлам.
Любые идеи начать разработку этого инструмента в правильном направлении?
Я буду благодарен за пример кода в С# или еще VB.Net, желательно это последнее.
ПОДХОД
Поскольку я не знаю, как начать делать это, я имею в виду, какой может быть самый простой или эффективный способ перехвата этих вызовов SendTo, во-первых, я думал, что подключил CopyFile или CopyFileEx API, но они не предоставляют необходимую мне информацию, потому что эта функция будет вызываться в любой операции копирования, а не только при использовании функции SendTo, поэтому я теряюсь.
Я не уверен, что я должен больше исследовать внутренние вызовы или, возможно, больше узнать о самом контекстном меню windows, вместо того, чтобы возиться с перехватами функций и уродливыми вещами, которых я мог избежать.
Моя основная идея заключается в разработке скрытых WinForms (или службы Windows), которые остаются в фоновом режиме, ожидая, когда я использую функцию SendTo (когда я нажимаю на элемент SendTo), а затем отобразите на экране любой вид визуального индикатора, чтобы убедиться, что я правильно нажал этот пункт меню и, возможно, проинформирую о количестве файлов, которые я перемещаю и где я их перемещаю.
RESEARCH
Вот пример кода, который, по моему мнению, демонстрирует, как создать экземпляр объекта SendTo com, чтобы создать свой собственный?, но написанный на С++, и я не уверен, что этот пример полезен, мое намерение не заменять меню SendTo, но я сохраню эту полезную информацию здесь, она служит для чего-то еще:
Как добавить (включить) стандарт "Отправить в" контекстного меню в расширении пространства имен
KNOWNFOLDERID константы docs дает полезную информацию о папке SendTo снова я не уверен, что это может помочь, возможно, для подхода к мониторингу чтения/доступа?, я просто сохраняю информацию здесь:
GUID: {8983036C-27C0-404B-8F08-102D10DCFD74}
Путь по умолчанию:% APPDATA%\Microsoft\Windows\SendTo
Устаревший путь по умолчанию:% USERPROFILE%\SendTo
В Обработчики расширения оболочки docs есть Обработчик обработчика копирования, который я не знаю, имеет ли он связь с компонентом SendTo COM, и если что могло бы помочь мне каким-то образом, такое же незнание для ссылки IContextMenu:: InvokeCommand, которая, возможно, я могу перехватить ее, чтобы идентифицировать SendTo:
К моменту, когда я чувствую, что летаю слепой.
Недавно я нашел этот управляемый класс "Отправить в" , но снова его пример написан на C/С++ (я думаю, это тот же самый источник раньше), который я вообще не понимаю, и снова я не уверен, что это может мне помочь, потому что я повторяю, что замена SendTo - это не то, что у меня есть (просто потому, что я не знаю, как правильно это сделать, избегая всех возможных рисков, я предпочитаю, чтобы все еще позволял логике Windows копировать/отправлять файлы, я просто хочу обнаружить операцию копирования для получения информации)
Ожидаемые результаты и использование
Шаг 1:
Выберите случайный файл и используйте меню SendTo (на моем языке, на испанском языке, имя команды: Enviar a)
Шаг 2:
Пусть логика приложения .net(работающая в фоновом режиме) перехватит операцию SendTo для получения информации.
(Мне нужна помощь только с этим шагом)
Шаг 3:
Отобразите информацию где-нибудь на экране, чтобы убедиться, что была выполнена операция SendTo, чтобы я правильно нажал элемент SendTo ( My Link strong > ).
(Это всплывающее окно - просто симуляция, я не знаю, как получить всю эту информацию)