Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Линковка приложений? Соединяем два приложения. 
V
    Опции темы
DarkDragon
  Дата 11.11.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



Всем привет!
Вообщем суть такая:
    Есть программа AppMessager.exe, которая загружается в память и сидит тама(без формы
и консоли). У этой программы есть классы AMsgString, AMsgProc. У первого есть переменные:
    fErrMsg01...20 As String = "....", а у второго есть процедуры: ShowMsg(nMsg As Integer),
ExitProgram.

Есть совсем другая программа: SuperPad.exe (Много чего естьsmile). Первая программа, хронит в себе
переменные сообщений об ошибках программы SuperPad. Теперь надо слинковать(связать) SuperPad к AppMessager.
Т. Е. Нужно чтобы SuperPad грузил из памяти(не из файла!) это приложение(или адресс?), ну вообщем
что нибудь что позволит получить управление над AppMessager. Например получить только переменную,
или вызвать какую нибудь процедуру. Может можно только адрес переменной или ф-ции получить и вызвать её?
!!!Эти 2 приложения только для примера!!!

Помогите пожайлуста, чем можете.
PM MAIL   Вверх
Exception
Дата 11.11.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Цитата(DarkDragon @  11.11.2006,  12:34 Найти цитируемый пост)
грузил из памяти (не из файла!)


Если .NET 1.x - добавить референс на exe ты не сможешь. В .NET 2.0 он добавляется так же, как и референс на dll. В память другого AppDomain'а тебе всё равно залезть не удастся, так что в данном случае лучше используемую обоими приложениями функциональность выделить в отдельную библиотеку.

P.S. Это, конечно, оффтоп, но
Цитата(DarkDragon @  11.11.2006,  12:34 Найти цитируемый пост)
AMsgString


Цитата(DarkDragon @  11.11.2006,  12:34 Найти цитируемый пост)
fErrMsg01...20


Цитата(DarkDragon @  11.11.2006,  12:34 Найти цитируемый пост)
ShowMsg(nMsg As Integer)


В .NET венгерку рекомендуют не использовать smile .
PM   Вверх
DarkDragon
Дата 12.11.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



В курсе. Ведь тама все берется за обьекты, это видно даже на стандартных классах: FileStream, нежели fStream, Obj - Object, pt - Point, hWnd - Form.Handle, визде указывают полное название а не как в венгерской нотации...
Трудно отвыкать от венгера.

С помощью сервиса нельзя связать (если AppMessager.exe был бы сервисом)?

Добавлено @ 15:57 
Хотя в .NET кое что осталось -> IntPtr (Integer Pointer) smile
PM MAIL   Вверх
Exception
Дата 12.11.2006, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Цитата(DarkDragon @  12.11.2006,  16:52 Найти цитируемый пост)

С помощью сервиса нельзя связать (если AppMessager.exe был бы сервисом)?


Хм.. ты подразумеваешь Windows services? Честно говоря, никогда с ними работал, но сомневаюсь, что это - то, что тебе нужно...

Это сообщение отредактировал(а) Exception - 12.11.2006, 22:46
PM   Вверх
reloni
Дата 12.11.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.5.2006
Где: Москва

Репутация: нет
Всего: 4



А я считаю, что это как раз то, что нужноsmile
Правда я с ними тоже пока не работал.
PM MAIL ICQ   Вверх
DarkDragon
Дата 13.11.2006, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



Есть класс ServiceController, и есть проект Windows Service, но загвозка вот в чем-
есть процедура (подпрограмма, имею ввиду sub)  ExecuteCommand (command As Integer), как правило
получить и передать значение какой нибудь переменной не получится. И больше ничего такого
чтобы напоминало нам о возможностях доступа к сервису. Но как можно управлють сервисом, если
мы не можем ни передать ему какоето значение, и не получить? Конечно потрепясь можно скажем
через реестр или фаил, но этож мазахизм. Толком тоже не углоблялся, но для чего же эти 
сервисы нужны то. И если есть контроллер, значить можно контралировать программу. Ну я уж не думаю что
придется прибегать к вышеупомянутам методам заимосвязи данных? Или придется?

PM MAIL   Вверх
DarkDragon
Дата 16.12.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



Вот вообщем вывел способ(теоретически):
    Так как сервису можно послать номер команды (именно номер),
можно использовать ф-ция ExecuteCommand как поток байтов, строки.

1. Сначало вызываем ф-цию сервиса "Принятие Строки Символов" допустим номер 256.
Сервис готовит List<Byte>. Для записи последующих команд.

2. Пишем ф-цию которая конвертирует строку в массив байтов, и
каждый байт отсылает сервису ввиде Integer - команнды. После того как сервис получает байты, он записывает
их в List<Byte>.

3. После того как все байты(строки) записанны, вызываем еще одну
ф-цию сервиса "Преобразование и выполнения строки" допустим с номером 257. После
того как сервис получает эту команду, мы конвертируем List<Byte> в String, и 
выполняем соответствующие ф-ции относительно строки.

Это все 100% реализуемо, вопрос сам вот в чем:
Какая же скорость передачи команды от программы к сервису, если она высока, то
такой метод передачи данных будет самым, самым.

Пока на практике еще не применял, но будет время обязательно проверю.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0602 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.