Создание сервера автоматизации COM в C#

+ для следующего брата. Есть ли эквивалент для предыдущего брата?

Вы можете использовать два селектора ax : ! и ?

Там 2 следующие селекторные функции для сиблинга в обычном CSS:

  • + является непосредственным последующим селектором сиблинга
  • ~ является любым последующим селектором сиблинга

. В обычном CSS нет предыдущего селектора sibling.

Однако в ax CSS послепроцессорной библиотеки есть 2 предыдущие селекторные функции:

  • ? - это предыдущий селектор немедленного (напротив +)
  • ! является любым предыдущим селектором (см. ~)

Рабочий пример:

В следующем примере:

  • .any-subsequent:hover ~ div выбирает любой последующий div
  • .immediate-subsequent:hover + div выбирает немедленный последующий div
  • .any-previous:hover ! div выбирает любой предыдущий div
  • .immediate-previous:hover ? div выбирает непосредственный предыдущий div

div {
  display: inline-block;
  width: 60px;
  height: 100px;
  color: rgb(255, 255, 255);
  background-color: rgb(255, 0, 0);
  text-align: center;
  vertical-align: top;
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.6s ease-out;
}

code {
  display: block;
  margin: 4px;
  font-size: 24px;
  line-height: 24px;
  background-color: rgba(0, 0, 0, 0.5);
}

div:nth-of-type(-n+4) {
  background-color: rgb(0, 0, 255);
}

div:nth-of-type(n+3):nth-of-type(-n+6) {
  opacity: 1;
}

.any-subsequent:hover ~ div,
.immediate-subsequent:hover + div,
.any-previous:hover ! div,
.immediate-previous:hover ? div {
  opacity: 1;
}
<h2>Hover over any of the blocks below</h2>

<div></div>
<div></div>

<div class="immediate-previous">Hover for <code>?</code> selector</div>
<div class="any-previous">Hover for <code>!</code> selector</div>
<div class="any-subsequent">Hover for <code>~</code> selector</div>
<div class="immediate-subsequent">Hover for <code>+</code> selector</div>

<div></div>
<div></div>

<script src="https://rouninmedia.github.io/axe/axe.js"></script>

9
задан Grokys 18 November 2009 в 14:51
поделиться

4 ответа

Вы действительно можете сделать это в .NET (я делал это раньше в качестве доказательства концепции), но немного поработать, чтобы все работало правильно (время жизни процесса, регистрация и т. д.)

Создайте новое приложение Windows. В методе Main вызовите RegistrationServices.RegisterTypeForComClients - это управляемая оболочка вокруг CoRegisterClassObject, которая заботится о фабрике классов за вас. Передайте ему Type управляемого класса ComVisible (тот, который вы действительно хотите создать - .NET автоматически предоставляет фабрику классов) вместе с RegistrationClassContext.LocalServer и RegistrationConnectionType.SingleUse. Теперь у вас есть очень простой исполняемый файл, который можно зарегистрировать как LocalServer32 для активации COM. Вы' Мне все равно придется определить время жизни процесса (реализовать счетчики ссылок для управляемых объектов с помощью конструкторов / финализаторов - когда вы достигнете нуля, вызовите UnregisterTypeForComClients и выйдите) - вы не можете позволить Main завершиться, пока все ваши объекты не будут мертвы.

Регистрация не так уж и плоха: создайте метод с атрибутами ComRegisterFunction, который добавляет ключ LocalServer32 в HKLM \ CLSID (yourclsidhere), значением по умолчанию является путь к вашему exe. Запустите regasm yourexe.exe / codebase / tlb, и все готово.

6
ответ дан 4 December 2019 в 21:50
поделиться

Ваше сообщение запустилось только что, и у меня была та же проблема. Следующая ссылка является абсолютным золотом и говорит Вам все

http://www.andymcm.com/blog/2009/10/managed-dcom-server.html

0
ответ дан 4 December 2019 в 21:50
поделиться

Вы всегда можете предоставить свой класс .NET как классы COM с помощью InteropServices, а затем настроить библиотеку как приложение COM +. Библиотека .NET будет работать вне процесса и размещаться в экземпляре DLLHOST.EXE.

2
ответ дан 4 December 2019 в 21:50
поделиться

Вот статья в MSDN, которая охватывает все аспекты того, как создать COM Localserver в C # (.NET): Ссылка

1
ответ дан 4 December 2019 в 21:50
поделиться
Другие вопросы по тегам:

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