![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| pavelv |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 5.2.2006 Репутация: нет Всего: нет |
Есть приложение делфи. Через него когда введут адрес, нужно открыть окно другого приложения. Оба кода могу редактировать. Пока не понимаю возможно ли это сделать не прибегаю к помощи лишних txt файлов или реестра?
Из вариантов допустим после запуска второго приложения, там открывается параллельный поток и что-то анализирует...постоянно его запускать, видимо только так? Допустим нужно анализировать, что запущено первое приложение. Дальше как считать данные из окна первого приложения...а как считать данные из окна первого приложения? А может проще из первого приложения обратиться ко второму приложению и передать ему данные? Какие есть для этого функции? P.S> Не хватает знаний, заранее спасибо. |
|||
|
||||
| Wolfgan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.3.2008 Репутация: нет Всего: нет |
Для запуска другого процесса можно использовать CreateProccess или ShellExecute
Для обмена можно использовать технологию DDE или как вариант работать по TCP/IP. Использовать CreateProcess - предпочтительней. Т.к. таким образом легче управлять запущенным дочерним процессом. Например можно отследить когда оно закроется или например подчинить себе и много других фичей. Вариант обмена по DDE уже как бы староват, да и по TCP/IP - можно и по сети рулить. Тут не так сложно. Можно заложить в обе программы набор команд. Т.е. при подачи команды с клиента на сервер, на сервере выполняются какието действия после чего результат возвращается клиенту. В общем солжно написать не большой протокол обмена (надстройкой над TCP/IP) между приложениями. Но это все мытарства. Почитай про технологию COM, DCOM. Там это уже все встроено |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 3 Всего: 5 |
насколько я знаю они передают только цифровые значения или не только? т.Е.Строку допустим через них передать нельзя или я не прав? |
|||
|
||||
| saneea |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
Есть ещё такая вещь как "файл отображаемый в память". Это очень мощное "оружие", т.к. с помощью него любое количество программ могут работать с одной областью памяти через указатель.
Вот прикрепляю файл с моей лабораторной работой (а точнее с двумя: в одной передаются числа, а в другой строки(пример одностороннего чата)) и фрагментом методички. Присоединённый файл ( Кол-во скачиваний: 7 )
lab.rar 31,27 Kb |
|||
|
||||
| THandle |
|
||||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Это почему же? Да вот хотя бы есть какое-то наше приложение с формой класса TForm1 и находящемся на ней Edit'ом. Пересылаем в него текст. Всё отлично работает и со строками.
|
||||
|
|||||
| pavelv |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 5.2.2006 Репутация: нет Всего: нет |
Всем спасибо, с FindMessage и PostMessage пока способ прозрачнее поэтому по нему и пошёл. Единственно FindWindow('TForm1', nil), а нужно FindWindow('TForm1', ''). Но пока не понимаю как передать инфу не во ВСЕ TEdit, а именно в конкретный по заданному названию? Возможно вообще такое?
P.S> sanea идея неплохая, но тут думаю достаточно обойтись чем-нибудь потривиальнее. Добавлено через 6 минут и 36 секунд Пока писал понял, что ещё кое-что интересно. Таким способом передать данные в переменную нереально? Тоесть работа ведется только с компонентами? |
|||
|
||||
| SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 3 Всего: 5 |
Присоеденяюсь к вопросу .Очень интересно. Я думаю что в переменную не занести. Это сообщение отредактировал(а) SlaUr - 24.4.2008, 08:15 |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
||||
|
||||
| Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Все реально. Вот пример как будем передавать integer.
В "посылающей" программе:
в "принимающей":
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Не совсем ясно что значит "на прямую"? Можно переменную сделать глобальной, тогда и использовать сможем ее везде. Или имеется ввиду как делает ArtMoney, менять значение прямо в памяти?
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| pavelv |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 5.2.2006 Репутация: нет Всего: нет |
Poseidon спасибо - всё клёво, целое передаёт. Как передать строку додумать не могу, в типе TMessage нету строковых. Есть такая возможность?
Один вопрос остался в воздухе, можно ли при передачи по компоненту передать конкретному TEdit с именем EditX(к примеру). Или он всегда будет передавать последнему? P.S> Может есть какой-нибудь фак в инете по этому поводу, а то неудобно спрашивать каждую строчку. |
|||
|
||||
| THandle |
|
||||||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
pavelv, да точно также. Просто при передаче приводишь строчку к WParam, а при приеме обратно в строку.
Вот как нибудь так: Передаём:
Принимаем:
|
||||||
|
|||||||
| pavelv |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 5.2.2006 Репутация: нет Всего: нет |
Принимающая программа в этом случае получает не те данные - каракули в общем
|
|||
|
||||
| Poseidon |
|
||||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Добавлено через 4 минуты и 37 секунд
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||||
|
|||||||
![]()
|
| Правила форума "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. |