如果是重复运行的话就把command发送过去就可以了
程序只运行一个实例,再次双击时把前一个激活的功能怎么实现
动态数据交换技术DDE
faq-it.org/asm/
打开VB,新建一个工程,选择菜单中的“工程->工程1属性”,把工程名称改为“P1”,把已有的一个窗体的“LinkTopic”属性改为“FormDDE”,把“LinkMode”属性改为“1-Source”,添加一个PictureBox控件作为DDE执行控件,命名为picDDE。然后睁胡添加一个TextBox控件,命名为“txtInfo”,并把“MultiLine”属性设置为“True”,以便显示多行文本,作为消息显示控件。
最后在窗体代码区输入以下代码:
ConstCOMMANDLINE="CommandLine="注释:还是为了省事,定义一个常量
PrivateSubForm_LinkExecute(CmdStrAsString,CancelAsInteger)
StaticlngCountAsLong
DimInfoAsString
Info=txtInfo.Text注释:保留原有信息
SelectCaseCmdStr注释: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 "但怕您不多给工资,所以只运行了一个^_^"
EndSelect
IfLeft(CmdStr,Len(COMMANDLINE))=COMMANDLINEThen
Info=Info vbNewLine "新程序曾以命令行形式运行" vbNewLine "命令行为:"_
vbNewLine Right(CmdStr,Len(CmdStr)-Len(COMMANDLINE))
EndIf
txtInfo.Text=Info注释:把信息显示出来
Cancel=False
EndSub
PrivateSubLinkAndSendMessage(ByValMsgAsString)
DimtAsLong
picDDE.LinkMode=0注释:--
picDDE.LinkTopic="P1&ampbrvbarFormDDE"注释:&ampbrvbar______连接DDE程序并发送数据/参数
picDDE.LinkMode=2注释:&ampbrvbar “&ampbrvbar”为管道符,是“退格键”旁边的竖线,
picDDE.LinkExecuteMsg注释:--不是字母或数字!
t=picDDE.LinkTimeout注释:--
picDDE.LinkTimeout=1注释:&ampbrvbar______终止DDE通道。当然,也可以用别的方法
picDDE.LinkMode=0注释:&ampbrvbar 这里用的是超时强制终止的方法
picDDE.LinkTimeout=t注释:--
EndSub
PrivateSubForm_Load()
IfApp.PrevInstanceThen注释:程序是否已经运行
Me.LinkTopic=""注释:这两行用于清除新运行的程序的DDE服务器属性,
Me.LinkMode=0注释:否则在连接DDE程序时会出乱子的
LinkAndSendMessage"Max"注释:--
LinkAndSendMessage"Count"注释:&ampbrvbar-----连接DDE接受程序并传送数据/参数
LinkAndSendMessage"ShowTime"注释:--
IfCommand<> ""Then注释:如果有命令行参数,就传递过去
LinkAndSendMessageCOMMANDLINE Command
EndIf
End注释:结束新程序的运行
EndIf
EndSub
测试一下:
把工程“P1”编译成EXE文件(设名称为P1.EXE)
1、打开“我的电脑”,找到P1.EXE并执行。可以看到程序正常运行了。
2、再运行一次,这次新程序没有运行成功,而原来运行的程序却被最大化了,而且文本框中有以下
字符:
窗体已被最大化
你已经第1次重复调用这个程序。
但怕您不多给工资,所以只运行了一个^_^
最后一次运行这个程序的时间是:00-2-67:11:01
3、打开MS-DOS方式,用命令行方式再次运行程序,如“P1HowAreYou?”
这时原来运行的程序文本框中又多了几行字:
窗体已被最大化
你已经第2次重复调用这个程序。
但怕您不多给工资,所以只运行了一个^_^
最后一次运行这个程序的时间是:00-2-67:14:32
新程序曾以命令行形式运行
命令行为:
HowAreYou?
OK,运行完全正确,然后你就可以把它应用的你的程序中了。
1. 用VB新建镇哪一个此橘标准EXE程序
2. 用 Lable 、TextBox 和 CommandButton 控件在窗体中设计界面如下:
3. 双击“抽取”按钮,并在代码窗御扒码口中修改代码如下:
Private Sub Command1_Click()
Dim v1 As Long, v2 As Long, v3 As Long
v1 = Val(Text1)
v2 = Val(Text2)
v3 = Int(Rnd(1) * (v2 - v1 + 1)) + v1
Text3.Text = v3
End Sub
4.按F5运行,并进行测试即可
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)