![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| BeeMaster |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 3.4.2008 Репутация: нет Всего: нет |
В общем задача. Есть главное приложение которое должно принимать общую статистику о работе. И вторичные приложения которые будут работать и передавать информацию полученную главному ехе. Нужно именно так т.к. это связано с особенностями выполняемой задачи.
Была мысль создать свое API для функционирования приложений наподобие как это реализовано у скайпа, но так и не нашел как это сделать. Передача информации с помощью файлов... Вариант но слишком часто будут сохраняться файлы и считываться... В общем боюсь что повлияет на работоспособность машины в целом... Подскажите пожалуйста как реализовать. Желательно с примером |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
||||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Есть такая штука, называется IPC - "межпроцессное взаимодействие". Способов куча: 1. Post|SendMessage - обычно используется для небольших объемов данных, которые "влезают" в 2 integer числа. 2. MemoryMappedFiles (MMF) - не особо просто обеспечить синхронизацию записи/чтения. 3. NamedPipes - наиболее применимо для обмена информацией в пределах одного компьютера. На Vista и Win7 появились подводные камни, связанные с различием прав доступа: к примеру, нельзя просто так подключиться к именованному каналу, если один из процессов запущен от системной учетки (например, служба), а второй - как обычное десктопное приложение, нужно поиграться с правами доступа 4. Sockets. Наиболее универсальное решение, но в пределах одного компьютера - избыточное. Наверняка перечислил не всё, гугл на запрос IPC скажет гораздо больше. Нужно определиться с конкретным способом, а потом уже конкретизировать вопрос. Это сообщение отредактировал(а) kami - 4.4.2012, 22:02 |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
||||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
baldina, я слегка опоздал
Это сообщение отредактировал(а) kami - 4.4.2012, 22:03 |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
угу, пиши короче
Добавлено через 2 минуты и 29 секунд |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
<offtopic> baldina, прикольно
|
|||
|
||||
| BeeMaster |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 3.4.2008 Репутация: нет Всего: нет |
Ребята... Помогите плиз. Покажите пожалуйста пример кода для взаимодействия. А то я никак не вкуриваю(
Просто форма на нем edit1 и button. При нажатие на кнопку данные из edit1 передавались бы другому процессу. Нужен исходник... Заранее благодарен! |
|||
|
||||
| kami |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Лови.
Писалось в незапамятные времена для D7, на D2009+ придется подшаманить, могут быть утечки памяти, хотя, если память не изменяет - тестировал это. Использовать просто: в каждом приложении создать экземпляр TMMF с одним и тем же параметром в конструкторе и одинаковым максимальным размером MMF. Затем, на передающем конце:
на приемном конце:
Присоединённый файл ( Кол-во скачиваний: 8 )
uMMFThread.pas 18,73 Kb |
||||
|
|||||
| RelictOs |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 14.2.2012 Репутация: нет Всего: 1 |
Вот небольшое клиент-серверное приложение на Socket. на мой взгляд - наиболее простой пример.
реализована передача текста и файлов. Присоединённый файл ( Кол-во скачиваний: 10 )
ClientServer2.rar 408,46 Kb |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
||||
|
||||
| Чучмек |
|
||||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 14 Всего: 41 |
Ну не стоит забывать про такую замечательную вещь как COM
Создаешь COM сервер File->New->Other->ActiveX->COM Object "Class Name":MyClass "Instancing":Multiple Instance "Threading Model":Apartament check "Include Type Library" and "Mark interface Oleautomation" OK Выделяешь IMyClass Нажимаешь NewMethod На вкладке Attributes задаешь имя метода Name:MyFunc На вкладке Parameters добавляешь передаваемые параметры и задаешь тип. "Name":str "Type":BSTR "Modifier":[in] Нажимаешь обновить "Refresh Iplementation" В проект добавится два модуля Unit* и ***_TLB В Unit* пишешь реализацию MyFunc Например:
Из ***_TLB копируешь описание интерфейса IMyClass и константу CLASS_MyClass В клиенте:
Вот пример. Присоединённый файл ( Кол-во скачиваний: 6 )
com.7z 224,36 Kb-------------------- умную мысль держи при себе, а дурной - поделись с другими |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |