Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2009, 09:18   #1
zalum
Пользователь
 
Регистрация: 16.02.2009
Сообщений: 12
По умолчанию Вызов одного приложения из другого

Добрый день! Я вызываю из одного приложения другое. Но, при вызове второго приложения просто открывается его главная форма, а надо, что бы выполнялись и некоторые функции, описанные в этом(вызываемом)приложении.Как это можно сделать?
zalum вне форума Ответить с цитированием
Старый 21.04.2009, 09:40   #2
n4r.c0m
 
Аватар для n4r.c0m
 
Регистрация: 03.06.2008
Сообщений: 3
По умолчанию

Другое приложение - твоё?
Если нет, тогда, что это за программа и что нужно в ней сделать после запуска?

Если твоя, можно попробовать добавить в неё некую ф-цию на экспорт.

Программа #2, файл project2.dpr:
Код:
program Project2;

uses
  Forms,
  Unit2 in 'Unit2.pas' {Form2};

procedure RunAndCall; export;
begin
  Application.Initialize;
  Application.CreateForm(TForm2, Form2);
//  Form2.<процедура, которую нужно вызвать>;
  Application.Run;
end;

exports RunAndCall;

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.
"Кусок" кода программы #1, который и вызывает процедуру RunAndCall из Project2.exe

Код:
type TRunAndCall = procedure;
var dll: cardinal;
    proc: TRunAndCall;
begin
  dll := LoadLibrary('project2.exe');
  @proc := GetProcAddress(dll, 'RunAndCall');
  proc;
end;
Что-бы правильно задать вопрос, нужно знать минимум 75% ответа...
n4r.c0m вне форума Ответить с цитированием
Старый 21.04.2009, 09:43   #3
zalum
Пользователь
 
Регистрация: 16.02.2009
Сообщений: 12
По умолчанию

Цитата:
Другое приложение - твоё?
Да, моё. Спасибо, буду пробовать!

Цитата:
Сообщение от n4r.c0m Посмотреть сообщение
Код:
procedure RunAndCall; export;
begin
  Application.Initialize;
  Application.CreateForm(TForm2, Form2);
//  Form2.<процедура, которую нужно вызвать>;
  Application.Run;
end;
А если <процедура, которую нужно вызвать> находится в другом моделе, не в модуле Unit2?

Последний раз редактировалось Stilet; 23.04.2009 в 12:23.
zalum вне форума Ответить с цитированием
Старый 22.04.2009, 11:56   #4
n4r.c0m
 
Аватар для n4r.c0m
 
Регистрация: 03.06.2008
Сообщений: 3
По умолчанию

Цитата:
Сообщение от zalum Посмотреть сообщение
А если <процедура, которую нужно вызвать> находится в другом моделе, не в модуле Unit2?
Можно и так. Нужно, что-бы этот модуль был в Uses листе.
p.s: Главное - аттрибут export после обьявления ф-кции.
Что-бы правильно задать вопрос, нужно знать минимум 75% ответа...
n4r.c0m вне форума Ответить с цитированием
Старый 22.04.2009, 15:49   #5
dani92
Форумчанин
 
Аватар для dani92
 
Регистрация: 17.02.2009
Сообщений: 132
По умолчанию

Опишите, куда нодо код вставлять, например по нажатию кнопки??? Тоже нужно)))
Чат по локальной сети http://fmchat.ucoz.kz - протестируйте плиз)))
а так delphi эта лучшая система программирования
dani92 вне форума Ответить с цитированием
Старый 23.04.2009, 12:25   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
Главное - аттрибут export после обьявления ф-кции.
Это только для ДЛЛ важно.
Если нужно вызвать функцию из другого юнита, достаточно его прописать в uses и вызывать ту функцию как будто она описана рядом.
Ну или на крайняк так:
Код:
uses unitX3....
....
// вызываем процедуру из того модуля
unitX3.Procedure....
....
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.04.2009, 19:11   #7
n4r.c0m
 
Аватар для n4r.c0m
 
Регистрация: 03.06.2008
Сообщений: 3
По умолчанию

2 Stilet - ты хотя бы читал, что человек спрашивает???
p.s: первый пост посмотри
Что-бы правильно задать вопрос, нужно знать минимум 75% ответа...
n4r.c0m вне форума Ответить с цитированием
Старый 24.04.2009, 09:24   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
n4r.c0m
Я то читал, и считаю что автор неполно раскрыл тему.
Все что он хочет можно описать в OnCreate главной формы той проги которую он запускает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.04.2009, 10:05   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

автор запусти вторую прогу сам ручками...она чтото будет делать так?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ

           Интенсив по Python: Работа с API и фреймворками 3-5 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как различить два процесса одного приложения? viter.alex Win Api 1 31.03.2009 21:01
Получать\отправлять пакеты через соединение другого приложения Frozzeg Работа с сетью в Delphi 8 20.03.2009 17:11
Как работать с меню другого приложения ? Stimer Win Api 1 17.12.2008 16:30