WM_COPYDATA在Delphi中没有类

Ben*_*iss 2 delphi wm-copydata

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

谢谢你的帮助.

Rem*_*eau 11

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);
Run Code Online (Sandbox Code Playgroud)

如果这不符合您的需求,那么您应该考虑不依赖于窗口的不同IPC机制,例如命名管道,邮件槽,套接字等.

  • 轻微的挑选.那不是静态类方法.静态类方法没有隐式Self参数.通过在声明的末尾添加static来创建静态类方法.这是一种类方法. (2认同)