关于SendMessage的困惑,求救!!!!!!

wangfei0309 2005-12-25 10:45:59
各位高手:
大家节日快乐!
我的程序要调用别人的一个程序,然后给他发一个消息,他收到消息后就给我一个消息.等等...
SendMessage(他的程序的句柄,msg1,我的程序的句柄,0);
我现在可以取我的程序的句柄,msg1也是相互一样定义的,没有问题.
但我如何调用他的文件和取得他的文件的句柄呢?因为他的文件的句柄绝大多数情况下都不相同啊.

另外,他的程序是用VB写的.
可否举例给我看一下呀!!!



...全文
308 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyyoung 2006-01-19
  • 打赏
  • 举报
回复
mr
santwy 2006-01-13
  • 打赏
  • 举报
回复
不同进程可以用WM_COPYDATA这个消息
南郁 2006-01-11
  • 打赏
  • 举报
回复
这样做比SendMessage方便得很,并且功能强大.比如:

假设要传一大串字符串:

AnsiString msg = "我是一个兵,来自老百姓....";

IdUdpClient->WriteLn(msg);
...

如果用SendMessage,是无法传递本进程内部(非共享内存)的字符串,或其它sizeof()超过4字节的东东.
南郁 2006-01-11
  • 打赏
  • 举报
回复
我建议不要用SendMessage做这种事. 你就用Socket控件吧. 用CB 带的 Indy控件,可以通过网络来在两个进程之间互相传数据.比如,在你和你朋友的程序上各放一对 IdUDPClient1 / IdUDPServer1,
设置好端口号, 就可以

//你的程序:
int a = 100;

IdUDPClient->WriteIntege(a);

...
//朋友的:
int b = IdUDPServer->ReadIntege();
这时,b 就是 100了...

说是走网络,其实由于在本机,系统会自动走共享内存.
FengSC 2006-01-11
  • 打赏
  • 举报
回复
这个可能有很多方法,不过我一般是在主程序(先启动的程序)中使用CreateProcess函数运行需要接收消息的程序,该函数运行一个程序,并且返回该程序的描述信息。

CreateProcess函数最后一个参数的一个LPPROCESS_INFORMATION类型,定义如下:

typedef struct _PROCESS_INFORMATION { // pi
HANDLE hProcess;
HANDLE hThread;
DWORD dwProcessId;
DWORD dwThreadId;
} PROCESS_INFORMATION;
donwmufromdying 2006-01-11
  • 打赏
  • 举报
回复
帖主看来没搞懂SendMessage(或者PostMessage)里面的消息跟进程间通信的消息根本就是两回事啊!从你的描述来看,显然是想进程间通信,或者进程间数据交换。那还是通过,文件、Socket、等等方法把
alloutoflove 2006-01-06
  • 打赏
  • 举报
回复
让他在消息中把文件的Handle返回给你就行了,VB没有直接的转Handle的函数的话就调用有关的API吧..
icwin 2006-01-05
  • 打赏
  • 举报
回复
,可以用socket,可以用邮槽,用命名管道。。。。???

能说明白一些吗?
南郁 2005-12-26
  • 打赏
  • 举报
回复
用 FindWindow() 函数来查找对方的窗口句柄吧。它需要两个参数,一个是窗口的类名,另一个是窗口的标题。 。。窗口类名可以用VC自带的syp++查出来。窗口标题可以用眼睛看到。如果这个窗口的标题很奇怪(保证绝不和其它的窗口相同),并且这个窗口的标题是固定内容,也可以不类名。。。。。。。

比如:对方的窗口标题是: “---哈哈哈,嘻嘻---”

HWND hWnd = ::FindWindow(0,“---哈哈哈,嘻嘻---”);

if (hWnd == 0)
{
ShowMessage("它的程序还没起床...);
}

::SendMessage(hWnd,.....);

最后说一句,根据你的需求,你想通过SendMessage这个API来实现,是完全不对的设计。
SendMessage中的Message指的是操作系统中的“消息”,根本不适合用来做进程间通讯。
你可以用 原子,互斥,旗语等同步信号量,可以用socket,可以用邮槽,用命名管道。。。。怎么会想到用sendmessage....
「已注销」 2005-12-25
  • 打赏
  • 举报
回复
同问~~~~学习````````````

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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