用OSQL执行SQL脚本时,在执行过程中,OSQL不能碰否则程序就终止了,想请教有没有用过的朋友,知道如何屏蔽掉OSQL的窗口,不让操作人能碰?

解决方案 »

  1.   

    WinExec('osql ...', SW_HIDE);
      

  2.   

    如何屏蔽掉OSQL执行时的窗口
      

  3.   

    这是我的
    LaunchApp('isql -U'+UserName+' -P'+PassWord+' -S'+Trim(SerName)+' -d'+Trim(DBName)
                +' -iDBUser.sql'+' -oError.txt -n ','',False,True);
    //执行处部可执行文件
    Function LaunchApp(pExePath,WorkDir:String;ShowWindow,WaitFlag:Boolean):Boolean;
    var ExePath : array[0..512] of char;
        StartupInfo:TStartupInfo;
        ProcessInfo:TProcessInformation;
    begin
      StrPCopy(exePath, pExePath);
      FillChar(StartupInfo,Sizeof(StartupInfo),#0);
      StartupInfo.cb := Sizeof(StartupInfo);
      StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
      if ShowWindow then
        StartupInfo.wShowWindow := 1
      else
        StartupInfo.wShowWindow := 0;
      if not CreateProcess(nil,
                          ExePath,
                          nil,
                          nil,
                          false,
                          CREATE_NEW_CONSOLE or
                          NORMAL_PRIORITY_CLASS,
                          nil,
                          nil,
                          StartupInfo,
                          ProcessInfo) then  begin
        Result:=False;
        Exit;
      end else begin
        if WaitFlag then
          while WaitforSingleObject(ProcessInfo.hProcess,1000)=WAIT_TIMEOUT do begin
            Application.ProcessMessages;
          end;
          //WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
        Result:=True;
      end;
    end;