Как создать Chrome-подобное приложение в Delphi, которое запускает несколько процессов в одном окне? - PullRequest
16 голосов
/ 21 сентября 2009

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

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

Ответы [ 6 ]

7 голосов
/ 21 сентября 2009

Взгляните на код Delphi из HeidiSQL .Это отличный клиент MySQL с открытым исходным кодом, который реализует этот механизм.

Прочтите этот новостной элемент, который был опубликован после выпуска Chrome:

"Google играет в догонялки с HeidiSQL?"

: -)

HeidiSQL
(источник: heidisql.com )

7 голосов
/ 21 сентября 2009

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

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

4 голосов
/ 22 сентября 2009

Посмотрите на: http://blogs.microsoft.co.il/blogs/maxim/archive/2008/09/23/curiosity-killed-the-programmer-multiprocess-browser.aspx. Источник приложения находится в CSharp. Я уверен, что вы можете адаптировать его к Delphi.

4 голосов
/ 21 сентября 2009

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

alt text

рамочные

Учебники

Bye.

0 голосов
/ 21 сентября 2009

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

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

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

0 голосов
/ 21 сентября 2009

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

...