net-93-144-237-32.cust.ds писал(а):
Прошу подсказать как можно осуществить поставленную задачуВот пример одного из способов, по принципу работы winword.exe, excel.exe. Без механизма межпроцессного взаимодействия такую задачу решить невозможно. Самый простой способ, это использование второй копии программы, которая самоустраняется после передачи параметров первой копии. Первая копия всегда имеет запущенный сервер МП взаимодействия, вторая копия создает клиента для соединения с сервером. Наличие проверки пустых команд в примере не предусмотрено, как не предусмотрен и полноценный запуск второй копии. Всегда в работе будет только одна копия. Не предусмотрен также и декодер команд. Это надо делать самому. Я привел только механизм взаимодействия. В примере, все принятые команды отображаются в Memo
Add(MainForm,2953706,91,112)
{
Width=394
Height=244
Visible=1
Point(doVisible)
link(onCreate,13260698:doCreateMutex,[])
}
Add(Application,9084946,301,182)
{
}
Add(Mutex,13260698,154,126)
{
Name="MyForm"
link(onCreated,10916272:doEvent1,[])
link(onAlreadyExists,16600821:doEvent1,[(219,139)(219,307)])
}
Add(DDEServer,14007143,308,133)
{
ServiceName="DDE_Server"
TopicList=#5:Form1|
Point(onExecute)
Point(doSetError)
link(onExecute,989355:doEnum,[])
}
Add(Hub,10916272,252,126)
{
OutCount=3
link(onEvent1,2953706:doVisible,[(278,132)(278,81)(70,81)(70,146)])
link(onEvent2,14007143:doStart,[])
link(onEvent3,11088791:doEnum,[(278,146)(278,251)])
}
Add(DDEClient,12344087,511,329)
{
ServiceName="DDE_Server"
TopicName="Form1"
Items=#5:Text1|5:Text2|
AutoUpdate=1
ServerApp="DDE_Server.exe"
Point(doExecute)
Point(onExecute)
link(onExecute,2953706:doClose,[(562,363)(562,398)(78,398)(78,139)])
}
Add(ArrayEnum,11088791,308,245)
{
link(onItem,12374986:doWork2,[])
link(Array,12543098:Var2,[])
}
Add(ArrayEnum,9335340,350,308)
{
link(onItem,9756606:doStrCatDlm,[(415,314)(415,300)])
link(onEndEnum,4982019:doTrim,[(415,321)(415,363)])
link(Array,12543098:Var3,[(356,222)])
}
Add(GetDataEx,12543098,308,217)
{
link(Data,9084946:Params,[])
}
Add(Hub,16600821,252,301)
{
link(onEvent1,9756606:doClear,[])
link(onEvent2,9335340:doEnum,[])
}
Add(StrCatDelim,9756606,448,294)
{
Delimiter=";"
Point(doClear)
link(Str1,10854671:Var1,[(454,282)(442,282)(442,338)])
}
Add(Trim,4982019,448,357)
{
Char=";"
link(onTrim,12344087:doExecute,[])
link(Text,10854671:Var2,[])
}
Add(GetDataEx,10854671,448,333)
{
link(Data,9756606:Result,[])
}
Add(Memo,16148515,511,245)
{
Left=15
Top=10
Width=355
Height=185
}
Add(Str_Enum,989355,378,147)
{
link(onEnum,12374986:doWork1,[(466,153)])
}
Add(HubEx,12374986,462,245)
{
link(onEvent,16148515:doAdd,[])
}