Web браузер

Тема в разделе "WASM.BEGINNERS", создана пользователем Hacker, 31 окт 2018.

  1. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    175
    Как написать нормальный вэб браузер. На чем, какая библиотека нужна оконной процедуре на fasm.
    Какие библиотеки DLL нужны
    Где в IE реализована визуализация HTML
    https://technet.microsoft.com/en-us/windows/aa752127(v=vs.60)
    _____

    IWebBrowser2 interface
    WebBrowser control (Microsoft ActiveX control) or implemented by an instance of the InternetExplorer application (OLE Automation). For the Microsoft .NET Framework version of this control, see WebBrowser Control (Windows Forms).
    Members

    The IWebBrowser2 interface inherits from the IDispatch interface. IWebBrowser2 also has these types of members:
    IWebBrowser2::ClientToWindow
    Computes the full size of the browser window when given the specified width and height of the content area.
    IWebBrowser2::ExecWB
    Executes a command and returns the status of the command execution using the IOleCommandTarget interface.
    IWebBrowser2::GetProperty
    Gets the value associated with a user-defined property name.
    IWebBrowser2::GoBack
    Navigates backward one item in the history list.
    IWebBrowser2::GoForward
    Navigates forward one item in the history list.
    IWebBrowser2::GoHome
    Navigates to the current home or start page.
    IWebBrowser2::GoSearch
    Navigates to the current search page.
    IWebBrowser2::Navigate
    Navigates to a resource identified by a URL or to a file identified by a full path.
    IWebBrowser2::Navigate2
    Navigates the browser to a location that might not be expressed as a URL, such as a PIDL for an entity in the Windows Shell namespace.
    IWebBrowser2::PutProperty
    Associates a user-defined name/value pair with the object.
    IWebBrowser2::QueryStatusWB
    Queries the object for the status of commands using the IOleCommandTarget::QueryStatus method.
    IWebBrowser2::Quit
    Closes the object.
    IWebBrowser2::Refresh
    Reloads the file that is currently displayed in the object.
    IWebBrowser2::Refresh2
    Reloads the file that is currently displayed with the specified refresh level.
    IWebBrowser2::ShowBrowserBar
    Shows or hides a specified browser bar.
    IWebBrowser2::Stop
    Cancels a pending navigation or download, and stops dynamic page elements, such as background sounds and animations.
    IWebBrowser2::AddressBar
    Read/write
    Sets or gets a value that indicates whether the address bar of the object is visible or hidden.
    IWebBrowser2::FullScreen
    Read/write
    Sets or gets a value that indicates whether Internet Explorer is in full-screen mode or normal window mode.
    IWebBrowser2::get_Application
    Read-only
    Gets the automation object for the application that is hosting the WebBrowser Control.
    IWebBrowser2::get_Busy
    Read-only
    Gets a value that indicates whether the object is engaged in a navigation or downloading operation.
    IWebBrowser2::get_Container
    Read-only
    Gets an object reference to a container.
    IWebBrowser2::get_Document
    Read-only
    Gets the automation object of the active document, if any.
    IWebBrowser2::get_FullName
    Read-only
    Retrieves the fully qualified path of the Internet Explorer executable.
    IWebBrowser2::get_LocationName
    Read-only
    Retrieves the path or title of the resource that is currently displayed.
    IWebBrowser2::get_LocationURL
    Read-only
    Gets the URL of the resource that is currently displayed.
    IWebBrowser2::get_Name
    Read-only
    Retrieves the frame name or application name of the object.
    IWebBrowser2::get_Parent
    Read-only
    Gets the parent of the object.
    IWebBrowser2::get_Path
    Read-only
    Retrieves the system folder of the Internet Explorer executable.
    IWebBrowser2::get_ReadyState
    Read-only
    Gets the ready state of the object.
    IWebBrowser2::get_RegisterAsBrowser
    Read/write
    Sets or gets a value that indicates whether the object is registered as a top-level browser window.
    IWebBrowser2::get_TopLevelContainer
    Read-only
    Gets a value that indicates whether the object is a top-level container.
    IWebBrowser2::get_Type
    Read-only
    Gets the user type name of the contained document object.
    IWebBrowser2::Height
    Read/write
    Sets or gets the height of the object.
    IWebBrowser2::HWND
    Read-only
    Gets the handle of the Internet Explorer main window.
    IWebBrowser2::Left
    Read/write
    Sets or gets the coordinate of the left edge of the object.
    IWebBrowser2::MenuBar
    Read/write
    Sets or gets a value that indicates whether the Internet Explorer menu bar is visible.
    IWebBrowser2::Offline
    Read/write
    Sets or gets a value that indicates whether the object is operating in offline mode.
    IWebBrowser2::RegisterAsDropTarget
    Read/write
    Sets or gets a value that indicates whether the object is registered as a drop target for navigation.
    IWebBrowser2::Resizable
    Read/write
    Sets or gets a value that indicates whether the object can be resized.
    IWebBrowser2::Silent
    Read/write
    Sets or gets a value that indicates whether the object can display dialog boxes.
    IWebBrowser2::StatusBar
    Read/write
    Sets or gets a value that indicates whether the status bar for the object is visible.
    IWebBrowser2::StatusText
    Read/write
    Sets or gets the text in the status bar for the object.
    IWebBrowser2::TheaterMode
    Read/write
    Sets or gets whether the object is in theater mode.
    IWebBrowser2::ToolBar
    Read/write
    Sets or gets whether toolbars for the object are visible.
    IWebBrowser2::Top
    Read/write
    Sets or gets the coordinate of the top edge of the object.
    IWebBrowser2::Visible
    Read/write
    Sets or gets a value that indicates whether the object is visible or hidden.
    IWebBrowser2::Width
    Read/write
    Sets or gets the width of the object.
    Remarks
    Many of these methods apply only to the InternetExplorer application, such as the ClientToWindow method and the ShowBrowserBar method. The WebBrowser control either returns an error for those methods that it does not implement, or stores the input value but otherwise ignores it.
    The IWebBrowser2 interface derives from IDispatch indirectly; that is, IWebBrowser2 derives from IWebBrowserApp, which in turn derives from IWebBrowser, which finally derives from IDispatch.
    Note The IWebBrowser and IWebBrowserApp interfaces are deprecated.
    The following code demonstrates how to launch Internet Explorer from within a host application. When the InternetExplorer object is first created, the application window is hidden. You must set IWebBrowser2::Visible to VARIANT_TRUE to display the application. Also, because the OLE Automation server launches Internet Explorer as a separate application, the host must call the IWebBrowser2::Quit method to close Internet Explorer, if necessary. In this example, the browser continues running after the function exits if the navigation is successful.
    Код (C++):
    1. if (SUCCEEDED(OleInitialize(NULL)))
    2. {
    3.  IWebBrowser2* pBrowser2;
    4.  
    5.  CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
    6.  IID_IWebBrowser2, (void**)&pBrowser2);
    7.  if (pBrowser2)
    8.  {
    9.  VARIANT vEmpty;
    10.  VariantInit(&vEmpty);
    11.  
    12.  BSTR bstrURL = SysAllocString(L"http://microsoft.com");
    13. HRESULT hr = pBrowser2->Navigate(bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);
    14.  if (SUCCEEDED(hr))
    15.  {
    16.  pBrowser2->put_Visible(VARIANT_TRUE);
    17.  }
    18.  else
    19.  {
    20.  pBrowser2->Quit();
    21.  }
    22.  
    23.  SysFreeString(bstrURL);
    24.  pBrowser2->Release();
    25.  }
    26.  
    27.  OleUninitialize();
    28. }
    Alternatively, the Internet Explorer application can create a new window (similar to window.open) by passing the navOpenInNewWindow flag. In this case, it is necessary to call IWebBrowser2::Quit to properly close the hidden browser window. This method allows you to open several browser windows at one time; however, because no interface reference is returned, there is no immediate way to further navigate or control the new instances of Internet Explorer.
    Код (C++):
    1. CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
    2.  IID_IWebBrowser2, (void**)&pBrowser2);
    3. if (pBrowser2)
    4. {
    5.  VARIANT vEmpty;
    6.  VariantInit(&vEmpty);
    7.  
    8.  VARIANT vFlags;
    9.  V_VT(&vFlags) = VT_I4;
    10.  V_I4(&vFlags) = navOpenInNewWindow;
    11.  
    12.  BSTR bstrURL = SysAllocString(L"http://microsoft.com");
    13.  
    14.  pBrowser2->Navigate(bstrURL, &vFlags, &vEmpty, &vEmpty, &vEmpty);
    15.  pBrowser2->Quit();
    16.  
    17.  SysFreeString(bstrURL);
    18.  pBrowser2->Release();
    19. }
    Note Windows Internet Explorer 7 and later. It is not possible to use CoCreateInstance to open an instance of Internet Explorer as a new tab in an existing window. In general, the ShellExecute function is the preferred way to open links because it respects the user preferences both with regard to default browser and expected tab behavior.
    Requirements

    Minimum supported clientWindows XP
    Minimum supported serverWindows 2000 Server
    HeaderExdisp.h
    DLLShdocvw.dll
    IDispatch
    Как называется библиотека реализации HTML любой версии я хочу привернуть её к окну
    http://natalia.appmat.ru/c&c++/dll.html
    Тег <iframe>
    комментариев: 190
    align
    Определяет как фрейм будет выравниваться по краю, а также способ обтекания его текстом.
    allowtransparency

    Устанавливает прозрачный фон фрейма, через который виден фон страницы.
    frameborder
    Устанавливает, отображать границу вокруг фрейма или нет.
    height
    Высота фрейма.
    hspace
    Горизонтальный отступ от фрейма до окружающего контента.
    marginheight
    Отступ сверху и снизу от содержания до границы фрейма.
    marginwidth
    Отступ слева и справа от содержания до границы фрейма.
    name
    Имя фрейма.
    sandbox
    Позволяет задать ряд ограничений на контент загружаемый во фрейме.
    scrolling
    Способ отображения полосы прокрутки во фрейме.
    seamless
    Определяет, что содержимое фрейма должно отображаться так, словно оно является частью документа.
    src
    Путь к файлу, содержимое которого будет загружаться во фрейм.
    srcdoc
    Хранит содержимое фрейма непосредственно в атрибуте.
    vspace
    Вертикальный отступ от фрейма до окружающего контента.
    width
    Ширина фрейма.
    Также для этого тега доступны универсальные атрибуты и события.
    Закрывающий тег

    Обязателен.
    Пример
    HTML5IECrOpSaFx
    Код (HTML5):
    1. <!DOCTYPE HTML>
    2. <html>
    3.  <head>
    4.   <meta charset="utf-8">
    5.   <title>Тег IFRAME</title>
    6.  </head>
    7.  <body>
    8.  
    9.  <iframe src="banner.html" width="468" height="60" align="left">
    10.     Ваш браузер не поддерживает плавающие фреймы!
    11.  </iframe>
    12.  
    13.  </body>
    14. </html>
    15. <!DOCTYPE HTML>
    16. <html>
    17.  <head>
    18.   <meta charset="utf-8">
    19.   <title>Тег IFRAME</title>
    20.  </head>
    21.  <body>
    22.  
    23.  <iframe src="banner.html" width="468" height="60" align="left">
    24.     Ваш браузер не поддерживает плавающие фреймы!
    25.  </iframe>
    26.  
    27.  </body>
    28. </html>
    [​IMG]
    [​IMG]
    Универсальные элементы
    Фреймы

    https://www.filecheck.ru/process/ieframe.dll.html
    Microsoft Windows [Version 10.0.17134.376]
    © Корпорация Майкрософт (Microsoft Corporation), 2018. Все права защищены.

    Не могу найти IFrame.dll
    Есть без грязи этой либа нормальная не "корпоративная" для браузера нового
     
    Последнее редактирование модератором: 1 ноя 2018
  2. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.020
    Это ole-объект IWebBrowser2, чтоб грамотно его заюзать на фасме надо кучу методов переписать собственноручно. И как бы ишака к нормальным браузерам обычно не относят, полезен, чтоб относительно малыми усилиями получить приличный результат для отображения справки к программе например, а то и целого интерфейса программы.
     
  3. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.020
    Уберите ограничение, иначе весь мсдн в пост не влезет :mda:
     
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    Hacker,
    а частями (главами/параграфами) писать не пробовали? А если написать статью, то там ограничения на количество символов почти нет. И для чего всё писать шрифтом bold?
     
    Последнее редактирование: 31 окт 2018
  5. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.020
    iWebBrowser2.get_Document не отрабатывает как надо при старте, поэтому окно сразу не фокусится. Для этого надо с get_ReadyState например в основном цикле ждать когда страница откроется. Писалось для отображения .mht документов, они загружаются быстрей.
     

    Вложения:

  6. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.020
    О божечки. Через oleaut.dll IWebBrowser2 загружается. Что она там для этого грузит - ее дело. По всей видимости C:\Windows\SYSTEM32\MSHTML.dll, и это тоже несколько com-объектов, один из которых "HTML Document". Ты по-моему плохо понимаешь что это и как это.
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    Hacker,
    не понятно, ЧЕМ вы редактируете сообщение и для чего вам неограниченные по количеству символов сообщения, внутри вашего сообщения масса пустых тэгов типа [sizе=5][Ь][/Ь][/sizе] Я без проблем объединил ТРИ ваших сообщения в ОДНО
     
  8. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    175
    MSHTML.DLL ?