两个程序,A.exe,B.exe程序A里有两个功能窗口,窗口1和窗口2用程序B调用程序A,
通过执行A.exe -1或者A.exe -2
这样自动打开A程序中的窗口1或者窗口2如何实现呢?主要是在程序A中如何获取这个参数

解决方案 »

  1.   

    原型
    function   paramstr(i:index):string 对于任何application paramstr(0)都默认代表的是应用程序的绝对路径。
    那么有paramstr(0),就肯定有paramstr(1),paramstr(2)...了。
    它们的值又是什么了?我试了下取出的是空值,又不能赋值。delphi帮助中说Returns a specified parameter from the command-line.从命令行中返回一个特别的参数。折腾了半天才搞清楚,就是在exe文件后面可以跟参数,paramstr 获取的就是exe文件后面跟参数。如有可执行文件project1.exe 
    在运行中输入e:\project1.exe 123 456 789 
    那么paramstr(1)='123' paramstr(2)='456' paramstr(3)='789'
    用shellexecute的话可以在parameters参数位置输入值。
    不同的参数值之间用空格隔开如 shellexecute(application.Handle,'open','project4.exe','123 456', 'e:\',SW_SHOW);所以用paramstr可以在应用程序间进行数据传输。 
      

  2.   

    在A程序的创建时,判断paramstr[1]是否为-1,和-2来做不同的操作
      

  3.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
    //例:执行本程序时 E:\temp\A.exe -A -B
      edit1.text:=ParamStr(0); //Edit1值为 E:\temp\A.exe
      edit2.text:=ParamStr(1); //Edit1值为 -A
      edit3.text:=ParamStr(2); //Edit1值为 -B
    end;end.