Jump to content

HDowns

Members
  • Posts

    10
  • Joined

  • Last visited

Posts posted by HDowns

  1. I'll answer myself.

     

    1. Search a child window of the Frame.VCLContainer.Handle with the 'Internet Explorer_Server' class.

    2. Get IHTMLDocument2 and IWebbrowser2 interfaces using the following code:

     

    function GetIEFromHWND(WHandle: HWND; var pDoc: IHTMLDocument2; var IE: IWebbrowser2): HRESULT;
    var
      hInst: HWND;
      lRes: DWORD;
      Msg: Integer;
      ObjectFromLresult: TObjectFromLresult;
    begin
      hInst := LoadLibrary('Oleacc.dll');
      if hInst=0 then
       begin
        Result := GetLastError;
        exit;
       end;
    
      @ObjectFromLresult :=  GetProcAddress(hInst, 'ObjectFromLresult');
      if @ObjectFromLresult <> nil then
      begin
        try
          lRes := 0;
          Msg := RegisterWindowMessage('WM_HTML_GETOBJECT');
          if SendMessageTimeOut(WHandle, Msg, 0, 0, SMTO_ABORTIFHUNG, 1000, @lRes)<>0 then
           begin
            Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc);
            if Result = S_OK then
              (pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp,
                IWebbrowser2, IE);
           end
          else
           Result := GetLastError;
        finally
          FreeLibrary(hInst);
        end;
      end
      else
       Result := GetLastError;
    end;
    

    It allows you fully control the web frame from the VCL mode.

     

    Note: The 'Internet Explorer_Server' child window will be available only after you'll load something to the frame.

    • Upvote 2
  2. Кто-нибудь оценивал производительность приложений через веб с использованием unigui. Планирую развернуть на публичном сервере. Сколько одновременных клиентов выдержит? Какая система нужна для этого?

    Датасеты используются, но очень мало. Буду признателем, если кто поделится опытом.

×
×
  • Create New...