Я хочу создать виртуальный принтер OPOS Service Object (SO) для приложения POS для захвата квитанций о покупках. Если бы кто-нибудь мог посоветовать шаги по созданию объекта службы, мы были бы очень признательны.
Как создать виртуальный принтер OPOS Service Object - С#
Ответы (1)
В целом, объем информации, необходимой для ответа на этот вопрос, настолько велик, что трудно ответить коротко.
Поэтому здесь представлены в основном ссылки на соответствующую информацию.
Пожалуйста, используйте их в качестве справочной информации для обучения и работы.
У меня есть независимое от устройства и простое вводное описание на моем GitHub.
kunif/OposInternals
В остальном это не C# и не POSPrinter, но на GitHub есть скелет MSR SO от ATL VC++.
Ричард Чемберс/atl_msr_so
Вот атрибуты, используемые в отношении.
Класс ComVisibleAttribute
Класс GuidAttribute
Класс InterfaceTypeAttribute
Класс ComRegisterFunctionAttribute
Класс ComUnregisterFunctionAttribute
Это оглавление статьи с комментариями, включая лежащий в ее основе механизм.
Взаимодействие (Руководство по программированию на C#)
Расширенная совместимость с COM
Добавлено в ответ на комментарии:
- What is the definition of that property defines in the OPOS PosPrinter internals and OPOS internals ENUM?
From the name, I can not find what is the meaning of that?- The following part is based on the property name and index value definitions described in the include file(OPOSyyyy.hi) for Service Objects created in C ++, which is included in the CCO (Common Control Objects).
- Общее свойство устройства: OPOS_Internals.PIDX_pppp (имя свойства в pppp)
- Свойство устройства: OPOSxxxxInternals.PIDXyyyy_pppp (имя класса устройства OPOS в xxxx, аббревиатура имени класса устройства в yyyy, имя свойства в pppp)
Для VirtualPrinter, а не для PhysicalPrinter, какие функции, определенные в этом классе, должны быть реализованы как важные?
В случае мы обрабатываем только команды печати виртуального принтера.- It depends not on the virtual printer factor, but on what method property event the application is using.
- Если функция, используемая вашим приложением, не поддерживается вашим виртуальным принтером, ваше приложение обнаружит аномалию и прекратит обработку.
Сохраняет ли это предложение, которое вы пишете, указатель на CO IDispatch .... уведомление о событии означает сохранение pDispatch в этом классе?
- About the following. Yes, it is.
- В реализации метода OpenService сохраните указатель на объект IDispatch CO, переданный в качестве параметра, подготовив переменную динамического типа, и используйте ее для уведомления о событии.