程序的参数传递

安涛声依旧 2011-02-17 09:35:47
两个程序,A.exe,B.exe

程序A里有两个功能窗口,窗口1和窗口2

用程序B调用程序A,
通过执行A.exe -1或者A.exe -2
这样自动打开A程序中的窗口1或者窗口2

如何实现呢?

主要是在程序A中如何获取这个参数
...全文
65 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
安涛声依旧 2011-02-17
  • 打赏
  • 举报
回复

unit Unit1;

interface

uses
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.
安涛声依旧 2011-02-17
  • 打赏
  • 举报
回复
ExtractFilePath(ParamStr(1))
yh16008262 2011-02-17
  • 打赏
  • 举报
回复
好的,拿分猛走,启动的时候判断一下是否已传入参数,再写你的功能
bdmh 2011-02-17
  • 打赏
  • 举报
回复
在A程序的创建时,判断paramstr[1]是否为-1,和-2来做不同的操作
安涛声依旧 2011-02-17
  • 打赏
  • 举报
回复
原型
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可以在应用程序间进行数据传输。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧