Dodaj element menu do menu kontekstowego systemu windows tylko dla określonego typu pliku

Zainstalowałem aplikację, która ładuje obraz za pomocą menu kontekstowego okna (kliknij prawym przyciskiem myszy na pliku) i na razie działa, ale klucz reg jest włączony

HKEY_CLASSES_ROOT\*

I działa ze wszystkimi plikami.

Chcę, aby element menu w menu kontekstowym był wyświetlany tylko z .pliki jpg.

/ Align = "left" / Jakich kluczy rejestru powinienem użyć? Z góry dzięki.
Author: Sein Kraft, 2010-01-23

2 answers

1) Określ typ pliku (ProgID) dla .pliki jpg

Można to zrobić, sprawdzając domyślną wartość HKEY_CLASSES_ROOT\.jpg. Może to być cokolwiek w oparciu o to, co zainstalowałeś, ale na potrzeby tego przykładu nazwiemy to jpegfile, powszechną wartością domyślną.

2) Ustaw właściwości elementu menu kontekstowego (verb) dla tego typu pliku

Można ustawić pozycje menu kontekstowego dla każdego użytkownika w HKEY_CURRENT_USER\Software\Classes\jpegfile\shell. Ten klucz zawiera listę czasowników dla typu pliku. Istnieje podobny klucz w HKEY_LOCAL_MACHINE\Software\Classes\jpegfile\shell, i są to domyślne ustawienia systemowe dla typu pliku. Możesz też umieścić tam klucz czasownika, ale jeśli ten sam klucz istnieje w HKCU, zostanie on nadpisany, więc pamiętaj.

3) Ustaw wartość polecenia

Minimalna wartość klucza, która musi być ustawiona, aby zadziałał, jest wartością domyślną podklucza command. Musisz to ustawić ze ścieżką do Twojej aplikacji, tak: HKEY_CURRENT_USER\Software\Classes\jpegfile\shell\open_with_myapp\command będzie ustawione na "c:\path\to\myapp.exe" "%1". Teraz menu kontekstowe dla .pliki jpg będą miały element "open_with_myapp", który uruchomi aplikację po kliknięciu i przekaże nazwę pliku wybranego pliku jako parametr. Oczywiście to, jak Twoja aplikacja przetwarza parametry, zależy od ciebie, więc musisz ustawić ciąg parametrów na coś, co aplikacja może przetworzyć.

4) Ustaw inne właściwości czasownika

Wyobrażam sobie, że prawdopodobnie będziesz chciał, aby element menu kontekstowego odczytał coś nieco bardziej przyjaznego niż nazwa klucza. Menu kontekstowe może wyświetlać dowolną etykietę dla Twojego pozycji przez ustawienie domyślnej wartości tego klucza (open_with_myapp).

To twój podstawowy przegląd. Zdecydowanie sprawdź moją odpowiedź na to pytanie dotyczące kojarzenia pliku, który ma podobną odpowiedź:

 70
Author: Factor Mystic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:34

Jest inny klucz w rejestrze, który działa niezależnie od domyślnych programów użytkownika: HKEY_CLASSES_ROOT\SystemFileAssociations. Ponieważ nikt nie wspomniał o tym w tym pytaniu... Nie trzeba sprawdzać ProgID przed dodaniem pozycji menu kontekstowego. Przykład:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\SystemFileAssociations\.mkv\shell\subtitle]
@="Search subtitles..."

[HKEY_CLASSES_ROOT\SystemFileAssociations\.mkv\shell\subtitle\command]
@="\"D:\\Tools\\subsearch.exe\" \"%1\""

Odniesienie: https://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx#reg_verbs

 5
Author: andromeda947,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-23 19:13:12