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);
これがニーズに合わない場合は、名前付きパイプ、メールスロット、ソケットなど、ウィンドウに依存しない別の IPC メカニズムを検討する必要があります。