Tworzenie elementu menu kontekstowego powłoki systemu Windows, który przyjmuje jako argument pojedynczy plik, jest łatwe. Zobacz to pytanie jako przykład.
Jak jednak utworzyć element menu kontekstowego, który przyjmuje wiele plików jako argumenty? Powiedzmy, dla narzędzia scalania różnic (w moim przypadku P4Merge), chociaż ta sama technika bez wątpienia miałaby zastosowanie również do innych aplikacji.
Zainstalowałem P4Merge, ale nie dodaje on automatycznie pozycji do menu kontekstowego, więc będę musiał to zrobić ręcznie.
Kiedy próbowałem użyć:
"C:\Program Files\Perforce\p4merge.exe" %1 %2
jako wiersz polecenia dostałem błąd:
Błędy: potrzebne są co najmniej dwa pliki. Nie można otworzyć tylko jednego pliku. P4Merge potrzebuje 0, 2 lub 3 plików.
Kiedy próbowałem użyć:
"C:\Program Files\Perforce\p4merge.exe" %0 %1
jako wiersz poleceń otworzył dwie instancje P4Merge, po jednej dla każdego pliku.
Wygląda na to, że prawidłowe nazwy plików są przekazywane do% 0 i% 1, ale dla każdego z nich wykonywana jest inna instancja aplikacji P4Merge.
Obecnie mam narzędzie DiffMerge firmy SourceGear, które ma element w menu kontekstowym powłoki i działa pięknie, ponieważ jestem w stanie wybrać dwa pliki i użyć elementu menu kontekstowego, aby uruchomić na nich różnicę. Próbuję przeszukać rejestr, aby zobaczyć, jakich argumentów używa DiffMerge, ale nie mogłem znaleźć wiersza polecenia DiffMerge zawierającego argumenty.
źródło
Odpowiedzi:
Możesz także spróbować dodać program do menu SendTo.
źródło
Szukając odpowiedzi, wydaje się, że nie ma prostej poprawki i że potrzebne jest rozszerzenie powłoki. Patrząc ponownie na wpisy rejestru dotyczące DiffMerge, wydaje się, że używa rozszerzenia powłoki: DiffMergeShellExtension64.dll. Jeśli P4Merge nie ma takiego rozszerzenia powłoki, wygląda na to, że jedynym sposobem na poprawne działanie w menu kontekstowym Eksploratora Windows byłoby napisanie go osobiście.
Kompletny przewodnik Idiot's Guide to Writing Shell Extensions w Code Project to przydatny przewodnik po pisaniu rozszerzeń powłoki. Część II tej serii dotyczy pisania rozszerzenia obsługującego wiele plików jednocześnie (dokładnie tego, czego potrzebuję).
Ostrzeżenie: Kompletny przewodnik Idiota dotyczący pisania rozszerzeń powłoki wykorzystuje C i COM, ATL (Active Template Library) i MFC (Microsoft Foundation Classes). Więc napisanie rozszerzenia powłoki, jeśli nie znasz tych technologii, będzie długim i potencjalnie trudnym procesem; zdecydowanie nie można tego zrobić w ciągu godziny.
źródło
Możesz to zrobić za pomocą mojego programu uruchamiającego menu kontekstowe (singleinstance) :
źródło
.exe
plików w swoich odpowiedziach bez wyraźnego zaznaczenia, że rozpocznie się automatyczne pobieranie.