Delphi exe文件之间参数传递(续)
来源:互联网 发布:软件销售是卖软件吗 编辑:程序博客网 时间:2024/05/19 10:55
上次只是研究了一个exe启动另一个exe的情况,这次研究了两个exe同时运行的情况。
{Delphi 2007}
{Project1.exe Unit1.pas}
const
UM_MESSAGE_COMMUNICATE = WM_USER + 100;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
cDataParam: TCopyDataStruct;
msg: string;
hApp: HWND;
begin
hApp := FindWindow('TForm2', nil);
msg := 'Hello World';
if hApp <> 0 then
begin
cDataParam.dwData := UM_MESSAGE_COMMUNICATE;
cDataParam.cbData := length(msg)* sizeof(char) + 1;
cDataParam.lpData := @msg[1];
SendMessage(hApp, WM_COPYDATA, 0, LPARAM(@cDataParam));
end;
end;
{Project2.exe Unit2.pas}
const
UM_MESSAGE_COMMUNICATE = WM_USER + 100;
type
TForm2 = class(TForm)
Edit1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
procedure WMCopyData(var msg: TWMCopyData); message WM_COPYDATA;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
{ TForm2 }
procedure TForm2.WMCopyData(var msg: TWMCopyData);
begin
if msg.CopyDataStruct^.dwData = UM_MESSAGE_COMMUNICATE then
begin
Edit1.Text := string(msg.CopyDataStruct^.lpData);
end;
end;
在2009下应该也可以运行,cDataParam.cbData := length(msg)* sizeof(char) + 1;这个是出现乱码的关键地方,2009下char的大小为2
补充说明:
在Delphi2010中测试了一下WM_COPYDATA传送数据,给cDataParam.cbData赋值时,最后不是+1最好还是加个sizeof(char);
另外在接收数据时,msg.CopyDataStruct^.lpData直接强制转换成string类型,会报错,这里可以转换成Pchar赋值,即:
Edit1.Text := PChar(msg.CopyDataStruct^.lpData);
- Delphi exe文件之间参数传递(续)
- Delphi exe实例之间传递cmd参数
- Delphi 进程之间传递cmd参数
- 关于exe文件传递参数方法
- 关于exe文件传递参数方法
- EXE之间传递消息
- EXE之间传递消息
- 独立exe程序之间传值的方法传递com口 传递参数 调用的方法(Wince程序)
- 用pscp.exe 实现windows 与 linux 之间传递文件
- exe传递参数
- 让Delphi使用带参数来调用外部可执行文件(EXE文件)
- 在vc中怎么调用exe文件并传递参数
- vc中调用exe文件并传递参数
- vc中调用exe文件并传递参数
- Delphi 参数传递
- Delphi 参数传递
- Delphi 参数传递
- delphi参数传递
- 老婆在买麻将桌
- 基本题
- Java(tm) and XML: Your visual blueprint for creating Java-enhanced Web programs
- 谋划(31)
- 局域网斗法
- Delphi exe文件之间参数传递(续)
- 下午培训心得
- Zope Web Application Construction Kit
- 安装ORACLE 10g时出现An unexpected exception has been detected in native code outside the VM异常的解决方案
- 到底创建了几个String对象?(转载)
- Continuous Integration: Improving Software Quality and Reducing Risk
- lisp语言概述
- 长尾管理软件市场怎么做-我看E-CELL
- STL 之Sort