![]() |
|
Модераторы: diadiavova, gambit |
![]()
|
|
| DarkDragon |
|
|||
![]() GradVin ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 19.8.2006 Репутация: 5 Всего: 8 |
Всем привет!
Вообщем суть такая: Есть программа AppMessager.exe, которая загружается в память и сидит тама(без формы и консоли). У этой программы есть классы AMsgString, AMsgProc. У первого есть переменные: fErrMsg01...20 As String = "....", а у второго есть процедуры: ShowMsg(nMsg As Integer), ExitProgram. Есть совсем другая программа: SuperPad.exe (Много чего есть переменные сообщений об ошибках программы SuperPad. Теперь надо слинковать(связать) SuperPad к AppMessager. Т. Е. Нужно чтобы SuperPad грузил из памяти(не из файла!) это приложение(или адресс?), ну вообщем что нибудь что позволит получить управление над AppMessager. Например получить только переменную, или вызвать какую нибудь процедуру. Может можно только адрес переменной или ф-ции получить и вызвать её? !!!Эти 2 приложения только для примера!!! Помогите пожайлуста, чем можете. |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Если .NET 1.x - добавить референс на exe ты не сможешь. В .NET 2.0 он добавляется так же, как и референс на dll. В память другого AppDomain'а тебе всё равно залезть не удастся, так что в данном случае лучше используемую обоими приложениями функциональность выделить в отдельную библиотеку. P.S. Это, конечно, оффтоп, но В .NET венгерку рекомендуют не использовать |
|||
|
||||
| DarkDragon |
|
|||
![]() GradVin ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 19.8.2006 Репутация: 5 Всего: 8 |
В курсе. Ведь тама все берется за обьекты, это видно даже на стандартных классах: FileStream, нежели fStream, Obj - Object, pt - Point, hWnd - Form.Handle, визде указывают полное название а не как в венгерской нотации...
Трудно отвыкать от венгера. С помощью сервиса нельзя связать (если AppMessager.exe был бы сервисом)? Добавлено @ 15:57 Хотя в .NET кое что осталось -> IntPtr (Integer Pointer) |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
||||
|
||||
| reloni |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 10.5.2006 Где: Москва Репутация: нет Всего: 4 |
А я считаю, что это как раз то, что нужно
Правда я с ними тоже пока не работал. |
|||
|
||||
| DarkDragon |
|
|||
![]() GradVin ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 19.8.2006 Репутация: 5 Всего: 8 |
Есть класс ServiceController, и есть проект Windows Service, но загвозка вот в чем-
есть процедура (подпрограмма, имею ввиду sub) ExecuteCommand (command As Integer), как правило получить и передать значение какой нибудь переменной не получится. И больше ничего такого чтобы напоминало нам о возможностях доступа к сервису. Но как можно управлють сервисом, если мы не можем ни передать ему какоето значение, и не получить? Конечно потрепясь можно скажем через реестр или фаил, но этож мазахизм. Толком тоже не углоблялся, но для чего же эти сервисы нужны то. И если есть контроллер, значить можно контралировать программу. Ну я уж не думаю что придется прибегать к вышеупомянутам методам заимосвязи данных? Или придется? |
|||
|
||||
| DarkDragon |
|
|||
![]() GradVin ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 19.8.2006 Репутация: 5 Всего: 8 |
Вот вообщем вывел способ(теоретически):
Так как сервису можно послать номер команды (именно номер), можно использовать ф-ция ExecuteCommand как поток байтов, строки. 1. Сначало вызываем ф-цию сервиса "Принятие Строки Символов" допустим номер 256. Сервис готовит List<Byte>. Для записи последующих команд. 2. Пишем ф-цию которая конвертирует строку в массив байтов, и каждый байт отсылает сервису ввиде Integer - команнды. После того как сервис получает байты, он записывает их в List<Byte>. 3. После того как все байты(строки) записанны, вызываем еще одну ф-цию сервиса "Преобразование и выполнения строки" допустим с номером 257. После того как сервис получает эту команду, мы конвертируем List<Byte> в String, и выполняем соответствующие ф-ции относительно строки. Это все 100% реализуемо, вопрос сам вот в чем: Какая же скорость передачи команды от программы к сервису, если она высока, то такой метод передачи данных будет самым, самым. Пока на практике еще не применял, но будет время обязательно проверю. |
|||
|
||||
![]()
|
| Правила форума VB .NET | |
|
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |