0
我看了看這個頁面:https://msdn.microsoft.com/en-us/windows/uwp/launch-resume/launch-default-app如何從UWP應用中打開Outlook日曆與URL
,似乎我可以啓動幾乎所有的Windows應用程序,但由於某種原因沒有啓動的選項日曆..如何做到這一點?另外,如果我想啓動一個x86程序呢?
我看了看這個頁面:https://msdn.microsoft.com/en-us/windows/uwp/launch-resume/launch-default-app如何從UWP應用中打開Outlook日曆與URL
,似乎我可以啓動幾乎所有的Windows應用程序,但由於某種原因沒有啓動的選項日曆..如何做到這一點?另外,如果我想啓動一個x86程序呢?
但由於某種原因,沒有啓動日曆的選項..怎麼辦?
您也可以通過URL啓動日曆。代碼如下:
await Launcher.LaunchUriAsync(new Uri("outlookcal:"));
你不知道如何啓動的原因是你沒有找到日曆協議 - 「Url:outlookcal」。實際上,您可以通過打開「設置 - >默認應用程序 - >按協議選擇默認應用程序」來找到應用程序協議。
另外,如果我想要的東西推出的x86程序?
對於其他的Win32應用程序,甚至UWP的應用程序,是不是默認的應用程序,他們沒有在默認Url
協議,您可能需要註冊一個協議的應用程序和處理URI激活。然後你可以用類似的方式通過Launcher類來啓動它。更多詳情請參考Handle URI activation。例如,您可以按以下方式註冊Url
以進行WPF項目:
private void InstallProtocol_Click(object sender, RoutedEventArgs e)
{
using (var hkcr = Registry.ClassesRoot)
{
if (hkcr.GetSubKeyNames().Contains(SchemeName.Text))
{
MessageBox.Show(string.Format("Looks like {0} is already installed.", SchemeName.Text));
return;
}
using (var schemeKey = hkcr.CreateSubKey(SchemeName.Text))
{
//[HKEY_CLASSES_ROOT\com.aruntalkstech.wpftarget]
//@="Url:WPF Target Protocol"
//"URL Protocol"=""
//"UseOriginalUrlEncoding"=dword:00000001
schemeKey.SetValue(string.Empty, "Url: WPF Target Protocol");
schemeKey.SetValue("URL Protocol", string.Empty);
schemeKey.SetValue("UseOriginalUrlEncoding", 1, RegistryValueKind.DWord);
//[HKEY_CLASSES_ROOT\com.aruntalkstech.wpf\shell]
using (var shellKey = schemeKey.CreateSubKey("shell"))
{
//[HKEY_CLASSES_ROOT\com.aruntalkstech.wpf\shell\open]
using (var openKey = shellKey.CreateSubKey("open"))
{
//[HKEY_CLASSES_ROOT\com.aruntalkstech.wpf\shell\open\command]
using (var commandKey = openKey.CreateSubKey("command"))
{
//@="C:\\github\\SampleCode\\UniversalAppLaunchingWPFApp\\WPFProtocolHandler\\bin\\Debug\\WPFProtocolHandler.exe \"%1\""
commandKey.SetValue(string.Empty, Assembly.GetExecutingAssembly().Location + " %1");
commandKey.Close();
}
openKey.Close();
}
shellKey.Close();
}
schemeKey.Close();
}
hkcr.Close();
}
MessageBox.Show(string.Format("Custom scheme {0}: installed.", SchemeName.Text));
}