{"id":2083,"date":"2014-11-19T21:11:08","date_gmt":"2014-11-19T21:11:08","guid":{"rendered":"https:\/\/alt2.minisoft.com\/support\/?p=2083"},"modified":"2017-01-22T06:18:24","modified_gmt":"2017-01-22T06:18:24","slug":"dde-to-visual-basic","status":"publish","type":"post","link":"https:\/\/c002.minisoft.com\/support\/dde-to-visual-basic\/","title":{"rendered":"DDE to Visual Basic"},"content":{"rendered":"<p>This sample illustrates the use of DDE and Visual Basic to control a variety of Emulator functions. It includes: connection, logon and off, and generic command functions.<\/p>\n<p><strong>Contents of DDE_4.BAS<\/strong><\/p>\n<pre>Option Explicit\r\n\r\n' LinkMode (forms and controls)\r\nGlobal Const NONE = 0\r\nGlobal Const LINK_MANUAL = 2\r\n\r\n' Run time errors\r\nGlobal Const NO_APP_RESPONDED = 282\r\n\r\nGlobal Const MB_YESNO = 4\r\nGlobal Const MB_ICONQUESTION = 32\r\nGlobal Const IDYES = 6<\/pre>\n<hr size=\"1\" \/>\n<p><strong>Contents of DDE_4.FRM<\/strong><\/p>\n<pre>Option Explicit\r\nOption Compare Text\r\n'\r\nDim appChangeFlag As Integer\r\nDim Connected As Integer\r\nDim CheckFlag As Boolean\r\n'\r\n\r\nPrivate Sub cboAppName_Click()\r\n    If Connected Then cmdConnect.Value = True\r\nEnd Sub\r\n\r\nPrivate Sub cboAppName_LostFocus()\r\n    If appChangeFlag Then\r\n        appChangeFlag = False\r\n        If Connected Then cmdConnect.Value = True\r\n    End If\r\nEnd Sub\r\n\r\nPrivate Sub cboExecuteString_Change()\r\n    cmdExecute.Enabled = (Len(cboExecuteString.Text) &gt; 0)\r\nEnd Sub\r\n\r\nPrivate Sub cboExecuteString_Click()\r\n    cmdExecute.Enabled = (Len(cboExecuteString.Text) &gt; 0)\r\nEnd Sub\r\n\r\nPrivate Sub cboItem_Change()\r\nOn Error Resume Next\r\n    txtData.LinkItem = cboItem.Text\r\nEnd Sub\r\n\r\nPrivate Sub cboItem_Click()\r\n    txtData.LinkItem = cboItem.Text\r\nEnd Sub\r\n\r\nPrivate Sub Check1_Click()\r\nOn Error Resume Next\r\n    If Check1.Value = 0 Then\r\n        CheckFlag = False\r\n    Else\r\n        CheckFlag = True\r\n    End If\r\nEnd Sub\r\n\r\nPrivate Sub cmdConnect_Click()\r\n    If Not Connected Then\r\n        txtData.Text = \"\"\r\n        Select Case MakeConnection()\r\n            Case 0\r\n                ConnectState True\r\n            Case NO_APP_RESPONDED\r\n                MsgBox \"Sorry, can't connect.\"\r\n        End Select\r\n    Else\r\n        Disconnect txtData\r\n        ConnectState False\r\n    End If\r\nEnd Sub\r\n\r\nPrivate Sub CmdExecute_Click()\r\n    Execute_Sub (cboExecuteString.Text)\r\nEnd Sub\r\n\r\nPrivate Sub cmdExit_Click()\r\n    Unload frmMain\r\n    End\r\nEnd Sub\r\n\r\nPrivate Sub cmdLogin_Click()\r\nDim tMousePointer As Integer\r\n    tMousePointer = Screen.MousePointer\r\n    Screen.MousePointer = 11\r\n    Execute_Sub (\"SEND \"\"HELLO \" &amp; Text1.Text &amp; \"\"\"\")\r\n    If (Trim(Text2.Text) &lt;&gt; \"\") Then\r\n        Execute_Sub (\"WAIT 00:00:02 FOR \"\"^Q\"\"\")\r\n        Execute_Sub (\"SEND \"\"\" &amp; Text2.Text &amp; \"\"\"\")\r\n    End If\r\n    If (Trim(Text3.Text) &lt;&gt; \"\") Then\r\n        Execute_Sub (\"WAIT 00:00:02 FOR \"\"^Q\"\"\")\r\n        Execute_Sub (\"SEND \"\"\" &amp; Text3.Text &amp; \"\"\"\")\r\n    End If\r\n    Screen.MousePointer = tMousePointer\r\nEnd Sub\r\n\r\nPrivate Sub cmdLogout_Click()\r\n    Execute_Sub (\"SEND BYE\")\r\nEnd Sub\r\n\r\nPrivate Sub cmdPoke_Click()\r\nOn Error Resume Next\r\n    txtData.LinkPoke\r\n    If Err Then MsgBox Error\r\nEnd Sub\r\n\r\nPrivate Sub cmdRequest_Click()\r\nOn Error Resume Next\r\n    txtData.LinkRequest\r\nEnd Sub\r\n\r\nPrivate Sub ConnectState(State As Integer)\r\nDim i As Integer\r\n    If State Then\r\n        cmdConnect.Caption = \"Disconnect\"\r\n    Else\r\n        cmdConnect.Caption = \"Connect\"\r\n    End If\r\n        \r\n    Connected = State\r\n    cmdRequest.Enabled = State\r\n    cmdPoke.Enabled = State\r\nEnd Sub\r\n\r\nPrivate Function CreateLink(Ctl As Control, appname As String, item \r\nAs String) As Integer\r\nOn Error Resume Next\r\n    Ctl.LinkMode = NONE\r\n    Ctl.LinkTopic = appname &amp; \"|S92\"\r\n    Ctl.LinkItem = item\r\n    Ctl.LinkMode = LINK_MANUAL\r\n    CreateLink = Err\r\n    If Err = 0 Then\r\n        Ctl.LinkRequest\r\n    End If\r\nEnd Function\r\n\r\nPrivate Sub Disconnect(Ctl As Control)\r\nDim tempTimeOutVal\r\nOn Error Resume Next\r\n    tempTimeOutVal = Ctl.LinkTimeout\r\n    Ctl.LinkTimeout = 1\r\n    Ctl.LinkMode = NONE\r\n    Ctl.LinkTimeout = tempTimeOutVal\r\nEnd Sub\r\n\r\nPrivate Sub Execute_Sub(cmdstr As String)\r\nOn Error Resume Next\r\nDim tLinkItem As String\r\nDim tText As String\r\nDim tcmdOK As Integer\r\nDim tcmdCancel As Integer\r\nDim tMousePointer As Integer\r\n    If (Len(Trim(cmdstr)) &lt; 1) Then Exit Sub\r\n    \r\n    tLinkItem = frmMain.txtData.LinkItem\r\n    tText = frmMain.txtData.Text\r\n    tcmdOK = cmdExecute.Enabled\r\n    tMousePointer = Screen.MousePointer\r\n\r\n    frmMain.txtData.LinkItem = \"BUSYFLAG\"\r\n    frmMain.txtData.Text = \"Done\"\r\n    frmMain.txtData.LinkPoke\r\n    frmMain.txtData.Text = \" \"\r\n    Screen.MousePointer = 11\r\n    cmdExecute.Enabled = False\r\n    \r\n    frmMain.txtData.LinkExecute cmdstr\r\n    \r\n    If CheckFlag Then\r\n        While (frmMain.txtData.Text &lt;&gt; \"Done\")\r\n            frmMain.txtData.LinkRequest\r\n        Wend\r\n    End If\r\n    frmMain.txtData.LinkItem = tLinkItem\r\n    frmMain.txtData.Text = tText\r\n    cmdExecute.Enabled = tcmdOK\r\n    Screen.MousePointer = tMousePointer\r\nEnd Sub\r\n\r\nPrivate Sub Form_Load()\r\n    cboAppName.AddItem \"MS92\"\r\n    cboExecuteString.AddItem \"SEND LISTF A@\"\r\n    cboExecuteString.AddItem \"SEND SHOWME\"\r\n    cboExecuteString.AddItem \"SEND HELLO MGR.MINISOFT\"\r\n    CheckFlag = False\r\nEnd Sub\r\n\r\nPrivate Sub Form_Unload(Cancel As Integer)\r\n    Disconnect txtData\r\nEnd Sub\r\n\r\nPrivate Function MakeConnection() As Integer\r\nDim ConnectTxt As Integer\r\n    ConnectTxt = CreateLink(txtData, (cboAppName.Text), \r\n (cboItem.Text))\r\n    \r\n    If ConnectTxt = NO_APP_RESPONDED Then\r\n        MakeConnection = NO_APP_RESPONDED\r\n    ElseIf ConnectTxt = 0 Then\r\n        MakeConnection = 0\r\n    Else\r\n        MakeConnection = ConnectTxt\r\n    End If\r\nEnd Function\r\n\r\nPrivate Sub txtData_LinkClose()\r\n    ConnectState False\r\nEnd Sub\r\n\r\nPrivate Sub txtData_LinkError(LinkErr As Integer)\r\nDim Msg\r\n    Select Case LinkErr\r\n        Case 1\r\n            Msg = \"Data in wrong format.\"\r\n        Case 6\r\n            Msg = \"Error # 6.\"\r\n        Case 7\r\n            Msg = \"Error # 7.\"\r\n        Case 8\r\n            Msg = \"Error # 8.\"\r\n        Case 11\r\n            Msg = \"Out of memory for DDE.\"\r\n    End Select\r\n    MsgBox Msg, 48, \"MyTextBox\"\r\nEnd Sub<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>This sample illustrates the use of DDE and Visual Basic to control a variety of Emulator functions. It includes: connection, logon and off, and generic command functions. Contents of DDE_4.BAS Option Explicit &#8216; LinkMode (forms and controls) Global Const NONE = 0 Global Const LINK_MANUAL = 2 &#8216; Run time errors Global Const NO_APP_RESPONDED = [&hellip;]<\/p>\n","protected":false},"author":75,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55,62],"tags":[],"_links":{"self":[{"href":"https:\/\/c002.minisoft.com\/support\/wp-json\/wp\/v2\/posts\/2083"}],"collection":[{"href":"https:\/\/c002.minisoft.com\/support\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/c002.minisoft.com\/support\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/c002.minisoft.com\/support\/wp-json\/wp\/v2\/users\/75"}],"replies":[{"embeddable":true,"href":"https:\/\/c002.minisoft.com\/support\/wp-json\/wp\/v2\/comments?post=2083"}],"version-history":[{"count":3,"href":"https:\/\/c002.minisoft.com\/support\/wp-json\/wp\/v2\/posts\/2083\/revisions"}],"predecessor-version":[{"id":2086,"href":"https:\/\/c002.minisoft.com\/support\/wp-json\/wp\/v2\/posts\/2083\/revisions\/2086"}],"wp:attachment":[{"href":"https:\/\/c002.minisoft.com\/support\/wp-json\/wp\/v2\/media?parent=2083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/c002.minisoft.com\/support\/wp-json\/wp\/v2\/categories?post=2083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/c002.minisoft.com\/support\/wp-json\/wp\/v2\/tags?post=2083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}