Бок о бок COM Interop с C# и VBA

я добавляю эту функцию так, чтобы я видел использование диска легко:

function df {
    $colItems = Get-wmiObject -class "Win32_LogicalDisk" -namespace "root\CIMV2" `
    -computername localhost

    foreach ($objItem in $colItems) {
        write $objItem.DeviceID $objItem.Description $objItem.FileSystem `
            ($objItem.Size / 1GB).ToString("f3") ($objItem.FreeSpace / 1GB).ToString("f3")

    }
}
7
задан tordal 14 December 2009 в 20:18
поделиться

3 ответа

Вам не нужно владеть EXE на использование SXS, SXS является еще одним словом для контекста активации . Если вы сможете импортировать соответствующие звонки Win32 на VBA (и вы можете), вы можете использовать API API активации для загрузки файла манифеста.

Подробнее на эту тему и некоторые примеры можно найти здесь .

3
ответ дан 6 December 2019 в 12:51
поделиться

Библиотеки C # не являются обычными библиотеками DLL. Они больше похожи на библиотеки COM, которые необходимо зарегистрировать (как элементы управления ActiveX) перед использованием; особенно при вызове из кода, отличного от .NET.

(Если, конечно, ничего не изменилось ...)

0
ответ дан 6 December 2019 в 12:51
поделиться

Проблема в том, что для использования SxS вам необходимо иметь исполняемый файл, чтобы настроить конфигурацию для загрузки сборки SxS. Вы не являетесь «владельцем» Access, и хотя вы могли бы добавить правильную конфигурацию, чтобы заставить ее загружать ваш .NET COM-материал без регистрации, это не было бы «хорошим гражданином».

Если у вас возникнут сложности с использованием шимминга, вы можете настроить неуправляемую DLL (или взломанную библиотеку классов C # с dllexport, см., Например, this ) с экспортом, который загрузит платформу .NET. , создайте экземпляр управляемого типа COMVisible DispInterface и верните его (метод должен возвращать IDispatch). Затем напишите объявление VBA в свою функцию экспорта DLL (объявленную как возвращающий объект). Если это не имеет смысла, вероятно, вам не стоит пробовать ... :) Я делал это раньше в похожей ситуации,

1
ответ дан 6 December 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: