2011年12月5日 星期一

NDde 的簡易教學 (Client 部份)

DDE 的全名為 Dynamic Data Exchange,主要是用在資料交換用。而今天介紹的 NDde 則是基於 DDE 環境下開發出來的開放源始碼。

透過 NDde 的協助,可以利用 VB.net 等程式語言來接收 DDE 資料,或是架設成 DDE Server 發送資料給其它 DDE Client等。

NDde 的官方網址為:NDde

進入官方網址後可於右方看到 Download 的連結。



這一篇文章將介紹在 VB.net 上使用 NDde 來連結資料,首先將下載的 NDde 壓縮檔解開後,可以在該資料夾內找到 NDde.dll 檔案:

\NDde.2.01.0563.src\NDde\Binary

接下來要在 VB.net 使用的話,那需要先加入這個檔案作參考,接著在程式碼內 Imports NDde.Client

再來先宣告一個 Global 變數:

Private WithEvents DDE As New DdeClient("Excel.exe", "DDE.xls", Me)

上面的紅字代表要使用的 DDE 連結,以上面的例子來講,就是準備接收 Excel 所提供的資料,而 Excel 的檔案名稱為 DDE.xls


而當程式要用到 DDE 前,需先作 DDE 連結:

DDE.Connect()

再來就是 DDE 的註冊和要求資料:


Dim temp As Byte()
Dim temp1 As String

Try
temp = DDE.Request("R1C1", 1, 60000)
temp1 = Encoding.GetEncoding(950).GetString(temp, 0, temp.Length)
label1.Text = temp1
Catch ex As Exception
End Try
Try
DDE.StartAdvise("R1C1", 1, True, 60000)
Catch ex As Exception
End Try


可以看到上面的例子中,先做了 DDE.Request,這個動作是主動要求資料用的, DDE Server 會回傳目前的資料,

而程式中要求的資料為 R1C1 這個欄位,也就是 Excel 內最左上角的欄位。

接下來作的動作是 DDE.StartAdvise,這個動作就是要求 DDE Server 開始在資料有變動時記得把數值「主動」傳送出來。

所以透過 StartAdvise 作完註冊後,我們必需寫一個事件來接收 DDE Server 丟出來的資料:


Private Sub DDE_Advise(ByVal sender As Object, ByVal e As NDde.Client.DdeAdviseEventArgs) Handles DDE.Advise

If e.Item.ToString = "R1C1" Then
label1.Text = e.Text
End If

End Sub


上面這個就是 DDE.Advise 的事件了,每當註冊的資料有變化時,就可以透過這個事件來接收新的資料,上面可以看到先用了

e.Item 來作判斷是不是我們需要的欄位名稱,如果是的話再把資料寫上 Label。


4 則留言:

  1. 請問大大,NDDE可以不透過excel直接連接券商的資料源嗎?

    回覆刪除
  2. http://www.jh-service.com.tw/NDDE.rar

    大大可以按照你目前有的券商,幫我改一下這個網路上抓的程式當範例嗎? 謝謝

    回覆刪除
  3. Email: alen.chang@hotmail.com (MSN)

    回覆刪除
  4. NDDE 可以直接連券商的 DDE 報價連結。msn 我也會加入~再討論吧

    回覆刪除

留言請留下大名~謝謝。

Related Posts Plugin for WordPress, Blogger...