Вызов выполнения процедуры из DLL...

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Вызов выполнения процедуры из DLL...

Сообщение own » 15.08.2005 (Пн) 0:18

Приветствую Всех.

У меня вот такая ситуация:

Имеется решение состоящее из двух проектов
Проект 1 - WindowsApplication (далее программа)
Проект 2 - ClassLibrary (далее дллка)

Из программы делаю вызов процедуры из дллки,(по нажатию кнопки), задача этой процедуры отслеживать изменения в определенной папке, при появлении изменения запускается определенная процедура внутри этойже дллки,все проходит норамал. Но мне нужно чтобы по окончании выполнения определенной процедуры внутри дллки, запускалась процедура в программе.
Как можно это реализовать, вызвать выполнение процедуры из дллки в программе.
Спасибо заранее.
I'm Blind

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 15.08.2005 (Пн) 0:35

-определить в длл интерфейс
-в проге создать класс с этим интерфесом и передать в дллку
-дллка будет вызывать этот класс как интерфейс
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 15.08.2005 (Пн) 13:02

Теоретически это логично, но а на практике, как?, я уже обчитался MSDN ничего не понял, можно хотябы примерчик маленький, хоть будет от чего отталкиваться. :?
I'm Blind

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 15.08.2005 (Пн) 13:10

какой пункт не знаешь?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 15.08.2005 (Пн) 13:32

Ну если уж пояснять то можно оба пункта, как это выглядит в проге и как это будет выглядеть в дллке, а я судя по вашим примерам раскручу эту мысль для себя дальше.
:cry: :?:
I'm Blind

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 15.08.2005 (Пн) 15:20

Так, если ответов нет тогда я покажу как я себе это представляю,
ПРосьба не смеятся и помоч если что не так или совсем глупость.

В дллке определяем интерфейс:
>>>
Interface mng
function print(ByVal texts As String)As String
End Interface
>>>
далее создаем класс в проге:
>>>
Class vivod
Implevents mng
Function print(ByVal texts As String)As String Implements mng.print
...какой то код...
End Function
End Class
>>>
Вот как я это представляю.
Скажите что не так. :?
[/b][/code]
I'm Blind

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 15.08.2005 (Пн) 15:49

всё правильно, теперь пересылай ссылку на этот класс в дллку

ObjectInDLL.RegisterCallBack cb as mng
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 15.08.2005 (Пн) 21:02

Постойте, я в тупичке можно переформулировать твой ответ,
или по подробней как переслать, из выражения я ничего не понял, простите.
I'm Blind

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 15.08.2005 (Пн) 21:11

В длл:

Интерфейс для обратного вызова и класс для вызова и программы

в программе создаем класс в ДЛЛ в него отсылаем свой класс который имплементит интервейс.

Длл вызывает нужные методы интерфейса в программе
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 15.08.2005 (Пн) 22:39

Дружище, я устал искать информацию покажи пожалуйста примером относительно кода который там выше, все вроде ясно но ссылку сделать у меня уже нет терпенья :cry:
I'm Blind

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 16.08.2005 (Вт) 8:32

Ну что помощи ждать или нет?
I'm Blind

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 16.08.2005 (Вт) 8:39

В дллке определяем интерфейс:
>>>
Public myCallBack as mng ' объект в программе

Interface mng
function print(ByVal texts As String)As String
End Interface

'и класс, который будет вызывать программа

Public myClass

Public Sub RegisterCallBack(cb as mng)
myCallBack=cb
End Sub

End Class

процедура для отправки сообщения в программу
Friend Sub SendText(t as string)
myCallBack.Print t
End Sub





>>>
далее создаем класс в проге:
>>>
Class vivod
Implevents mng
Function print(ByVal texts As String)As String Implements mng.print
...какой то код...
End Function
End Class
>>>

Sub main
Dim mo as myDLL.myObject
mo=New myDLL.myObject

mo.RegisterCallBack new Vivod

Всё, дело сделано.


ЗЫ ДА! и я щя точно не могусказать, но возможно класс придётся сделать

Inherits MarshalByRefObject
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 16.08.2005 (Вт) 8:41

Да , и имей ввиду, что если текст будешь отсылать не в контексте вызова из программы, то печатать наформу его надо через Инвоке(другой поток)
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 17.08.2005 (Ср) 15:35

ага ну вот все работает, отлично
но по поводу инвок,я его применяю,и появляется ошибка "невозможно применить метод инвок для этого элемента управления т.к. не создан дескриптор окна"
Создать дескриптор элемента управления можно с помошью CreateControl или CreatHandle, но немогу применить к своему примеру.
куда беч и читать.
I'm Blind

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 19.08.2005 (Пт) 16:01

ну что много я парился, не получается у меня сообразить по поводу Invoke, пробовал по другому, создавал поток отдельный все работает, но это не подходит. покажите мне как применить Инвоке.
Чтоб его .....
I'm Blind

Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

Сообщение Dmitriy Solomnikov » 19.08.2005 (Пт) 16:03

для какого метода, какого контрола?


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 104

    TopList  
cron