我做程序有很多小模块,而每一个小模块都由不同的人员所开发.他们提供的也是一些已编译好的exe文件,请问各位大虾,怎样通过代码直接调用已编译好的a.exe?

解决方案 »

  1.   

    格式如winexec('D:\Job\Trade\TradeSys.exe',0);
      

  2.   

    uses shellapi
    ShellExecute()
      

  3.   

    据查《Delphi之未经证实的葵花宝典version 2.7》
    方法有二:
    1、WinExec('a.exe',SW_SHOW); 
    2、自己写函数
    Function WinExecExW(cmd:pchar;visiable:integer):DWORD;
    var
     StartupInfo:TStartupInfo;
     ProcessInfo:TProcessInformation;
    begin
     FillChar(StartupInfo,SizeOf(StartupInfo),#0);
     StartupInfo.cb:=SizeOf(StartupInfo);
     StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
     StartupInfo.wShowWindow:=visiable;
     if not CreateProcess(nil,cmd,nil,nil,false,Create_new_console or Normal_priority_class,nil,nil,StartupInfo,ProcessInfo) then
       result:=0
     else
     begin
       waitforsingleobject(processinfo.hProcess,INFINITE);
       GetExitCodeProcess(ProcessInfo.hProcess,Result);
     end;
    end;调用方法:
    WinExecExW('a.exe',0);  //参数0表示a.exe以隐藏窗体来运行
      

  4.   

    本人觉得EXE直接调用缺少灵活性,还不如将一个个模块的接口协商好,然后统一编译。
      

  5.   

    首先要谢谢'Kvci(学,忍,奋、强、惊、成、圣(理想))'对我帮助!
    还有一个问想问仁兄.
      调用方法:
      WinExecExW('a.exe',0);  //参数0表示a.exe以隐藏窗体来运行
      WinExecExW('a.exe',1);?代表什么意思?
      WinExecExW('a.exe',2);?代表什么意思?
      .....
      WinExecExW('a.exe',n);?代表什么意思?
      

  6.   

    { ShowWindow() Commands }
      {$EXTERNALSYM SW_HIDE}
      SW_HIDE = 0;
      {$EXTERNALSYM SW_SHOWNORMAL}
      SW_SHOWNORMAL = 1;
      {$EXTERNALSYM SW_NORMAL}
      SW_NORMAL = 1;
      {$EXTERNALSYM SW_SHOWMINIMIZED}
      SW_SHOWMINIMIZED = 2;
      {$EXTERNALSYM SW_SHOWMAXIMIZED}
      SW_SHOWMAXIMIZED = 3;
      {$EXTERNALSYM SW_MAXIMIZE}
      SW_MAXIMIZE = 3;
      {$EXTERNALSYM SW_SHOWNOACTIVATE}
      SW_SHOWNOACTIVATE = 4;
      {$EXTERNALSYM SW_SHOW}
      SW_SHOW = 5;
      {$EXTERNALSYM SW_MINIMIZE}
      SW_MINIMIZE = 6;
      {$EXTERNALSYM SW_SHOWMINNOACTIVE}
      SW_SHOWMINNOACTIVE = 7;
      {$EXTERNALSYM SW_SHOWNA}
      SW_SHOWNA = 8;
      {$EXTERNALSYM SW_RESTORE}
      SW_RESTORE = 9;
      {$EXTERNALSYM SW_SHOWDEFAULT}
      SW_SHOWDEFAULT = 10;
      {$EXTERNALSYM SW_MAX}
      SW_MAX = 10;
      

  7.   

    为什么不将EXE的函数export呢?然后就可以用LoadLibrary来调用了.岂不更加方便灵活?