- Const COMMANDLINE = "CommandLine=" ' 还是为了省事,定义一个常量
- Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)
- Static lngCount As Long
- Dim Info As String
- Info = txtInfo.Text ' 保留原有信息
- Select Case CmdStr ' CmdStr 是DDE程序传送过来的参数
- Case "Max"
- Me.WindowState = 2
- Info = Info + vbNewLine + "窗体已被最大化"
- Case "ShowTime"
- Info = Info + vbNewLine + "最后一次运行这个程序的时间是:" + Str(Now)
- Case "Count"
- lngCount = lngCount + 1
- Info = Info + vbNewLine + "你已经第" + Str(lngCount) + "次重复调用这个程序。" _
- + vbNewLine + "但怕您不多给工资,所以只运行了一个 ^_^"
- End Select
- If Left(CmdStr, Len(COMMANDLINE)) = COMMANDLINE Then
- Info = Info + vbNewLine + "新程序曾以命令行形式运行" + vbNewLine + "命令行为:" _
- + vbNewLine + Right(CmdStr, Len(CmdStr) - Len(COMMANDLINE))
- End If
- txtInfo.Text = Info ' 把信息显示出来
- Cancel = False
- End Sub
- Private Sub LinkAndSendMessage(ByVal Msg As String)
- Dim t As Long
- picDDE.LinkMode = 0 '--
- picDDE.LinkTopic = "P1|FormDDE" ' |______连接DDE程序并发送数据/参数
- picDDE.LinkMode = 2 ' | “|”为管道符,是“退格键”旁边的竖线,
- picDDE.LinkExecute Msg '-- 不是字母或数字!
- t = picDDE.LinkTimeout '--
- picDDE.LinkTimeout = 1 ' |______终止DDE通道。当然,也可以用别的方法
- picDDE.LinkMode = 0 ' | 这里用的是超时强制终止的方法
- picDDE.LinkTimeout = t '--
- End Sub
- Private Sub Form_Load()
- If App.PrevInstance Then ' 程序是否已经运行
- Me.LinkTopic = "" ' 这两行用于清除新运行的程序的DDE服务器属性,
- Me.LinkMode = 0 ' 否则在连接DDE程序时会出乱子的
- LinkAndSendMessage "Max" '--
- LinkAndSendMessage "Count" ' |-----连接DDE接受程序并传送数据/参数
- LinkAndSendMessage "ShowTime" '--
- If Command <> "" Then ' 如果有命令行参数,就传递过去
- LinkAndSendMessage COMMANDLINE + Command
- End If
- End ' 结束新程序的运行
- End If
- End Sub
- //该片段来自于http://www.codesnippet.cn/detail/12122012943.html
来源: http://www.codesnippet.cn/detail/12122012943.html