比如说,一个程序是用学号进行查询的。我怎样用另一个vb程序来自动向前面一个程序的文本框了添加学号??

解决方案 »

  1.   

    程序之间的交互建议采用DDE的方法,如:
    打开VB,新建一个工程,选择菜单中的“工程->工程1    属性”,把工程名称改为“P1”,把已有的一个窗体的“LinkTopic”属性改为“FormDDE”,把“LinkMode”    属性改为“1    -    Source”,添加一个PictureBox控件作为DDE执行控件,命名为picDDE。然后添加一个    TextBox控件,命名为“txtInfo”,并把“MultiLine”属性设置为“True”,以便显示多行文本,作为消息显示控件。          
       
    最后在窗体代码区输入以下代码:          
    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      
       
    测试一下:          
                 把工程“P1”编译成EXE文件(设名称为    P1.EXE    )          
                 1、打开“我的电脑”,找到    P1.EXE    并执行。可以看到程序正常运行了。          
                 2、再运行一次,这次新程序没有运行成功,而原来运行的程序却被最大化了,而且文本框中有以下          
                             字符:          
       
    窗体已被最大化          
    你已经第    1次重复调用这个程序。          
    但怕您不多给工资,所以只运行了一个    ^_^          
    最后一次运行这个程序的时间是:00-2-6    7:11:01          
       
                 3、打开    MS-DOS方式    ,用命令行方式再次运行程序,如    “P1    How    Are    You?”          
                             这时原来运行的程序文本框中又多了几行字:          
       
    窗体已被最大化          
    你已经第    2次重复调用这个程序。          
    但怕您不多给工资,所以只运行了一个    ^_^          
    最后一次运行这个程序的时间是:04-2-6    7:14:32          
    新程序曾以命令行形式运行          
    命令行为:          
    How    Are    You?          
       
    OK,运行完全正确,然后你就可以把它应用的你的程序中了。