gpt4 book ai didi

delphi - WM_COPYDATA 在 Delphi 中没有类

转载 作者:行者123 更新时间:2023-12-03 18:06:18 26 4
gpt4 key购买 nike

我想从 2 个 CONSOLE 应用程序(2 个没有表单的不同 PID!)发送/接收一个字符串。我看到我需要在类里面声明这个。是否可以在控制台应用程序中根本没有类的情况下执行此操作?如果可以,我该怎么做?

感谢您的帮助。

最佳答案

您不能在没有窗口的情况下使用 WM_COPYDATA 来发送它。如果您不使用类,则必须直接使用 Win32 API RegisterClass()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 机制,例如命名管道、邮槽、套接字等。

关于delphi - WM_COPYDATA 在 Delphi 中没有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13390208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com