Как сие будет на fasm'e

Тема в разделе "WASM.BEGINNERS", создана пользователем dgs, 30 окт 2009.

  1. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Здрасте, собственно помогите пожалуйста перевести сие на fasm, сильное затруднение вызывает dispinterface (Это что такое???)

    Код (Text):
    1. // *********************************************************************//
    2. // DispIntf:  DWebBrowserEvents2
    3. // Flags:     (4112) Hidden Dispatchable
    4. // GUID:      {34A715A0-6587-11D0-924A-0020AFC7AC4D}
    5. // *********************************************************************//
    6.   DWebBrowserEvents2 = dispinterface
    7.     ['{34A715A0-6587-11D0-924A-0020AFC7AC4D}']
    8.     procedure StatusTextChange(const Text: WideString); dispid 102;
    9.     procedure ProgressChange(Progress: Integer; ProgressMax: Integer); dispid 108;
    10.     procedure CommandStateChange(Command: Integer; Enable: WordBool); dispid 105;
    11.     procedure DownloadBegin; dispid 106;
    12.     procedure DownloadComplete; dispid 104;
    13.     procedure TitleChange(const Text: WideString); dispid 113;
    14.     procedure PropertyChange(const szProperty: WideString); dispid 112;
    15.     procedure BeforeNavigate2(const pDisp: IDispatch; var URL: OleVariant; var Flags: OleVariant;
    16.                               var TargetFrameName: OleVariant; var PostData: OleVariant;
    17.                               var Headers: OleVariant; var Cancel: WordBool); dispid 250;
    18.     procedure NewWindow2(var ppDisp: IDispatch; var Cancel: WordBool); dispid 251;
    19.     procedure NavigateComplete2(const pDisp: IDispatch; var URL: OleVariant); dispid 252;
    20.     procedure DocumentComplete(const pDisp: IDispatch; var URL: OleVariant); dispid 259;
    21.     procedure OnQuit; dispid 253;
    22.     procedure OnVisible(Visible: WordBool); dispid 254;
    23.     procedure OnToolBar(ToolBar: WordBool); dispid 255;
    24.     procedure OnMenuBar(MenuBar: WordBool); dispid 256;
    25.     procedure OnStatusBar(StatusBar: WordBool); dispid 257;
    26.     procedure OnFullScreen(FullScreen: WordBool); dispid 258;
    27.     procedure OnTheaterMode(TheaterMode: WordBool); dispid 260;
    28.   end;
    Заранее благодарю...
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    надо читать про реализацию COM.
     
  3. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Гугл дал ответ
    Если dispinterface - это IDispatch, то объявление интерфейса будет выглядеть так
    Код (Text):
    1. interface DWebBrowserEvents2,\
    2.   QueryInterface,\
    3.   AddRef,\
    4.   Release,\
    5.   GetTypeInfoCount,\
    6.   GetTypeInfo,\
    7.   GetIDsOfNames,\
    8.   Invoke,\
    9.   StatusTextChange,\
    10.   ProgressChange,\
    11.   CommandStateChange,\
    12.   DownloadBegin,\
    13.   DownloadComplete,\
    14.   TitleChange,\
    15.   PropertyChange,\
    16.   BeforeNavigate2,\
    17.   NewWindow2,\
    18.   NavigateComplete2,\
    19.   DocumentComplete,\
    20.   OnQuit,\
    21.   OnVisible,\
    22.   OnToolBar,\
    23.   OnMenuBar,\
    24.   OnStatusBar,\
    25.   OnFullScreen,\
    26.   OnTheaterMode
    Вызывать методы интерфейса нужно через cominvk
     
  4. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Хотя нет

    Тогда объявлять нужно так

    Код (Text):
    1.  DWebBrowserEvents2_StatusTextChange  = 102
    2.  DWebBrowserEvents2_ProgressChange    = 108
    3.  DWebBrowserEvents2_CommandStateChange= 105
    4.  DWebBrowserEvents2_DownloadBegin     = 106
    5.  DWebBrowserEvents2_DownloadComplete  = 104
    6.  DWebBrowserEvents2_TitleChange       = 113
    7.  DWebBrowserEvents2_PropertyChange    = 112
    8.  DWebBrowserEvents2_BeforeNavigate2   = 250
    9.  DWebBrowserEvents2_NewWindow2        = 251
    10.  DWebBrowserEvents2_NavigateComplete2 = 252
    11.  DWebBrowserEvents2_DocumentComplete  = 259
    12.  DWebBrowserEvents2_OnQuit            = 253
    13.  DWebBrowserEvents2_OnVisible         = 254
    14.  DWebBrowserEvents2_OnToolBar         = 255
    15.  DWebBrowserEvents2_OnMenuBar         = 256
    16.  DWebBrowserEvents2_OnStatusBar       = 257
    17.  DWebBrowserEvents2_OnFullScreen      = 258
    18.  DWebBrowserEvents2_OnTheaterMode     = 260
    И эти номера передавать в invoke
     
  5. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    о_0 invoke в com это типа так?

    Код (Text):
    1. invoke DWebBrowserEvents2, DWebBrowserEvents2_StatusTextChange, ...
     
  6. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    блин чего то я ступил, через метод Invoke

    ps на предыдущее сообщение не обращайте внимания...
     
  7. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Плиз обьясните как правильно прикрутить DWebBrowserEvents2, я с С++ не дружу, а все примеры только на нем...
     
  8. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    http://www.kakeeware.com/i_kb.php
     
  9. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Перевёл на FASM и добавил DWebBrowserEvents2. Если что непонятно - спрашивай.
     
  10. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Спасибо большое