Как создать приложение Chrome в Delphi, которое запускает несколько процессов внутри одного окна?

Можно ли создать "группу приложений", которая будет работать под одним окном, но в отдельных процессах, например, в браузере Chrome? Я хотел бы разделить одно приложение на несколько частей, так что один сбой или заторможенный процесс не может снести других, но при этом сохранить внешний вид и чувствовать себя как можно ближе к исходной системе.

Я знаю, что источник Chrome доступен, но есть ли что-то наполовину готовое для Delphi?

Ответы

Ответ 1

Я предполагаю, что в основном вы создали бы несколько процессов, каждый из которых создает окно/форму. В одном из процессов есть главное окно, в которое встроено каждое дочернее окно. Это так же просто, как вызов SetParent. Окна в разных процессах будут разговаривать друг с другом с помощью механизма IPC (Inter Process Communication), такого как named pipe или окна сообщений.

См. этот вопрос для примера внедрения использования SetParent в Delphi. См. этот вопрос для примера использования именованных каналов в Delphi.

Ответ 3

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

alt text

Каркасы

Учебники

Bye.

Ответ 5

Вы можете отделить свою прикладную логику и выполнить ее в нескольких потоках. Таким образом, если одна часть вашей логики приложения зависает, у вас все еще есть отзывчивое приложение. Но вы не сможете поместить графический интерфейс в несколько потоков. VCL требует, чтобы вы выполняли все связанные с GUI материалы в основном потоке.

Ответ 6

Я не уверен, как работает Delphi, но стандартная процедура для многопроцессного программирования разворачивается.

Вы открываете новый процесс с любым кодом, который вы хотите. Передайте информацию в разветвленный процесс и позвольте ему работать, делая все, что захочет.

Невозможно объяснить многопроцессорное программирование в одном ответе потока. Но посмотрите.