Как создать приложение Chrome в Delphi, которое запускает несколько процессов внутри одного окна?
Можно ли создать "группу приложений", которая будет работать под одним окном, но в отдельных процессах, например, в браузере Chrome? Я хотел бы разделить одно приложение на несколько частей, так что один сбой или заторможенный процесс не может снести других, но при этом сохранить внешний вид и чувствовать себя как можно ближе к исходной системе.
Я знаю, что источник Chrome доступен, но есть ли что-то наполовину готовое для Delphi?
Ответы
Ответ 1
Я предполагаю, что в основном вы создали бы несколько процессов, каждый из которых создает окно/форму. В одном из процессов есть главное окно, в которое встроено каждое дочернее окно. Это так же просто, как вызов SetParent. Окна в разных процессах будут разговаривать друг с другом с помощью механизма IPC (Inter Process Communication), такого как named pipe или окна сообщений.
См. этот вопрос для примера внедрения использования SetParent в Delphi. См. этот вопрос для примера использования именованных каналов в Delphi.
Ответ 2
Посмотрите код Delphi HeidiSQL. Это отличный клиент MySQL с открытым исходным кодом, который реализует этот механизм.
Прочитайте этот новостной материал, который был опубликован при выпуске Chrome:
"Google играет в догадки с HeidiSQL?"
: -)
HeidiSQL http://www.heidisql.com/images/forum/heidisql-windowlist-2.png
Ответ 3
Harriv, вы можете использовать схему, основанную на плагинах. где у вас есть основное приложение, и это динамически загружает новостные функции. Есть несколько библиотек, доступных здесь. Я оставляю некоторые.
![alt text]()
Каркасы
Учебники
Bye.
Ответ 4
Посмотрите: http://blogs.microsoft.co.il/blogs/maxim/archive/2008/09/23/curiosity-killed-the-programmer-multiprocess-browser.aspx. Источник приложения находится в CSharp. Я уверен, что вы можете адаптировать его к Delphi.
Ответ 5
Вы можете отделить свою прикладную логику и выполнить ее в нескольких потоках. Таким образом, если одна часть вашей логики приложения зависает, у вас все еще есть отзывчивое приложение. Но вы не сможете поместить графический интерфейс в несколько потоков. VCL требует, чтобы вы выполняли все связанные с GUI материалы в основном потоке.
Ответ 6
Я не уверен, как работает Delphi, но стандартная процедура для многопроцессного программирования разворачивается.
Вы открываете новый процесс с любым кодом, который вы хотите. Передайте информацию в разветвленный процесс и позвольте ему работать, делая все, что захочет.
Невозможно объяснить многопроцессорное программирование в одном ответе потока. Но посмотрите.