Текущий архив: 2003.12.12;
Скачать: CL | DM;
Вниз
Как передать переменные из программы в программу Найти похожие ветки
← →
bobtubob (2003-12-01 09:20) [0]Как передать переменные из закрываемой програмы в программу которая запускала закрываемую программу
Короче из ЕХЕ запустили программу там чтото нахомутали и закрывают надо передать переменные в родительскую програму
Есть мысль сбрасывать их в буфер обмена но как инициировать событие в родительской програме????
← →
Юрий Зотов (2003-12-01 09:29) [1]1. WM_COPYDATA
2. CreateFileMapping + MapViewOfFile
← →
bobtubob (2003-12-01 09:44) [2]Большое спасибо а поподробнее можна
← →
Юрий Зотов (2003-12-01 09:51) [3]Можно. Но давайте договоримся - сначала Вы смотрите справку по WinAPI (что конкретно смотреть - сказано выше), а потом, если что-то осталось неясным, задаете конкретные вопросы. Потому что просто пересказывать здесь справку совершенно незачем.
← →
bobtubob (2003-12-01 09:58) [4]Справку смотрел.
По какому событию активизировать материнскую программу
Для анализа мапфайла
← →
Романов Р.В. (2003-12-01 10:00) [5]В параметрах командной строки можно передать. Если переменных не много.
← →
TUser (2003-12-01 10:26) [6]
> В параметрах командной строки можно передать.
То есть вызывать родительскую прогу. А если ее не надо запускать дважды, то придется научиться ее прибивать. Тогда - см [3] "сначала Вы смотрите справку по WinAPI".
← →
frost (2003-12-01 10:27) [7]Лучше обмениватся пользовательскими сообщениями WM_USER
← →
Юрий Зотов (2003-12-01 10:36) [8]> bobtubob © (01.12.03 09:58) [4]
> По какому событию активизировать материнскую программу
> Для анализа мапфайла
Например, любым сообщением. Но можно передавать данные и в самом сообщении WM_COPYDATA, не используя мап-файл в явном виде.
> frost © (01.12.03 10:27) [7]
ЧЕМ лучше?
← →
REA (2003-12-01 10:37) [9]IPC: pipes, DDE, mailslots, sokets, COM...
← →
bobtubob (2003-12-01 13:44) [10]А теперь для ТЕХ КТО ОЧЕНЬ УМНЫЙ И КОМУ БЫЛО СЛОЖНО МЕ РОЗЖЕВАТЬ
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
Procedure WMGetSysCommand(var Message : TMessage) ; message WM_COPYDATA;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
Procedure TForm1.WMGetSysCommand(var Message : TMessage) ;
begin
button1.Caption:=inttostr(Message.wParam);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage( form1.Handle, WM_COPYDATA,strtoint(edit1.text),1);
end;
end.
Где form1.Handle код получателя его можно передать при запуске
Первая процедура естествено находиться на материнской форме
← →
Юрий Зотов (2003-12-01 13:53) [11]> bobtubob © (01.12.03 13:44) [10]
Странно. Складывается ощущение, что Вы остались недовольны. Разве здесь кто-то обязан Вам что-то разжевывать?
Способ решения Вам дали. Где смотреть и что смотреть - сказали. Что еще было нужно? Перевести справку? Написать за Вас элементарный код? Еще что-то?
Странно. Знаете, некоторые в таких случаях говорят "спасибо".
← →
bobtubob (2003-12-01 14:04) [12]bobtubob © (01.12.03 09:44) [2]
Большое спасибо а поподробнее можна
← →
Юрий Зотов (2003-12-01 14:22) [13]> bobtubob © (01.12.03 14:04) [12]
См. [3].
Что не так?
← →
frost (2003-12-01 14:40) [14]Для Юрий Зотов >
Лучше или нет возможно я погаречился но пользоватся буфером для передачи данных не стал бы, не надежное место хранения :)
← →
Юрий Зотов (2003-12-01 14:57) [15]> frost © (01.12.03 14:40) [14]
Конечно, ненадежное. Но при чем тут WM_COPYDATA?
Как раз WM_COPYDATA лучше, чем WM_USER - потому что позволяет передавать данные ЛЮБОГО размера.
> bobtubob © (01.12.03 13:44) [10]
Кстати, WM_COPYDATA Вы использовали неверно. Смотрите справку внимательнее.
Страницы: 1 вся ветка
Текущий архив: 2003.12.12;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.006 c