IWebBrowser2 & IPersistFile

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

  1. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Здравствуйте, как можно сохранить содержимое окна IWebBrowser2 в файл при помощи IPersistFile??? Я пробовал разобраться на delphi все гуд, а вот как на fasm'e не пойму...

    ...
    IID_IPersistFile GUID 0000010B-0000-0000-C000-000000000046
    ...
    interface IPersistFile,\
    IsDirty,\
    Load,\
    Save,\
    SaveCompleted,\
    GetCurFile
    ... ; Вот таким образом я делаю юникод путь к файлу...
    invoke GetModuleFileName, 0, full_file, 1024
    cld
    mov esi, full_file
    xor eax, eax
    @1: lodsb
    cmp al, 0
    jne @1
    std
    @2: lodsb
    cmp al, '\'
    jne @2
    cld
    lodsw
    mov edi, esi
    xor eax, eax
    stosd
    invoke lstrcat, full_file, cash_file
    invoke lstrlen, full_file
    invoke MultiByteToWideChar, CP_ACP, 0, full_file, eax, szBuf, 4000
    invoke lstrcpyW, full_file, szBuf

    ... ; А вот так я перевел пример с С++ на fasm (не работает)
    cominvk ppw, get_Document, addr iDisp
    cominvk iDisp, QueryInterface, IID_IHTMLDocument2, addr Html
    cominvk Html, QueryInterface, IID_IPersistFile, addr pfile
    cominvk pfile, Save, full_file, TRUE
    cominvk Html, Release
    cominvk iDisp, Release
    ...
    ppw IWebBrowser2
    Html IHTMLDocument2
    pfile IPersistFile
    iDisp IDispatch
     
  2. Gnil

    Gnil New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2008
    Сообщения:
    41
    Нужно смотреть какие HRESULT возвращаются. CoInitialize(Ex) была вызван?
     
  3. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    CoInitialize - да вызвал... Сейчас буду смотреть HRESULT
     
  4. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Код (Text):
    1. cominvk Html,  QueryInterface, IID_IPersistFile, addr pfile ; Hresult = 16, facility = 7, code = 123
    Вот оно зло!!! Только не могу понять как от него избавиться...
     
  5. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    dgs
    Покажи листинг для
    Код (Text):
    1. IID_IPersistFile       GUID 0000010B-0000-0000-C000-000000000046  
    2. ...
    3. cominvk Html,  QueryInterface, IID_IPersistFile, addr pfile
     
  6. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    да я уже все сделал.
    Код (Text):
    1. interface IPersistFile,\
    2.         QueryInterface,\
    3.         AddRef,\
    4.         Release,\
    5.         GetClassID,\
    6.         IsDirty,\        
    7.         Load,\          
    8.         Save,\          
    9.         SaveCompleted,\  
    10.         GetCurFile
    11. ...
    12.         cominvk ppw,   get_Document, iDisp
    13.         cominvk iDisp, QueryInterface, IID_IHTMLDocument2, Html
    14.         cominvk Html,  QueryInterface, IID_IPersistFile, pfile
    15.         stdcall UpdateCashPath
    16.         mov     ebx, [pfile]
    17.         mov     eax, full_file
    18.         mov     [pBigBuff], eax
    19.         comcall ebx,IPersistFile,Save,[pBigBuff]
    20.         cominvk iDisp, Release
    21.         cominvk pfile, Release
    22.         cominvk Html,  Release