2012-11-15 3 views
2

Je voudrais envoyer/recevoir une chaîne à partir de 2 applications CONSOLE (2 PID différents sans formulaires!). J'ai vu que j'avais besoin de le déclarer dans une classe. Est-il possible de le faire sans avoir de classe du tout dans une application console? Si oui, comment je peux faire ça?WM_COPYDATA sans une classe en Delphi

Merci pour votre aide.

+1

Jetez un oeil à WM de WM_COPYDATA, il est construit à partir de WindowMessage. Donc, c'est en fait un message envoyé à une fenêtre. Mais pas seulement un TForm est une fenêtre. Presque tout ce que vous pouvez voir sur votre écran est basé sur une fenêtre. C'est pourquoi MS a appelé leur produit Windows; o) –

Répondre

11

Vous ne pouvez pas utiliser WM_COPYDATA sans fenêtre pour l'envoyer. Si vous n'utilisez pas de classes, vous devrez utiliser les fonctions Win32 API RegisterClass() et CreateWindow/Ex() directement pour allouer une fenêtre et fournir votre propre fonction autonome pour sa procédure de gestionnaire de messages.

Mais pourquoi ne pas utiliser les classes? Ensuite, vous pouvez tirer parti des systèmes intégrés de gestion des messages du RTL. À tout le moins, vous pouvez utiliser AllocateHWnd() avec une méthode statique de sorte que vous n'avez pas à instancier un objet de classe à l'exécution, par exemple:

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); 

Si cela ne répond pas à vos besoins, alors vous devriez envisager une mécanisme IPC différent qui ne dépend pas des fenêtres, telles que les canaux nommés, les mailslots, les sockets, etc.

+2

Minor nit-pick. Ce n'est pas une méthode de classe statique. Une méthode de classe statique n'a pas de paramètre Self implicite. Vous créez une méthode de classe statique en ajoutant static à la fin de la déclaration. C'est une méthode de classe. –

Questions connexes