PDA

View Full Version : ارسال اطلاعات از درون يك dll



jalalnooritehrani
یک شنبه 10 آذر 1387, 10:16 صبح
چطور ميتوان از درون يك dll به لايه هاي بالاتر يك دستور يا يك استرينگ ارسال كرد

jalalnooritehrani
چهارشنبه 13 آذر 1387, 12:59 عصر
كسي اطلاعاتي ندارد

mostafaaa
چهارشنبه 13 آذر 1387, 13:13 عصر
سلام دوست من
واقعیتش من منظورتون رو درست نفهمیدم.
یه مقدار توضیح بده که برنامت چیه و چیکار میخوای بکنی.
آیا منظورت اینه که اون Dll ایونت داشته باشه؟ که زمانی که اون ایونت فرخانی میشه یه مقدار هم همراهش به برنامت ارسال بشه ؟
اگه اینطوره که کاری نداره . بگو تا برات توضیح بدم.

jalalnooritehrani
پنج شنبه 14 آذر 1387, 09:45 صبح
ببين دوست عزيز
من در برنامه يك پراپرتي (p0) يا يك ايونت (e0) يا يك متغير (m0) دارم
وقتي dll را فراخواني ميكنم
ميخواهم از درون آن dll وقتي يك پراپرتي (p1) يك يك ايونت (e1) يا يك متغير (m1) تغيير ميكنه يا يك ايونت اجرا ميشه
پراپرتي (p0) يا ايونت (e0) يا متغير (m0) متوجه تغيير بشه

نميخواهم مدام چك كنم كه مقدار dll‌تغيير كرده يا نه
اميداورم منظور را ارائه كرده باشم

mostafaaa
پنج شنبه 14 آذر 1387, 10:23 صبح
سلام دوست من
فرض میکنیم که کلاس درون DLL به این شکله

Public Class DllSample
Delegate Sub MyDelegate(ByVal P1 As String, ByVal M1 As String)
Public Event E1 As MyDelegate
Private _M1 As String
Public Sub Start(ByVal int As Integer)
For i As Integer = 0 To 10000
int += i
_M1 = int
Next
RaiseEvent E1(P1, _M1)
End Sub
Public ReadOnly Property P1() As String
Get
Return _M1
End Get
End Property
End Class
یه دلگیت تعریف کردیم که خروجیهامون رو عضوش کردیم و یه Event که یه نمونه از Delegate مربوطه رو به برنامه پاس میده.
توی برنامه هم به این شکل استفاده میکنی ازش

Private WithEvents InstanceDLL As New DllSample
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
InstanceDLL.Start(12)
End Sub
Private Sub InstanceDLL_E1(ByVal P1 As String, ByVal M1 As String) Handles InstanceDLL.E1
MsgBox(P1)
MsgBox(M1)
End Sub