求高手,VB6中Main方法可不可以有返回值,如果有,怎么实现

hylang06 2008-01-03 09:23:51
如题,在线等
...全文
353 28 打赏 收藏 举报
写回复
28 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hylang06 2008-01-16
UP....散分结账
  • 打赏
  • 举报
回复
toury 2008-01-15
给你的例子就是VB6的呀;只不过是借用了论坛里编辑器的"VB.NET"代码插入格式而已.呵呵
  • 打赏
  • 举报
回复
hylang06 2008-01-15
回复楼上:

动态数据交换 (DDE) 是在 Visual Basic 3.0 的应用程序之间启用信息交换的早期技术。在 Visual Basic 的较新版本中,DDE 被替换为 OLE 自动化;但为了向后兼容,直到 Visual Basic 6.0 版仍然支持 DDE。

引入 Visual Basic .NET 2002 后,不再支持 DDE。需要与仅支持 DDE 的旧式应用程序交换信息的 Visual Basic 应用程序应保留在 Visual Basic 6.0 中。

---
不知toury兄台是如何强制使用的
  • 打赏
  • 举报
回复
hylang06 2008-01-15
回复楼上:

动态数据交换 (DDE) 是在 Visual Basic 3.0 的应用程序之间启用信息交换的早期技术。在 Visual Basic 的较新版本中,DDE 被替换为 OLE 自动化;但为了向后兼容,直到 Visual Basic 6.0 版仍然支持 DDE。

引入 Visual Basic .NET 2002 后,不再支持 DDE。需要与仅支持 DDE 的旧式应用程序交换信息的 Visual Basic 应用程序应保留在 Visual Basic 6.0 中。

---
不知toury兄台是如何强制使用的
  • 打赏
  • 举报
回复
toury 2008-01-11
用DDE吧;
帮你写了个示例,只是一个框架,没做任何容错;你参考一下吧;

'程序1:
添加一个FORM,两个BUUTON按钮Command1、Command2
Option Explicit

Private Sub Command1_Click()
Shell App.Path & "\Project2.exe /1"
End Sub

Private Sub Command2_Click()
Shell App.Path & "\Project2.exe /2"
End Sub

Private Sub Form_Load()
Command1.Caption = "调用EXE2功能1"
Command2.Caption = "调用EXE2功能2"
End Sub

'=====================================
'程序2:
'添加 FORM1:一个PICTURE控件name=picDDE
'添加 frmMain:一个TEXTBOX控件
'添加一个MODULE
-------------
'FORM1代码:
Option Explicit

Private Sub Form_LinkExecute(ByRef CmdStr As String, Cancel As Integer)
With frmMain
Select Case CmdStr
Case "/1": .aaa
Case "/2": .bbb
End Select
End With
Cancel = False
End Sub
Private Sub Form_Load()

ccc = Command
If Len(ccc) > 0 Then
If App.PrevInstance Then
Me.LinkTopic = "": Me.LinkMode = 0 '
Me.Caption = "NEWSTART"
LinkAndSendMessage ccc
End
Else
Call Main
End If
Else
If App.PrevInstance Then Unload Me Else Call Main
End If
End Sub
Private Sub LinkAndSendMessage(ByVal Msg As String)
Dim t&

picDDE.LinkMode = 0
picDDE.LinkTopic = App.EXEName & "|FormDDE"
picDDE.LinkMode = 2
picDDE.LinkExecute Msg

t = picDDE.LinkTimeout
picDDE.LinkTimeout = 1
picDDE.LinkMode = 0
picDDE.LinkTimeout = t
End Sub
'--------------------------------
'frmMain代码

Option Explicit

Public Sub aaa()
Text1 = "第2个程序的功能1"
End Sub
Public Sub bbb()
Text1 = "第2个程序的功能2"
End Sub

Private Sub Form_Load()
Me.Show
End Sub

Private Sub Form_Unload(Cancel As Integer)
End
End Sub
'-----------------------------
'MODULE代码
Option Explicit
Public ccc$

Sub Main()
Select Case ccc
Case "/1": frmMain.aaa
Case "/2": frmMain.bbb
Case Else: frmMain.Show
End Select
End Sub

  • 打赏
  • 举报
回复
hylang06 2008-01-11
个人方法:
在第2个.exe先定义一个变量,分配一个内存空间,然后将这个变量的指针传给第一个exe
第一个exe将指针赋予新的结果.然后第2个.exe读取这个指针的值...
请高手指教,是否可行(因为尚未成功).代码如下...
第2个.exe代码:
Dim pc As Long
Dim c As Byte
c = AscB("B")
Debug.Print c
pc = Trim(VarPtr(c))

Shell "E:\Chengxu\VB\activebar2\aaa.exe " & pc
Dim kk As Byte
CopyMemory kk, pc, 1 '用指针取值
Debug.Print kk

第1个.exe代码:
Sub Main()
Dim pc As Long
pc = CLng(Command$())
Dim c As Byte
c = AscB("T")
Debug.Print c
CopyMemory pc, AscB("A"), 1
CopyMemory c, pc, 1 '用指针取值
Debug.Print c
End Sub
  • 打赏
  • 举报
回复
hylang06 2008-01-11
回复21楼..
我要的不是程序是否运行完成的返回值情况.而是自己设定的返回值进行判断...
在线等...
  • 打赏
  • 举报
回复
tantaiyizu 2008-01-08
你up什么呀? 19楼的方案不可行吗?
  • 打赏
  • 举报
回复
hylang06 2008-01-08
UP
  • 打赏
  • 举报
回复
tantaiyizu 2008-01-07
有这么麻烦吗?

用 shell啊 ,shell.exec 方法去运行一个程序 ,那么可以知道它是否运行完毕的!
别说用 vb 了 ,用一个 vbs 就搞定了 。。。
  • 打赏
  • 举报
回复
hylang06 2008-01-07
同意15楼....
希望会的兄弟能给个具体的例子.
至少给出一个函数来吧...我们不相信原理...
  • 打赏
  • 举报
回复
东方之珠 2008-01-06
进程通信里边有
  • 打赏
  • 举报
回复
zhizlm 2008-01-06
r_swordsman
取什么样的昵称才有个性又能显示出来而且不能太长?
等 级:
发表于:2008-01-05 08:54:2414楼 得分:0
具体功能:有一个exe的VB程序实现某一个功能.而另外一个exe需要针对这个exe的执行情况启动不同的线程...
可以通过对第一个exe的主函数返回值分析判断....

-------------------
超简单...使用共享内存就可以了



既然这么简单,老大你给个例子~~
  • 打赏
  • 举报
回复
lorl2 2008-01-06
是不是想置进程退出码?
在要准备END程序的时候,CALL ExitProcess 吧
  • 打赏
  • 举报
回复
r_swordsman 2008-01-05
具体功能:有一个exe的VB程序实现某一个功能.而另外一个exe需要针对这个exe的执行情况启动不同的线程...
可以通过对第一个exe的主函数返回值分析判断....

-------------------
超简单...使用共享内存就可以了
  • 打赏
  • 举报
回复
还想懒够 2008-01-04
Timer + ActiveX Dll
ActiveX OCX
  • 打赏
  • 举报
回复
hylang06 2008-01-04
回楼上:
能把方法具体一下吗?谢过..
  • 打赏
  • 举报
回复
hylang06 2008-01-04
希望兄弟们能给个具体的例子.
至少给出一个函数来吧...我们不相信原理...
  • 打赏
  • 举报
回复
楼主找找进程通信方面的文章看看,其实有很多方法可用。
  • 打赏
  • 举报
回复
dhsclp 2008-01-03
应该是不可以的,VB6中的SUB是没法返回值的,不知楼主想要实现什么功能,建议使用全局变量。
  • 打赏
  • 举报
回复
加载更多回复(7)
VB基础类

7617

社区成员

VB 基础类
社区管理员
  • VB基础类社区
加入社区
帖子事件
创建了帖子
2008-01-03 09:23
社区公告
暂无公告