Что делает регистрацию DLL, делают?

Отключенные элементы «едят» клики в некоторых браузерах - они не отвечают на них и не позволяют захватить их обработчиками событий в любом элементе или в любом из его контейнеров.

IMHO - самый простой, Самый чистый способ «исправить» это (если вам действительно нужно зафиксировать клики на отключенных элементах, таких как OP), просто добавьте следующий CSS на вашу страницу:

input[disabled] {pointer-events:none}

Это сделает любой клики на отключенном входе попадают в родительский элемент, где вы можете их захватить в обычном режиме. (Если у вас есть несколько отключенных входов, вы можете поместить их в отдельный контейнер самостоятельно, если они еще не выложены таким образом - дополнительный или

, скажем - просто сделать это


Недостатком является то, что этот трюк, к сожалению, не будет работать для старых браузеров, которые не поддерживают свойство CSS pointer-events. Он должен работать от IE 11, FF v3.6, Chrome v4): caniuse.com/#search=pointer-events

Если вам нужно поддерживать старые браузеры, Вам нужно будет использовать один из других ответов!

60
задан gbjbaanb 6 March 2009 в 23:39
поделиться

3 ответа

Когда DLL регистрируется, DllRegisterServer, точка входа метода в Вашем DLL вызывается. Точно так же DllUnregisterServer вызывается, когда DLL не зарегистрирован.

, Как описано в [1 110] эта статья MSDN:

Дает внутрипроцессорному серверу команду создавать свои ключи реестра для всех классов, поддерживаемых в этом модуле сервера. Если эта функция перестала работать, состояние реестра для всех его классов неопределенно.

Для COM DLL, необходимо будет реализовать собственное DllRegisterServer и DllUnregisterServer методы точки входа, которые делают регистрацию/нерегистрацию как соответствующую. Пример кода для DllRegisterServer может быть найден здесь .

конечный результат регистрации DLL состоит в том, что все CLSIDs для компонентов в DLL регистрируются под HKEY_CLASSES_ROOT\CLSID. Это позволяет CoCreateInstance находить корректный сервер при инстанцировании COM-объектов от другого DLL или приложения.

DllUnregisterServer сделает реверс и удалит все CLSIDs из реестра, которые были помещены там DllRegisterServer.

более общая информация приблизительно DllRegisterServer могут быть найдены здесь .

44
ответ дан CJ7 7 November 2019 в 14:22
поделиться

Что обычно упоминается, как регистрация DLL состоит в том, когда она реализует COM-объект. regsvr32 гарантирует, что экземпляр объекта может быть создан. Когда, например, VBScript использует Новый или CreateObject (), регистрация гарантирует, что COM знает, какой DLL загрузить для создания нового экземпляра, или по имени или CLSID.

См. "объяснение неспециалиста" для (очень) краткого обзора.

6
ответ дан Pontus Gagge 7 November 2019 в 14:22
поделиться

Просто посмотрите исходный код regsvr32.exe

1
ответ дан 7 November 2019 в 14:22
поделиться
Другие вопросы по тегам:

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