Конференция "Прочее" » Как устроен Google Chrome
 
  • KSergey © (20.04.17 12:40) [0]
    Вопрос простой: а как (в самых общих чертах) устроен Google Chrome?
    Там ведь много процессов, но все они рисуют в одном окне. Как это сделано?

    Я всегда думал, что окно это принадлежит какому-то одному процессу, остальные процессы просто с этим процессом взаимодействуют и он всё в своём окне для всех рисует.

    Но может для дочерних процессов (а  там именно дочерние процессы) есть какие-то особые упрощённые варианты взаимодействовать
     - с общим окном
     - меж собой
    ?
  • Игорь Шевченко © (20.04.17 13:50) [1]

    > Там ведь много процессов, но все они рисуют в одном окне.


    В разных окнах
  • KSergey © (21.04.17 09:07) [2]
    Может вы могли бы чуть подробнее рассказать?
    У меня самого не получается понять где именно рам разные окна, да еще разных (?) процессов.
  • Игорь Шевченко © (21.04.17 10:26) [3]
    KSergey ©   (21.04.17 09:07) [2]

    https://ru.wikipedia.org/wiki/Google_Chrome

    "Chrome, как правило, создаёт для каждой вкладки отдельный процесс, чтобы не допустить ситуации, при которой содержимое одной вкладки имеет возможность влиять на содержимое другой (также в случае, если процесс обработки содержимого вкладки зависнет, его можно будет завершить без риска потери данных других вкладок)[24]. Процессу вкладки даётся наименьшее число привилегий, процесс может совершать вычисления, но не может производить чтение или запись. Образно выражаясь, вкладка находится в песочнице."

    Насчет объединения окон разных процессов - это уже давно (лет 20 с лишним точно) используется при работе с OLE.
  • KSergey © (21.04.17 11:48) [4]
    Про OLE - а ведь в самом деле, про это я и не подумал, спасибо.
    Хорошо, вопрос: можно кратко схематично какими вызовами WinAPI встроить в моё окно другое окно, обслуживающееся другим процессом? (другим дочерним процессом)
    Не могу сообразить куда в параметрах что куда подставлять.
    Ну т.е. если я сделаю CreateWindow - то как я могу сказать "но отрисовываться оно должно другим процессом"?
  • Игорь Шевченко © (21.04.17 14:24) [5]
    KSergey ©   (21.04.17 11:48) [4]

    Отрисовывается окно твоим процессом (потоком, если быть точным). А встроено оно может быть в окно другого потока. В CreateWindow нужно указать значение hwndparent того окна, куда оно должно быть встроено.
  • KSergey © (22.04.17 13:57) [6]
    Всё так просто?
    Здорово, спасибо, Игорь!
 
Конференция "Прочее" » Как устроен Google Chrome
Есть новые Нет новых   [134431   +10][b:0][p:0]