我想发送/接收来自 2 个 CONSOLE 应用程序的字符串(2 个不同的 PID,没有表单!)。我看到我需要在一个类中声明这个。是否可以在控制台应用程序中完全没有类的情况下做到这一点?如果是这样,我该怎么做?
谢谢你的帮助。
我想发送/接收来自 2 个 CONSOLE 应用程序的字符串(2 个不同的 PID,没有表单!)。我看到我需要在一个类中声明这个。是否可以在控制台应用程序中完全没有类的情况下做到这一点?如果是这样,我该怎么做?
谢谢你的帮助。
WM_COPYDATA
如果没有将其发送到的窗口,您将无法使用。如果不使用类,则必须直接使用 Win32 APIRegisterClass()
和CreateWindow/Ex()
函数来分配窗口并为其消息处理程序提供自己的独立函数。
但是为什么不使用类呢?然后,您可以利用 RTL 的内置消息处理程序系统。至少,您可以使用AllocateHWnd()
静态类方法,这样您就不必在运行时实例化类对象,例如:
type
TWindowMessages = class
public
class procedure WndProc(var Message: TMessage);
end;
class procedure TWindowMessages.WndProc(var Message: TMessage);
begin
//...
end;
var
Wnd: HWND;
Wnd := AllocateHWnd(TWindowMessages.WndProc);
// pump the message queue for new messages as needed...
DeallocateHWnd(Wnd);
如果这不能满足你的需要,那么你应该考虑一种不依赖于windows的不同的IPC机制,比如命名管道、邮槽、套接字等。