程序间参数传递
2008-04-10 02:57:02来源:互联网 阅读 ()
风花雪月 e梦情缘
网络代号:wnhoo or sos_admin
网名:e梦缘
Mail:wnhoo@163.com
功能:
第一次執行的時候…會開啟project1.exe
第二次執行的時候…不開啟project1.exe(因程式已執行)…但会将參數會丟給已執行的project1.exe
第3次執行的時候…不開啟project1.exe(因程式已執行)…但会将參數會丟給已執行的project1.exe
...
[公共单元文件]
unit Unlib;
interface
type
par = record
str1 : string[255];
str2 : String[255];
Str3 : string[255];
end ;
implementation
end.
[工程文件]
program Project1;
uses
Forms,
Unit1 in ''''Unit1.pas'''' {Form1},
Windows,
Messages,
Dialogs,
unlib in ''''unlib.pas'''';
const
appname=''''myname'''';
var
myhandle:hwnd;
RexData : ^COPYDATASTRUCT ;
ppar:^par;
{$R *.res}
begin
myhandle:=findwindow(appname,nil);
begin
GetMem(RexData,SizeOf(COPYDATASTRUCT));
GetMem(ppar,Sizeof(par));
with ppar^ do
begin
str1 :=ParamStr(1);
str2 :=ParamStr(2);
Str3 :=ParamStr(3);
end;
with RexData^ do
begin
dwData := myhandle ;
cbData := Sizeof(par) ;
lpData := ppar;
end;
if myhandle>0 then SendMessage(myhandle,WM_COPYDATA,0,LONGINT(REXdATA));
FreeMem(RexData);
FreeMem(ppar);
if myhandle>0 then exit;
end ;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
[单元文件]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,unlib;
const
appname=''''myname'''';
type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
private
{ Private declarations }
public
procedure createparams(var params:tcreateparams);override;
procedure restorerequest(var msg:TWMCopyData);message WM_CopyData;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.createparams(var params:tcreateparams);
begin
inherited createparams(params);
params.WinClassName:=appname;
end;
procedure TForm1.restorerequest(var msg:TWMCopyData);
var
RexData :TCopyDataStruct ;
ppar: ^par ;
begin
if msg.CopyDataStruct<> nil then
begin
RexData := msg.CopyDataStruct^ ;
ppar:= RexData.lpData ;
if ppar^.str1='''''''' then
memo1.Lines.Add(''''Not Parameter'''')
else
memo1.Lines.Add (ppar^.str1);
if ppar^.str2='''''''' then
memo2.Lines.Add(''''Not Parameter'''')
else
memo2.Lines.Add (ppar^.str2);
if ppar^.str3='''''''' then
memo3.Lines.Add(''''Not Parameter'''')
else
memo3.Lines.Add (ppar^.str3);
end ;
end;
end.
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:用delphi实现ping
下一篇:程序关联实现
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash