-
Вопрос простой: а как (в самых общих чертах) устроен Google Chrome?
Там ведь много процессов, но все они рисуют в одном окне. Как это сделано?
Я всегда думал, что окно это принадлежит какому-то одному процессу, остальные процессы просто с этим процессом взаимодействуют и он всё в своём окне для всех рисует.
Но может для дочерних процессов (а там именно дочерние процессы) есть какие-то особые упрощённые варианты взаимодействовать
- с общим окном
- меж собой
? -
Игорь Шевченко © (20.04.17 13:50) [1]
> Там ведь много процессов, но все они рисуют в одном окне.
В разных окнах -
Может вы могли бы чуть подробнее рассказать?
У меня самого не получается понять где именно рам разные окна, да еще разных (?) процессов. -
Игорь Шевченко © (21.04.17 10:26) [3]KSergey © (21.04.17 09:07) [2]
https://ru.wikipedia.org/wiki/Google_Chrome
"Chrome, как правило, создаёт для каждой вкладки отдельный процесс, чтобы не допустить ситуации, при которой содержимое одной вкладки имеет возможность влиять на содержимое другой (также в случае, если процесс обработки содержимого вкладки зависнет, его можно будет завершить без риска потери данных других вкладок)[24]. Процессу вкладки даётся наименьшее число привилегий, процесс может совершать вычисления, но не может производить чтение или запись. Образно выражаясь, вкладка находится в песочнице."
Насчет объединения окон разных процессов - это уже давно (лет 20 с лишним точно) используется при работе с OLE. -
Про OLE - а ведь в самом деле, про это я и не подумал, спасибо.
Хорошо, вопрос: можно кратко схематично какими вызовами WinAPI встроить в моё окно другое окно, обслуживающееся другим процессом? (другим дочерним процессом)
Не могу сообразить куда в параметрах что куда подставлять.
Ну т.е. если я сделаю CreateWindow - то как я могу сказать "но отрисовываться оно должно другим процессом"? -
Игорь Шевченко © (21.04.17 14:24) [5]KSergey © (21.04.17 11:48) [4]
Отрисовывается окно твоим процессом (потоком, если быть точным). А встроено оно может быть в окно другого потока. В CreateWindow нужно указать значение hwndparent того окна, куда оно должно быть встроено. -
Всё так просто?
Здорово, спасибо, Игорь!