none
VB2008 如何透過DDE 傳遞資料 RRS feed

  • 一般討論

  • 請教各位大大 小弟目前有個軟體應用INTOUCH 與 VB 間做料號庫的聯繫
    INTOUCH部分小弟先不試!單就DDE通訊來做測試

    目前架構如下:

    先撰寫一個程式 抓取 EXCEL Book1.xls 中 A1 欄位的數值變化-->OK

    Imports System.Net
    Imports NDde.Client
    Imports System.Text
    Public Class Form1
        Private WithEvents client As New DdeClient("Excel.exe", "book1.xls", Me)
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
           
            Try
                ' Connect to the server.  It must be running or an exception will be thrown.
                client.Connect()
    
                ' Advise Loop
                ' client.StartAdvise("R1C1", 1, True, 60000)
    
            Catch ex As Exception
                TextBox1.Text = ex.Message
            End Try
    
            Dim temp As Byte()
            Dim temp1 As String
    
            'Excel 欄位對應 : R=行 C=列 Ex: A1=R1C1 B1=R1C2 
    
            Try
                temp = client.Request("R1C2", 1, 60000)
                temp1 = Encoding.GetEncoding(950).GetString(temp, 0, temp.Length)
                Label1.Text = temp1
            Catch ex As Exception
                TextBox1.Text = ex.Message
            End Try
    
            Try
                client.StartAdvise("R1C2", 1, True, 60000)
            Catch ex As Exception
                TextBox1.Text = ex.Message
            End Try
    
        End Sub
    
        Private Sub client_Advise(ByVal sender As Object, ByVal e As NDde.Client.DdeAdviseEventArgs) Handles client.Advise
    
            If e.Item.ToString = "R1C2" Then
                Label1.Text = e.Text
            End If
    
        End Sub
    
    
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    
            ' client.Dispose()
        End Sub
    End Class

    第2步 我想寫另個一個VB程式一樣透過DDE方式 抓取Label1這個元件的值 不知這樣是否可以實現!

    新手上路

    2012年11月27日 上午 06:31

所有回覆

  • 您好,
    有人包裝好了DLL,您可以參考看看哦!
    DDE with VB.Net

    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年11月27日 上午 07:35
  • 我也是參考這個大大的程式在試 ,目前還在對他附的參考網址在理解中

    目前這個連結路徑:("myapp", "mytopic") 中 mytopic 名稱不知該如何下 


    新手上路

    2012年11月27日 上午 07:45
  • 可以考慮使用VSTO和Excel溝通, 再處理Excel.Application.SheetChange事件

    2012年11月27日 上午 09:14
  • intouch 可以撰寫 ActiveX 掛在你的圖控上面

    每天都在複製貼上,什麼時候才能自己寫出來~~哎.....

    2012年11月27日 上午 09:18
  • 其實 我是想了解DDE的用法!

    目前想要的是用VB做資料庫的介面建立料號參數及呼叫料號參數其值讓INTOUCH讀,後再寫入PLC~

    所以圖控的部分是INTOUCH在做!

    所以應該是我用VB將料號資訊讀出後將值丟給INTOUCH 或 INTOUCH 來讀~

    這是初步構想~所以目前嘗試中


    新手上路

    2012年11月27日 上午 11:27
  • TO tihs大大:

    我單純是想知道我用VB寫了A程式去讀BOOK1.xls 指定欄位的變化--這部分是OK的

    那我又寫了B程式想去抓取A程式所取得的值!這是目前想試的部分


    新手上路

    2012年11月27日 上午 11:30
  • 既然 VBNET 拿掉了 DDE 支援,我是覺得不要靠外掛放進來,不然很容易因為封裝遞送的關係,發生記憶體錯誤。

    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    2012年11月28日 下午 04:00
  • 感謝大大們提供的意見!由於是用於INTOUCH8.0版與新建資料庫的資料傳遞!網路上大多是以VB6開發!我想我還是以VB6來試!成功率可能會比較高!


    新手上路

    2012年11月30日 上午 01:44