Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2010, 10:58   #1
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию Как вызвать функцию одной программы из другой.

Задача состоит в следующем, есть две программы (исходные коды обоих имеются), одна служит для рассчета значений и написана на Visual Basic, а другая программа служит для отправки результатов рассчетов на сервер и написана на C#.
Переписывать программы на один язык с целью последующего их объединения не хочется.
В первой программе есть процедура которая выполняет вычисления

Sub Calculation()
'Здесь собственно идет процесс вычисления в результате которого получается одномерный массив с данными - Result, тип double

end Sub

Для отправки данных во второй программе есть функция
static void SendData(double[] myData)
{
.....
}

Что мне надо дописать в первой программе чтобы вызвать функцию отправки данных из второй программы?
У меня есть мысль передавать данные через файл, но этот вариант мне не очень нравится, есть ли другое решение?
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 10.06.2010, 11:05   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Использование dll или интерфейсы DCOM технологии, но это все геморройно...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 10.06.2010, 11:17   #3
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

А можно насчет Dll поподробнее, а то я что то такое слышал, но не стал разбираться, т.к. подумал что это не мой случай.
Если не сложно то не могли бы вы написать последовательность действий (логику) вызова функции через dll, а с реализацией я уже сам попробую разобраться.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 10.06.2010, 11:21   #4
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

В твоем случае нужно создать Dll, куда поместятся все необходимые функции, а потом уже в программе подключать эту самуюю dll и делать вызовы нужных функций...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 10.06.2010, 11:26   #5
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Тоесть надо из второй программы которая на C# сделать не exe а dll с удалением функции main?
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 10.06.2010, 12:39   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Может через Sendmessage. правда я не знаю синтаксиса с и basic
SERG1980 вне форума Ответить с цитированием
Старый 10.06.2010, 12:42   #7
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Код:
Shell "<полный путь к исполняемому модулю (экзешнику)>"

Последний раз редактировалось Sasha_Smirnov; 10.06.2010 в 17:06.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 10.06.2010, 12:49   #8
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Цитата:
ShellExecute(Handle,((String)"open" ).c_str(),((TLabel*)Sender)->Caption.c_str(),NULL,NULL,SW_SHOW) ;;
в Builder как-то так
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 10.06.2010, 15:06   #9
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

ShellExecute не подойдет, поскольку оно будет каждый раз по новой запускать вторую программу, а мне надо чтобы она постоянно висела в памяти, так как там что то типа авторизации происходит.
Тоесть задача такая что одновременно запущены программы А и В, и вот надо чтобы по команде из А выполнялась функция в В.

Одно из решений такое: программа А по окончанию вычислений пишет в файл Tmp.txt массив результатов, программа В постоянно проверяет файл Tmp.txt, ну скажем 10 раз в секунду, и если его размер отличен от нуля, то она считывает оттуда информацию, выполняет нужную мне функцию (SendData) и стирает содержимое файла.

Но хочется чтобы программа именно ждала когда в нее поступит сигнал, а не проверяла файл.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вызвать функцию в ассемблерной вставке, зная адрес iceman2112 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 04.05.2010 13:38
Как вызвать функцию? blackstersl Общие вопросы Delphi 10 07.06.2009 19:22
Вызвать адрес памяти как функцию XAOC-forever Общие вопросы Delphi 18 07.03.2009 20:32
Как вызвать одну форму из другой? JamS007 Общие вопросы C/C++ 10 21.11.2008 19:33
как вызвать из Dll функцию, которая определена в главном потоке? SaintRain Win Api 1 23.11.2006 20:08