非高手莫进,请问如何在两个应用程序之间转递数据!

lightwood 2003-05-01 12:23:06
如何实现在两个应用程序之间传递数据,或将下列Delphi代码用C#实现,
如不使用非安全代码最好!
procedure Init;
var
s : pchar;
h : hwnd;
buf:tagCOPYDATASTRUCT;
begin
h := FindWindow('TForm1', 'Form1');
if h <> 0 then
begin
GetMem(s,100);
buf.lpData :=s;
buf.cbData:=100;
buf.dwData :=100;
strpcopy(s, ParamStr(0));
SendMessage(h, WM_COPYDATA, 0, integer(@buf));
end;
end;

procedure TForm1.WM_COPYDATA(var msg: TMessage);
var
P:^tagCOPYDATASTRUCT;
begin
p:=Pointer(Msg.lParam);
ShowMessage(strpas(p.lpData));
end;
...全文
86 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
XXSingle 2003-05-02
  • 打赏
  • 举报
回复
我是菜鸟,不会进来,我只来学习
zhouzhangjie 2003-05-02
  • 打赏
  • 举报
回复
1.如果是在工程组中就比较简单了,添加一个库类就搞定
2.用Message.Create()试试..
Message 类包装 Windows 发送的消息。您可以使用该类包装消息,并将其分配给窗口过程进行调度。您还可以使用该类获取系统向应用程序或控件发送的消息的有关信息。

您不能直接创建 Message 结构。要创建 Message 对象,请使用 Create 方法。为了更有效地创建 Message 对象,Message 类将在可能情况下使用其现有的 Message 对象池,而不是实例化新的对象。但是,如果池中没有提供 Message 对象,则将实例化新的对象。

lightwood 2003-05-02
  • 打赏
  • 举报
回复
应该可以,但我不知道!
snewxf(心疤)的方法好像可行,但有没有更好、直接的方法?
tttzms 2003-05-02
  • 打赏
  • 举报
回复
我问一句,消息的发出一定要发送到特定的接收窗体吗,能不能发给操作系统,由应用程式的界自已确认是否是已所需呢?
lightwood 2003-05-02
  • 打赏
  • 举报
回复
大家可能还不明白我的意思,我只是想在类库中的对象在被其他应用程序调用时向其所属窗体发送字符串而已
hwndhwnd 2003-05-02
  • 打赏
  • 举报
回复
进程间通信:
可以用共享内存,Socket套接字
或者.net Remoting
snewxf 2003-05-02
  • 打赏
  • 举报
回复
假如这两个程序都是你写的。那就好办了。呵呵!
用:
[C#]
public static Process Start(
string fileName,
string arguments
);
不是的话就好只有那么办了。
snewxf 2003-05-01
  • 打赏
  • 举报
回复
看类名用SPY++呀!
const int WM_PASTE = 0x0302;

Clipboard.SetDataObject(tempStr,true);//将数据设置到剪贴版
SendMessage(Hwnd,WM_PASTE,0,0);//粘贴剪板内容
HWND为要粘贴数据的窗口句柄。
lightwood 2003-05-01
  • 打赏
  • 举报
回复
现在的问题是怎样将缓冲区指针赋值给WParam参数,还有用FindWindow函数真的能获取到窗体句柄吗,在C#中窗体的类名在不同的环境下可能不同。
zhouzhangjie 2003-05-01
  • 打赏
  • 举报
回复
能过消息就可以了,C#中可以使用句柄的.
lightwood 2003-05-01
  • 打赏
  • 举报
回复
真的没人会解答吗?????????????
lightwood 2003-05-01
  • 打赏
  • 举报
回复
不要误会,其实这样的目的是引起注意,像这种的标题很平常,也许你太敏感了!
snewxf 2003-05-01
  • 打赏
  • 举报
回复
用FindWindow()找到句柄。
用sendMessage()传数据呀!


wangjingjing390 2003-05-01
  • 打赏
  • 举报
回复
我不是高手
但我对你的态度非常的不满
什么叫“非高手莫进”?
CSDN是大家互相交流共同进步的地方
你如果看不起其它的初学者
你就不要在这里发贴!
sumtec 2003-05-01
  • 打赏
  • 举报
回复
给你一点提示:
Marshal.AllocHGlobal

如果两端都是.NET的话,也不一定要用这个方法。

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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