用Shell()函数可以调用外部EXE文件。也可以使用Win API函数:ShellExecute(),功能更强大,甚至可以执行任意类型的文件(只要该文件有关联程序即可)。

解决方案 »

  1.   

    启动程序有多种方式,最常用的有:WinExec和CreateProcess.其中WinExec更是方便
    的像写批处理文件一样.
    在VB中定一个时钟,一小时后WinExec一下就行了.
    至于关闭这个程序,如果用的是CreateProcess就可以得到此程序的据柄,如果用WinExec
    得不到据柄,但是可以通过FindWindow得到该程序的HWND据柄,postmessage关闭它就行了我用VC的,没用过VB,不过我想原理差不多,应该是一样的吧.
      

  2.   

    ShellExecute()比WinExec()强大的多。比如可以执行.zip文件、.mp3文件、URL、Mailto:等等。
      

  3.   

    补充:
    关于关闭,可以用FindWindow()找到窗口句柄,然后用SendMessage()发送WM_CLOSEQUERY 消息给这个句柄就可以了。
      

  4.   

    我是初学者,请上面二位水平很高请
    Nicrosoft给一个用shell()调用外部exe文件的例子的代码
    条件1怎么满足呢?LJN也来个WinExec的例子吧。
    谢谢!
      

  5.   

    各位:最好把vb1.exe写成ActiveX EXE那样不是什么都可以控制了吗?
      

  6.   

    Shell是VB的函数,调用时:Result=Shell("ABC.EXE")即可。
    ShellExecute是API,Result=ShellExecute(hwnd,"open","ABC.EXE","","",0)关闭程序更正:应该发送WM_ENDSESSIONQUERY消息。
      

  7.   

    shell可以带上运行程序的参数。Shell函数的返回值是否就是它的窗口句柄呢?
      

  8.   

    Shell返回的肯定不是窗口句柄,是什么我忘了。
    ShellExecute返回的是实例句柄。
      

  9.   

    UINT WinExec:
    WinExec("C:\\Windows\\Notepad.exe",SW_SHOW);
    WinExec("C:\\Windows\\Notepad.exe C:\\aa.txt",SW_SHOW);
    WinExec("C:\\...\\IExplorer.exe www.microsoft.com",SW_SHOW);HINSTANCE ShellExecute:
    ShellExecute (NULL,"Open","Some.txt",NULL,NULL);
    ShellExecute (NULL,"Open","www.microsoft.com",NULL,NULL);BOOL CreateProcess 比较麻烦,但是它的功能最强.可以给程序传值,
    控制程序的据柄,制定继承状态等等.在桌面上双击图标打开应用
    程序就是用它实现的.在MSDN中有详细介绍.以上三种函数由简而繁,应按实际情况调用.
      

  10.   

    这是如何关闭的例子
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
    Dim retPrivate Sub Command1_Click()
        ret = Shell("c:\windows\notepad.exe", 1)
    End SubPrivate Sub Command2_Click()
        Dim x As Long
        x = OpenProcess(0, False, ret)
        Dim ret2 As Long
        ret2 = TerminateProcess(x, 0)
        ret2 = CloseHandle(x)
    End Sub
      

  11.   

    使用AppActivate来击活vb1.exe的窗口
    方法:
         AppActivate title   'title是vb1.exe的窗体标题
      

  12.   

    各位,程序从系统开始时就运行vb2.exe,而vb2.exe的功能是每隔一小时自动运行一次vb1.exe,然后等5分钟关闭这个程序,一小时后再...循环知道下午5:00终止vb2.exe
    实际上,vb2.exe每天一直在运行,而vb1.exe每隔一小时运行一次,5分钟就结束vb1
    所以:
    这两个程序都不能有command_click()这样还要有人来点击的事件.
    我的目的很明显,自动执行,到时间终止。
    这样吧,谁能很快给我vb2的原始文件和代码?我来不及了。
    100分买vb2程序。hurry please!!!!just today!!
      

  13.   

    用Timer控件定时就可以了。在OnTimer事件里监测系统时间
      

  14.   

    1。在一个程序里用Timer控件,每隔5秒或10秒发生一次OnTimer事件;
    2。在OnTimer中监视系统时间,有两种方式:指定日历时间或从运行时累计;
    3。满足激活其它程序条件时,调用ShellExecute函数;
    4。这是一个典型的计划和任务程序,可以将控制程序放入“启动”中;
    5。也可以在windows“计划任务”中完成;
    6。任何基于windows的程序,控制机理基本一致。非Windows程序原理相似。
      

  15.   

    以上各位都很对,特别是wangmingfu!
      

  16.   

    用WINAPI 函数CreateProcess即可搞掂。