两个delphi程序之间传递变量

mfm8132100 2002-12-30 05:39:18
用delphi的Webapplication取得表单中提交的内容,传给delphi写的另一个程序如何实现?还是有什么其它的方法将两个程序整合到一起,DLL中不能有窗体,也不能有控件,不知用什么其它的方法好些?
...全文
27 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ocool 2003-01-03
  • 打赏
  • 举报
回复
硬盘,内存,剪贴板
最方便
shuyi 2003-01-03
  • 打赏
  • 举报
回复
还可以用DDE通讯
LKJ99 2003-01-03
  • 打赏
  • 举报
回复
对,
1、数据量小的,
RegisterWindowMessage,SendMessge就可解决问题
2、但是数据量大的,你还可至少利用三种方法搞定:
(1)存储文件TO硬盘 (2)共享内存 (3)剪贴板
laihecongxi 2003-01-03
  • 打赏
  • 举报
回复
DLL中不能有窗体,也不能有控件? ?????
好像不是这么说的吧
wjlsmail 2003-01-03
  • 打赏
  • 举报
回复
用 WM_COPYDATA 消息 ,有很多贴子
zsy_good 2003-01-02
  • 打赏
  • 举报
回复
{===============================================================
功能: 向一个窗体里的listbox发送拖拽的信息
作者: zsy_good
日期: 2002-7-4 9:00
使用: 创建一个窗体
把caption 改为 form2
把name 改为 form2
放上一个listbox控件
备注: 希望大家拷贝的时候能够附带此信息,非常感谢
QQ: 41902409
E_Mail: zsy_good@163.net

===============================================================}

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm2 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
procedure ListBox1StartDrag(Sender: TObject;
var DragObject: TDragObject);
private
{ Private declarations }
public
procedure wndproc (var message: Tmessage);override;
{ Public declarations }
end;

var
Form2: TForm2;
lb_droptext:string;

implementation

{$R *.DFM}

procedure TForm2.FormCreate(Sender: TObject);
var
i:integer;
begin
for i:= 0 to 9 do begin
listbox1.Items.Add (inttostr(i));
end;
listbox1.DragMode:=dmAutomatic;

end;

procedure TForm2.ListBox1StartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
lb_droptext:=listbox1.Items[listbox1.itemindex];
end;

procedure TForm2.wndproc(var message: Tmessage);
var
i_fmhwnd,i_lbhwnd:longint;
p_mpoint:Tpoint;
begin
if message.Msg = WM_USER+100 then begin
i_fmhwnd:=findwindow(nil,'form1');
if i_fmhwnd<> 0 then begin
getcursorpos(p_mpoint);
p_mpoint.x :=p_mpoint.x - message.WParam ;
p_mpoint.y :=p_mpoint.y -message.LParam;
i_lbhwnd:=ChildWindowFromPoint(i_fmhwnd, p_mpoint);
if i_lbhwnd<> 0 then begin
sendmessage(i_lbhwnd,LB_ADDSTRING,0,integer(pchar(lb_DropText)));
end;
end;
end
else inherited wndproc(message);

end;

end.
zsy_good 2003-01-02
  • 打赏
  • 举报
回复
{===============================================================
功能: 接收向一个窗体里的listbox拖拽过来的信息
作者: zsy_good
日期: 2002-7-4 9:00
使用: 创建一个窗体
放上一个listbox控件

备注: 希望大家拷贝的时候能够附带此信息,非常感谢
QQ: 41902409
E_Mail: zsy_good@163.net

===============================================================}

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
private
procedure CMMouseEnter(var msg:tmessage);message CM_MOUSEENTER;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
const SENDMEMESSAGE=WM_USER+100;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.CMMouseEnter(var msg: tmessage);
var
o_obj: TObject;
i_fmhwnd:Longint;
begin
o_obj:=Tobject(msg.lParam);
if o_obj is Tlistbox then
begin
i_fmhwnd:=findwindow(nil,'form2');
if i_fmhwnd<>0 then begin
sendmessage(i_fmhwnd,SENDMEMESSAGE,form1.Left ,form1.Top);
end;

end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.
foreveryday007 2003-01-02
  • 打赏
  • 举报
回复
消息傳遞應該能做到
查一下這方面的資料就知道了
zhuangjx 2003-01-02
  • 打赏
  • 举报
回复
gz
ronaldli 2003-01-02
  • 打赏
  • 举报
回复
如果变量是简单变量,就用下面的方法
1、两个程序用RegisterWindowMessage注册同一个全局消息
2、用SendMessge给另一个程序发消息LParam, WParam可以来传参数

如果数据复杂或数据量大:
那就在上面方法的基础上,把数据存在文件中,再让另一个程序调用文件

5,931

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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