2012-11-26 9 views
12

Próbuję zarejestrować moją aplikację, która będzie obsługiwać otwieranie linków, e, g, http://stackoverflow.com. Muszę to zrobić jawnie dla Windows 8, mam pracę we wcześniejszych wersjach systemu Windows. Według MSDN zmieniło się to w Win8.Rejestracja procedury obsługi protokołu w systemie Windows 8

Przejrzałem stronę Domyślne programy na stronie MSDN (msdn.microsoft.com/en-us/library/cc144154.aspx) w witrynie MSDN. Stanowi świetny przewodnik po obsłudze typów plików, ale zawiera szczegółowe informacje dotyczące protokołów. Registering an Application to a URL Protocol przechodzi tylko przez etapy związane z konfigurowaniem nowego protokołu, ale nie ma sposobu prawidłowego dodania nowego programu obsługi do istniejącego protokołu.

Próbowałem również ustawienia rejestru określone w innych postów SO.

Jeszcze jedno - aplikacja nie jest aplikacją Metro/Windows Store, więc dodanie wpisu do manifestu nie będzie dla mnie skuteczne.

Odpowiedz

-4

LaunchUriAsync (URI)

Uruchamia domyślną aplikację związaną z nazwą schematu URI dla określonego URI. Możesz zezwolić użytkownikowi na określenie w tym przypadku.

http://msdn.microsoft.com/library/windows/apps/Hh701476

// Create the URI to launch from a string. 
    var uri = new Uri(uriToLaunch); 

    // Calulcate the position for the Open With dialog. 
    // An alternative to using the point is to set the rect of the UI element that triggered the launch. 
    Point openWithPosition = GetOpenWithPosition(LaunchUriOpenWithButton); 

    // Next, configure the Open With dialog. 
    // Here is where you choose the program. 
    var options = new Windows.System.LauncherOptions(); 
    options.DisplayApplicationPicker = true; 
    options.UI.InvocationPoint = openWithPosition; 
    options.UI.PreferredPlacement = Windows.UI.Popups.Placement.Below; 

    // Launch the URI. 
    bool success = await Windows.System.Launcher.LaunchUriAsync(uri, options); 
    if (success) 
    { 
     // URI launched: uri.AbsoluteUri 
    } 
    else 
    { 
     // URI launch failed. uri.AbsoluteUri 

    } 
+5

ten szczegóły, jak uruchomić za pośrednictwem URI. Próbuję zarejestrować aplikację, która zostanie uruchomiona, gdy inna aplikacja uruchomi taki URI. – Josh

11

Byłaś na dobrej drodze ze strony internetowej Programy domyślne - w rzeczywistości, to moje odniesienie do tego postu.

Poniższa dostosowuje ich przykładem:

Po pierwsze, potrzebny jest ProgID w HKLM\SOFTWARE\Classes dyktuje jak obsługiwać żadnych danych nadane mu (twój może już istnieć):

HKLM\SOFTWARE\Classes 
    MyApp.ProtocolHandler //this is the ProgID, subkeys are its properties 
     (Default) = My Protocol //name of any type passed to this 
     DefaultIcon 
      (Default) = %ProgramFiles%\MyApp\MyApp.exe, 0 //for example 
     shell 
      open 
       command 
       (Default) = %ProgramFiles%\MyApp\MyApp.exe %1 //for example 

Następnie wypełnić rejestr z DefaultProgram informacji wewnątrz Capabilities kluczowe:

HKLM\SOFTWARE\MyApp 
    Capabilities 
     ApplicationDescription 
      URLAssociations 
       myprotocol = MyApp.ProtocolHandler //Associated with your ProgID 

Wreszcie zarejestrować możliwości danej aplikacji w ith DefaultPrograms:

HKLM\SOFTWARE 
     RegisteredApplications 
     MyApplication = HKLM\SOFTWARE\MyApp\Capabilities 

Teraz "myprotocol:" linki powinny wyzwalać %ProgramFiles%\MyApp\MyApp.exe %1.

+0

im bardzo nowe dla tego pojęcia. czy możesz mi powiedzieć, jak uruchomić powyższy kod ?? – jammy

+0

To nie jest kod. Musisz przeczytać informacje na temat uzyskiwania dostępu do rejestru systemu Windows. Fragmenty kodu są kluczami i wartościami w rejestrze. –

+0

Jeżeli nie jesteś pewien, czy protokół jest określona, ​​trzeba jeszcze dodać to tak: '[HKEY_CLASSES_ROOT \ myprotocol] (Default) = "URL: myprotocol" "URL Protocol"= ""' – Daniel

3

uwaga Side ponieważ jest to top znaleźć odpowiedź podczas googlowania tego rodzaju problem: Upewnij się, że ścieżka w polecenia powłoki otwarty jest właściwa ścieżkado aplikacji. Spędziłem cały dzień na debugowaniu problemu, który wydawał się mieć wpływ tylko na Chrome i Edge na Windows 10. Nigdy nie uruchomił procedury obsługi protokołu podczas Firefoksa. W czym problem? Ścieżka do pliku .bat używana mieszana \ i/ukośniki. Używanie tylko prawidłowych \ slasów w ścieżce wykonanej Edge & Chrome nagle może odebrać żądanie.

+0

Dzięki! Ogólnie rzecz biorąc, takie rzeczy powinny być zapisane do komentarzy. – Arithmomaniac

+0

Powinno to być komentarz do zaakceptowanej odpowiedzi, ponieważ nie jest to odpowiedź sama. – MrTux

Powiązane problemy