我正在尝试将特定文件类型(例如.doc)与我的应用程序相关联。我目前正在使用IApplicationActivationManager
执行此操作,因为IApplicationAssociationRegistration::SetAppAsDefault
方法不再适用于Win 8及更高版本,因此editing the registry due to the UserChoice\Hash
value。
当用户点击我的应用设置然后选择“设为默认值”时,将触发此关联。到目前为止,IApplicationActivationManager
对我有用,因为它模仿Windows 10如何通过“设置 - >系统 - >默认应用程序 - >选择默认应用程序来设置应用程序的默认文件类型文件类型“当用户选择这样做时。
打开“ ...->按文件类型选择默认应用”时,是否有办法以编程方式关注文件类型?或者更好的是,以编程方式启动“ ...->按文件类型选择默认应用 - >为特定文件类型选择应用”对话框?
示例代码:
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'
?或者其他一些解决方案来完成同样的事情?