COM технология в Fasm

Тема в разделе "WASM.WIN32", создана пользователем Sergio_Begin, 19 окт 2006.

  1. Sergio_Begin

    Sergio_Begin New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2006
    Сообщения:
    4
    Знающие, помогите...
    Мне нужно создать Dll с использованием com технологий.
    использование COM в fasm очень легкое, а вот создание?
    Помогите примером...
    Заранее спасибо
     
  2. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    Примером? :) На масме это 15 кб кода и с 50 кб инклудов, хоший будет пример.
    А почему тема в бегиннерсах? Это и не каждый адвансед напишет :))
     
  3. Sergio_Begin

    Sergio_Begin New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2006
    Сообщения:
    4
    А я в Fasm хочу - больно это красиво получается...
    И вообще решил на него переходить
    А куда еще писать...
     
  4. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    для начала поищи на форуме фасма, может уже есть готовое, если нет, бери код для масма (есть в пакете масм32) и творчески переделывай, заодно изучишь как оно все работает, при этом можно еще запастись книгой типа Inside OLE 2, где про потроха ком рассказывается.

    в WIN32, очевидно, надо было, но уже поздно, модераторы переместят если надо будет
     
  5. Sergio_Begin

    Sergio_Begin New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2006
    Сообщения:
    4
    А насчет примера:
    - создание структуры vtable
    - вывод из создателя...
    Я делал так:
    Код (Text):
    1. interface IAniThing,\
    2.              AniProc
    3.              ...
    4.  
    5. proc RealAniProc
    6. ...
    7. endp
    8.  
    9. proc AniCreator
    10.    invoke LocalAlloc, LMEM_FIXED, ...
    11.    mov  [eax+IAniThing#.#AniProc]
    12. endp
    Говорит - ошибка...
     
  6. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Код (Text):
    1. mov  [eax+IAniThing#.#AniProc]
    попытка переписать cominvk или comcall из стандартных инклюдов?
     
  7. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Думается, по дефолту, должен IUnknown наследоваться...
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Sergio_Begin
    Почитай лучше статьи о СОМ, особенно о том, как он реализуется на чистом си. Там весьма близко к асму.
     
  9. afw2004

    afw2004 New Member

    Публикаций:
    0
    Регистрация:
    14 мар 2006
    Сообщения:
    14
    COM DLL-ка на фасме. Только не регистрируется сама (нужно вручную). Для теста я поместил контрол на HTML страничку.

    Также выкладываю мои inc файлы (не пользуюсь стандартным com интерфейсом фасма - невдалый он какой-то).
     
  10. afw2004

    afw2004 New Member

    Публикаций:
    0
    Регистрация:
    14 мар 2006
    Сообщения:
    14
    инклуды
     
  11. Sergio_Begin

    Sergio_Begin New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2006
    Сообщения:
    4
    2asmfan:
    Ну, этож для примера, в реализации все будет
    Кстати, я зарегестрировался ;))
     
  12. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    В том-то и дело, это нарушение стандарта. Есть некоторый необходимый минимум для СОМ.
     
  13. opennetworks

    opennetworks New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    436
    Почему нет SelfRegister для DLL Register Server?

    Кому охота в реестре голыми руками копаться?
     
  14. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Почему нет? DllRegisterServer.
     
  15. opennetworks

    opennetworks New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    436
    Вы не поняли....

    Почему в CMyApp.dll нет экспорта
    DllGetClassObject, DllCanUnloadNow,DllRegisterServer,DllUnregisterServer

    с ними удобнее!
     
  16. opennetworks

    opennetworks New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    436
    ... вопрос не в тему

    А можно ли на FASM реализовать собственный формат файлов?

    (там же есть PE GUI, PE Console и тд...);

    Только не прямым кодом типа

    Код (Text):
    1.  PUSH    CS
    2.  POP     DS
    3.  MOV     DX,000E
    4.  MOV     AH,09
    5.  INT     21
    6.  MOV     AX,4C01
    7.  INT     21
    8.  PUSH    SP
    9.  DB      68
    10.  DB      69
    11.  JNB     0033
    12.  JO      0087
    13.  DB      6F
    14.  DB      67
    15.  JB      007A
    16.  DB      6D
    17.  AND     [BP+DI+61],AH
    18.  DB      6E
    19.  DB      6E
    20.  DB      6F
     
  17. afw2004

    afw2004 New Member

    Публикаций:
    0
    Регистрация:
    14 мар 2006
    Сообщения:
    14
    Потому что не доделал! Что тут непонятного?

    Выкладываю свои попытки собрать фасмом VxD. (Нерабочий вариант, рабочего пока нет).
     
  18. opennetworks

    opennetworks New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    436
    это прямой код:dntknw:


    ну, почти.
     
  19. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    opennetworks
    format binary в помощь.
     
  20. afw2004

    afw2004 New Member

    Публикаций:
    0
    Регистрация:
    14 мар 2006
    Сообщения:
    14
    opennetworks

    Что значит "прямой код"? Что значит "не прямой код"? (Не силен в терминологии)