如何在Windows设置的文件关联页面中关注特定文件类型

时间:2016-05-07 13:08:53

标签: delphi winapi windows-10

我正在尝试将特定文件类型(例如.doc)与我的应用程序相关联。我目前正在使用IApplicationActivationManager执行此操作,因为IApplicationAssociationRegistration::SetAppAsDefault方法不再适用于Win 8及更高版本,因此editing the registry due to the UserChoice\Hash value

当用户点击我的应用设置然后选择“设为默认值”时,将触发此关联。到目前为止,IApplicationActivationManager对我有用,因为它模仿Windows 10如何通过“设置 - >系统 - >默认应用程序 - >选择默认应用程序来设置应用程序的默认文件类型文件类型“当用户选择这样做时。

打开“ ...->按文件类型选择默认应用”时,是否有办法以编程方式关注文件类型?或者更好的是,以编程方式启动“ ...->按文件类型选择默认应用 - >为特定文件类型选择应用”对话框?

Screenshot of the 'Choose default apps by file type' Windows Settings pane

Screenshot of the 'Choose default apps by file type' Windows Settings pane

示例代码:

procedure TForm1.Btn2Click(Sender: TObject);
const
  OPENSETTINGS = 'Windows.ImmersiveControlPanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel';
  PAGESETTINGSBYFILETYPE = 'page=SettingsPageAppsDefaults&target=SettingsPageAppsDefaultsFileExtensionView';

var
  pAAR: IApplicationActivationManager;
  pid: PDWORD;
  Res: HRESULT;

begin
  Res := CoCreateInstance(CLSID_ApplicationActivationManager, nil,
    CLSCTX_LOCAL_SERVER, IApplicationActivationManager, pAAR);

  if Succeeded(FRes) 
    pAAR.ActivateApplication(OPENSETTINGS, PAGESETTINGSBYFILETYPE, AO_NONE, pid)
  else
    ShowMessage('Failed!');
end;

例如,可以使用命令

  

页= SettingsPageAppsDefaults&安培;目标= SettingsPageAppsDefaultsFileExtensionView

扩展为滚动并选择特定的文件类型,如

  

页= SettingsPageAppsDefaults&安培;目标= SettingsPageAppsDefaultsFileExtensionView&安培;文件类型= .DOC'

?或者其他一些解决方案来完成同样的事情?

0 个答案:

没有答案