C # - новый Shell32 () бросить исключение? - PullRequest
0 голосов
/ 09 января 2019

Мне нужно использовать Shell32 в моем приложении C # для создания файла lnk.

Я добавил shell32.dll к своим ссылкам и попытался скомпилировать одну строку кода:

Shell32.Shell shell = new Shell32.Shell();

и я получил InvalidCastException!

код ошибки: 'HRESULT: 0x80004002 (E_NOINTERFACE)).'

Как мне использовать Shell32.Shell?

1 Ответ

0 голосов
/ 09 января 2019

Спасибо, я нашел способ с вашими комментариями. Мне просто нужно использовать это как dynamic.

static readonly Guid CLSID_Shell = Guid.Parse("13709620-C279-11CE-A49E-444553540000");
dynamic shell = Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_Shell));

Кроме того, если я добавлю STAThreadAttribute к своему методу Main, он будет работать без проблем (кредиты перейдут на @ Matthew Watson )

...