winexec
shellexecute
createprocess

解决方案 »

  1.   

     WinExec('c:\autoexec.bat',Sw_ShowNormal);
     ShellExecute(0,nil,'c:\1.exe','-a -r',nil,SW_SHOW);
     CreateProcess('c:\1.exe','-a -r',nil,nil,False,CREATE_NEW_PROCESS_GROUP,nil,nil,Startinfo,ProcessInfo)
     
      

  2.   

    在win32下一般用shellexecute和createprocess
    winexec是为了兼容win16而留下的函数
      

  3.   

    高手呀,谢谢.
    winexec
    shellexecute
    createprocess 
    3个函数有什么差别呢?谢谢.
      

  4.   

    我用
    ShellExecute(Application.Handle,nil,'pgn.bat','0','pgn.bat', 0);
    每运行dos下的一个.bat文件后,按ctrl+alt+del总是发现一些winoldap,
    请问如何能不出现这些东西
    pgn.bat的内容为
    MODE COM1 96,N,8,1
    COPY KILL.pll COM1
    copy  OutGndpdy.lp   COM1
      

  5.   

    把这个SW_SHOW设为SW_Hide,看看如何!
      

  6.   

    不行,还是出现winoldap,
    说明一下,我的程序没有窗体,所有代码放在一个工程文件中
      

  7.   

    setwindowlong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW)
      

  8.   

    我也遇到过winoldap的情况,那是用winexec的时候,如果你用CREATEPROCESS在用EXITPROCESS就能避免出现着这个问题
      

  9.   

    可以添加application.mainform.hide试一试
      

  10.   

    只有一个工程文件,源代码如下,pgn.bat文件的内容在上面发过了
    program gjdpdy;
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls,ExtCtrls,ShellAPI;
    {$R *.RES}
    begin
    ShellExecute(Application.Handle,nil,'pgn.bat','0','pgn.bat', 0);
    end.
      

  11.   

    MODE COM1 96,N,8,1  //mode是什么东西? 
    COPY KILL.pll COM1  //kill.pll是什么东西? 
    copy  OutGndpdy.lp  COM1  //outgunpdy.lp是什么东西? 
      

  12.   

    pgn.bat文件说明
    MODE COM1 96,N,8,1  //设置com1口连接打印机96为波特率9600,数据位8,奇偶校检无N,停止位1
    COPY KILL.pll COM1  //kill.pll是传到打印机的第一个文件(相当于一个txt文件)
    copy  OutGndpdy.lp  COM1  //outgunpdy.lp是传到打印机的第二个文件(相当于一个txt文件)
      

  13.   

    我认为问题出在这一行,但是不知怎么改,请大家多出表一下自己的意见。谢谢!
    ShellExecute(Application.Handle,nil,'pgn.bat','0','pgn.bat', 0);
      

  14.   

    我现在在NT/98下用WinExec定时执行一个.bat文件,也会看到winoldap在任务中,但过一阵子会自己结束啊,甚至定时太短,同时有多个winoldap在任务中时过一会都会自动结束,不会影响我的程序,不知你的是否不能自动结束?还有我想你用CREATEPROCESS在用EXITPROCESS应该可以避免这个问题,不过我没试过。
      

  15.   

    估计winoldap这个任务是windows启动16位的dos程序自动启动的任务,这个任务的作用是模拟dos环境。
      

  16.   

    用SendMessage(Findwindow('tty',nil'),wm_close,0,0)就可以关闭他了。
      

  17.   

    SendMessage(Findwindow('tty',nil'),wm_close,0,0);
    出错
    改为
    SendMessage(Application.Handle,wm_close,0,0);
    后还是出现winoldap
      

  18.   

    WinExec('a.bat' ,0) //0隐藏运行 
      

  19.   

    简单:在你的bat文件的文件头加一行:@echo off
    再试试
      

  20.   

    WinExec('a.bat' ,0)  不行
    @echo off也不行
    还是出现winoldap
     
      

  21.   

    关键是winoldap是否会自动关掉,我用WinExec会自动退出啊,若会退出,则没有任何问题啊。
      

  22.   

    to 11830(其其):你的winoldap会不会自己退出?
      

  23.   

    看来我的跟你的不同,你还是啃啃如何用CREATEPROCESS,EXITPROCESS实现吧.若实现了,麻烦贴出来,让我观摩观摩.
      

  24.   

    WinExec好象是启动DOS的最好方式,SHELLEXECUTE应该作为WINDOWS程序的最好调用!!
      

  25.   

    winexec("C:\Program Files\Windows Media Player\MPLAYER2.EXE  avseq01.dat",1);