我需要用程序实现直接将参数传递给jtmail文件,在网上查到用ShellExecute函数直接运行可执行文件,但是对于要传递参数的问题,一直没有找到答案。跟踪paramstr(i)的值好像一直没有结果,请高手指点,最好有个例子,不胜感谢!

解决方案 »

  1.   

    先给你介绍一下 ShellExecute 的用法:
    ShellExecute 总共有6个参数
    参数 类型及说明 
    hWnd,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框 
    Operation,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它 
    FileName,想用关联程序打印或打开一个程序名或文件名 
    Parameters,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数 
    Directory,想使用的完整路径 
    ShowCmd,定义了如何显示启动程序的常数值。ShowCmd参数的说明如下SW_HIDE 隐藏窗口,活动状态给令一个窗口 
    SW_MINIMIZE 最小化窗口,活动状态给令一个窗口 
    SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态 
    SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态 
    SW_SHOWMAXIMIZED 最大化窗口,并将其激活 
    SW_SHOWMINIMIZED 最小化窗口,并将其激活 
    SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口 
    SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口 
    SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口 
    SW_SHOWNORMAL 与SW_RESTORE相同 使用例子:ShellExecute(self.Handle,PChar('Open'),PChar('jtmail.exe'),nil,nil,SW_SHOWNORMAL);
      

  2.   

    但是怎么把参数传给应用程序呢,很多人用paramstr(1)做处理,应该怎么写?
      

  3.   

    //我用ParamStr()进行获取参数一点问题都没有
    //以下是要显示参数的程序
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      ShowMessage(ParamStr(1));
    end;end.//以下是调用的程序
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ShellAPI, StdCtrls;type
      TForm2 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.dfm}procedure TForm2.Button1Click(Sender: TObject);
    begin
      ShellExecute(self.Handle,PChar('Open'),PChar('Project1.exe'),'1456987',nil,SW_SHOWNORMAL);
    end;
      

  4.   

    是不是要在unit1的uses里引用unit2
      

  5.   

    如果这样说你还是不明白的话,不如你留下EMAIL地址,我发个例子过去给你吧。